terça-feira, junho 06, 2006

C# x VB.Net

Estou estudando para a prova de desenvolvimento de aplicações Windows pelo Self-Paced Training Kit da Microsoft, primeira edição. Não é um bom livro (mais sobre isto adiante), mas tem a curiosidade de abordar simultaneamente C# e VB.Net.

É claro que a maior parte de programação .Net consiste em usar as classes do .Net Framework, que são as mesmas para as duas linguagens. Entretanto, mesmo as construções normais das linguagens são quase idênticas, recursos que existem somente em uma delas são raras excessões. A diferença fica na somente sintaxe. Dada a minha vivência com C, não é surpresa que eu ache a sintaxe do VB.Net esquisita, particularmente o uso do fim de linha como terminador de comando.

O mais curioso foi que recentemente perguntei a um desenvolvedor que usa o VB.Net no dia a dia porque ele preferiu VB .Net a C# e a resposta foi que o C# oferece mais controle, sendo mais adequado para o desenvolvemento de componentes, porém o VB.Net tem maior produtividade, permitindo fazer mais coisas com menos linhas de código. Acredito que seja a manifestação de um efeito relatado no clássico The Hidden Persuaders, um livro da década de 50 sobre o marketing científico. Um fabricante de sabão em pó colocou o mesmo produto em duas embalagens, uma em suaves tons de azul e outra em um violento vermelho, e entregou para várias donas de casa testarem. Ao final do teste, quem recebeu a caixa azul disse que o produto era excelente, porém não tinha força suficiente para tirar as manchas mais pesadas. Já quem recebeu a caixa vermelha disse que o produto excelente, mas que não devia ser usado com roupas frágeis pois era muito forte!

Voltando ao livro, ele possui uma grande quantidade de erros de revisão, principalmente nos exemplos. Mais preocupante, encontrei um erro grave: na descrição de propriedades, o livro afirma que uma propriedade read-only precisa obrigatoriamente estar associada a um campo readonly da classe (no C# e VB .Net um campo readonly pode ser iniciado apenas na declaração ou no construtor da classe). Em primeiro lugar, é possível ter uma propriedade read-only que dá acesso de apenas leitura a um campo não readonly. Mais importante, uma propriedade não precisa estar associada a um campo. Uma propriedade é uma abstração que cria um membro que se comporta como um campo independente da forma como é implementado internamente.

Para quem tiver a curiosidade de saber porque comprei este livro, foi logo após o lançamento do Visual Studio .Net, em junho de 2002. Neste época existia pouca oferta de livros sobre C# e a descrição do livro é bastante interessante. O problema todo é na implementação...

21/jun/06: acertados alguns erros de digitação.

Nenhum comentário: