Depois de pensar um pouco e fazer algumas comparações pouco científicas, decidi que esse ano vou me dedicar a aprender Lisp de maneira decente. Lisp é uma linguagem que sempre foi do meu agrado e cheguei a dedicar um pouco mais de tempo a ela na forma de Emacs Lisp. E, como o Luiz me lembrou, se eu quero aprender uma linguagem funcional e ao mesmo tempo experimentar mais a fundo com meta-programação, Lisp é a linguagem ideal.
Io me deixou bastante tentado. Quando mais eu lia sobre essa minúscula linguagem, mais interessante me parecia. Só perdeu para o Lisp porque eu realmente quero pode falar com mais consistência sobre uma linguagem que já admiro há muito. Haskell é outra que sempre me atraiu bastante, mas eu vou poder experimentar com bastante coisa similar trabalhando com Lisp.
Uma outra vantagem enorme de Lisp é que meu editor favorito, o Emacs, possui um tremendo suporte para a mesma na forma do Slime, o Superior Lisp Interaction Mode for Emacs. Além de suportar basicamente todas implementações Lisp em uso atualmente, o Slime é o melhor REPL com o qual experimentei.
Alias, o SLIME é quase um IDE psíquico, capaz de adivinhar o que você está querendo enquanto você escreve. Além das funções normais de edição, compilação e execução, a parte de documentação e de ajuda à definição é muito boa. Eu gosto especialmente da parte de fuzzy completion que permite que você digite parte de um comando qualquer e ele sugira as escolhas prováveis.
Meu ambiente, resumido, é o seguinte:
- Emacs (Carbon Emacs)
- SBCL e CLISP, que são minhas implementações favoritas
- Slime, é claro
- Hyperspec instalado localmente e integrado ao Slime
E como material de apoio:
- On Lisp, por Paul Graham
- Pratical Common Lisp, por Peter Seibel
- Using Slime, um screecast excelente sobre o mesmo (MOV, Torrent)
Agora é só meter a mão na massa. UCW é um dos próximos passos.
