terça-feira, 15 de maio de 2007

SD ou SDHC?

Estou planejando comprar um cartão de memória novo para o meu palm. Resolvi que comprarei de 4GB. Bem, quando fui pesquisar vi que existe uma tremenda confusão quanto aos tipos de cartão SD/SDHC. Alguns dizem que só pode existir SD até 2GB e que a partir de 4GB só SDHC. Pois bem, depois de muita indecisão sobre o que comprar e dúvidas se seria compatível com meu palm ou não cheguei a algumas conclusões:
  • Existem, sim, cartões SD de 4GB;
  • A grande questão é que este tipo de cartão não é padronizado, sendo assim, cada fabricante faz seu cartão da maneira que melhor entender e, portanto, não há como ter garantias de que qualquer cartão SD de 4GB irá funcionar com qualquer aparelho;
  • Por outro lado, os SDHC de 4GB são padronizados (da mesma forma que os SD até 2GB), sendo assim, qualquer cartão SDHC de 4GB funcionará com qualquer aparelho que aceite este tipo de cartão;
  • Outro ponto é que, aparelhos que aceitem cartões SD podem também ser compatíveis com os SDHC (já que possuem o mesmo tamanho e formato) através de atualizações dos drivers do dispositivo para que possa reconhecer o novo formato;
  • No fórum 1src já se discute até a possiblidade de reconhecer cartões de 8GB. Dmitry Grinberg, criador do famoso UDMH afirmou fazer funcionar um cartão de 8GB em seu TX, porém não afirmou se está se tratando de um SD ou SDHC;

Bem, é isso, com essas informações acho que já posso comprar meu cartão de 4GB tranquilo. ^.^

sábado, 12 de maio de 2007

C++ STL (Standard Templates Library) - Parte 1

Standard Templates Library

A STL, Standard Templates Library ou Biblioteca Padrão de Gabaritos (também achei esquisito, mas é esse nome mesmo), é uma biblioteca que provê as estruturas de dados e algoritmos básicos para a Ciência da Computação. É uma biblioteca genérica onde todos os seus componentes são parametrizáveis, ou seja, cada função é feita para aceitar diversos tipos de entrada diferente e operar sobre esses dados, desde que estes tipos suportem determinadas funções básicas. Todos os componentes da STL são templates (ou gabaritos). Elas nos poupam da tarefa de reimplementar o código para cada novo tipo de dado da aplicação. Por isso, é necessário ter conhecimento de templates em C++ para entender e usar a STL. A STL oferece Containers (recipientes), Iterators (iteradores) e Algorithms (algoritmos).

Containers (Recipientes)

Como o próprio nome já sugere, recipientes ou containers são onde os dados serão armazenados, pode-se pensar neles como uma caixa onde os dados serão colocados la dentro. Containers podem ser classificados como:
  • Seqüências de dados;
  • Recipientes associativos para pares de objetos (chave, dado);
  • Adaptadores que provêem um subconjunto da funcionalidade de um recipiente (Pilhas, filas, filas de prioridade).
Iterators (Iteradores)

Iteradores são as estruturas usadas para percorrer e/ou acessar os elementos contidos em um recipiente de maneira unificada. Estas estrutras escondem os detalhes de implementação, principalmente ponteiros, das aplicações. Com isto, além de a programação ser facilitada fica menos propensa a erros. Portanto, geralmente é possível trocar o tipo de recipiente e ainda assim usar o mesmo código.

Algorithms (Algoritmos)

A STL possui inúmeros algoritmos prontos para se usar, sendo que estes algorimos recebem como entrada tipicamente recipientes e normalmente, o processamento efetuado utiliza somente iteradores, nada de ponteiros. Ordenação, busca, contagem, substituição, etc... Iteradores tem operadores de incremento "++" definidos. Ponteiros podem ser usados como iteradores. A STL adota a filosofia de manter os algoritmos fora das classes dos recipientes, pois assim permite que o mesmo algoritmo possa agir sobre recipientes diferentes.

Referências
[1] Standard Template Library Programmer's Guide
[2] C++ Standard Templates Library: A Tutorial and Reference