Aumente seu Vocabulário

Linguagens Orientadas a Objetos foram tema da minha tese na universidade em 92, mas confesso uma grande atração pelas linguagens funcionais.

Esta semana realizei um desejo antigo: reservei um tempo para leitura de livros sobre ML e F#. Aqui vão alguns comentários:

  • Não tenho problemas com o uso de recursividade – para mim, algoritmos recursivos costumam ser mais limpos. Meu problema maior com eles é o possível estouro da pilha. Bem, pelo menos em F# isto diminui um pouco: funções recursivas onde o último comando é a chamada à recursão reusam a pilha atual para a próxima chamada. Assim o estouro da pilha é evitado. O difícil, às vezes, è transformar nossos algoritmos para só fazerem a chamada nesta última linha (o livro Expert F# dá boas dicas);
  • Alguns mecanismos lingüísticos são simplesmente maravilhosos. Refiro-me a quatro deles em especial:
    • pattern matching: que permite definir tratamentos diferentes de acordo com o padrão (formato e tipos de dados) de uma estrutura de dados;
    • pipes: tornam linear o tratamento em seqüências e outras coleções;
    • inferência de tipos: sempre fui fã de tipos devido ao benefício do erro em tempo de compilação, mas entendo que tipos são restrições que dão trabalho, o que, por sua vez, justifica o sucesso de Python e Ruby, entre outras. Bem, com a inferência de tipos (bem mais poderosa do que a que vemos no C# atual), unimos o melhor dos dois mundos;
  • O livro Expert F# me convenceu que a composição de funções e o uso de interfaces com delegação podem ser mais poderosos do que a herança. O livro tem também excelentes exemplos de código.

Ao final das leituras, sinto que ganhei novos estilos para especificar e escrever código.

Sugestão: aumente você também o seu vocabulário.

Quanto a mim, vou continuar meus exercícios seguindo o velho provérbio chinês: Eu ouço e eu esqueço. Eu vejo e eu me lembro. Eu faço e eu entendo.