domingo, 25 de maio de 2008

Livro "Beautiful Code"

Desiludido! Foi assim que fiquei após ler os dois primeiros capítulos deste livro. Coloquei-o logo de lado porque não correspondeu às minhas expectativas geradas pelo que tinha lido nas críticas e comentários da net.

Passado duas semanas, acabei por me sentir culpado pelo dinheiro gasto nele. Decidi dar mais uma espreitadela ao livro só para justificar a compra. Como sabia que cada capitulo era independente de todos os outros, comecei pelo último na esperança de terminar depressa ... o livro todo ;)

Felizmente esta acabou por ser a melhor abordagem ao livro. Um dos melhores textos era precisamente o final e foi o catalisador para ter curiosidade em ler os restantes.

O livro aborda estratégias engenhosas seguidas na computação para resolver problemas concretos ou criados pela própria área desta engenharia. É um livro que atravessa praticamente todos ramos da informática. A sensação que fiquei após terminar o livro, é como se estivesse na faculdade outra vez, com aquela sensação de "Ah! Oh! Então é assim que se faz ...". Mas admito que alguns dos capítulos são matérias aborrecidas, provavelmente porque divergem demasiado das minhas áreas de interesse, ou porque são temas mais complicados.

Este é um livro que recomendo especialmente a quem já terminou os seus cursos de informática há uns bons anos. Não tem haver com os anos de experiencia para perceber o conteúdo do livro mas sim, provavelmente irão passar pela mesma sensação de "deja vu" que eu senti ao lê-lo.

Nos próximos tempos vou actualizando este artigo, com um resumo mínimo de cada capítulo e a minha opinião de cada. Chamo a atenção que a critica a cada capitulo pode não ser consensual. É uma opinião pessoal que pode ser influenciada pelos seguintes factores: forma como foi apresentado o problema ou escrito pelo autor, matéria fora do meu interesse ou mais provavelmente, fora da minha àrea de conhecimento, para dar o merecido valor a estratégia encontrada.

Capitulos:
1. A Regular Expression Matcher - Neste capitulo é implementado a funcionalidade básica de expressões regulares. O algoritmo final demonstrou ser extremamente simples, funcional e compacto. Isto foi fruto da utilização de Recursão e de manipulação de apontadores em C. (neutro)
2. Subversion Delta Editor - O Subversion é um sistema de controlo de versões. As suas funcionalidades internas são todas implementadas através de uma unica interface bem definida cujos métodos permitem qualquer operação nesse sistema. Este capitulo apresenta um exemplo com base nessa interface. (neutro)
3. The most beautiful code I never wrote - Partindo de um algoritmo de quicksort, estimar o tempo que demora a processar um conjunto de dados através da "instrumentação" de linhas de código com as operações essenciais. Nom fim, a formula de estimativa de tempo, aproximou-se de estudos previos obtidos por processos matematicos. Este capitulo é fácil de ler. Curioso são os inumeros aforismos usados para resumir cada passo do processo. (bom)
4. Finding Things - Processar MB de ficheiros de texto com os logs de acessos a páginas web e obter estatisticas. Exemplo com base em Ruby. Como o uso de expressões regulares ajuda a manter o algoritmo simples. Analise ao uso de memoria entre HashMaps e Binary Search. O principio da estrategias de pesquisa de texto em documentos como feito pelos motores de pesquisa. (bom)
5. Designing XML Verifiers - Como evoluiu a implementação de biblioteca XOM, para verificar a validade de documentos XML. Exemplo em Java. Após terem conseguido uma biblioteca plenamente correcta, como foram aplicadas estrategias sucessivas de optimização da velocidade de processamento. (muito bom).
6. Framework for integrated tests - Artigo sobre o processo de decisão com o qual uma framework de testes (FIT) foi definida.(neutro)
7. Beautiful Tests - Exemplo de uma API de pesquisa binária de uma colecção ordenada. Com o recurso do JUnit implementar os testes da API de pesquisa anterior, para os casos normais de utilização e também situações limite ou fronteira. Testes unitários já devem ser uma das ferramentas bem conhecidas de qualquer programador. A leitura deste capitulo pode ser feita na "diagonal".