Dev

Porque é que Lisp é Importante — Uma Reflexão

Lisp é a segunda linguagem mais antiga ainda em uso, depois do Fortran. Sobreviveu décadas sem nunca se tornar mainstream. O que é que ela tem que continua a atrair programadores? Uma reflexão sobre a linguagem mais poderosa que (talvez) nunca vais usar.

Se tens de perguntar o que é o jazz, nunca vais saber. — Louis Armstrong

O Elia Scotto publicou a 9 de julho de 2026 um artigo no blog dele sobre Lisp. Em vez de um tutorial ou de um “aprende Lisp em 10 minutos”, é uma explicação de porque é que Lisp merece o teu tempo, mesmo que nunca venhas a usá-lo profissionalmente.

E é exatamente o tipo de texto que me faz parar e pensar.

Lisp é estranha. Os parênteses, a notação prefixa, aquela sensação de que estamos a ler uma árvore sintática em vez de código. A primeira reação de qualquer programador é “o que é isto?”. A segunda é “isto não pode ser prático”. A terceira — se chegarmos lá — é “isto mudou a minha forma de pensar”.


O paradoxo Blub

O Paul Graham escreveu sobre o Blub paradox há mais de vinte anos. A ideia é simples: um programador que só conhece linguagens medianas não consegue reconhecer a superioridade de uma linguagem mais poderosa. Porque está preso dentro do seu próprio nível de abstração.

Eu já passei por isto. Durante anos vivi no ecossistema das linguagens mainstream. Achava que C, Java e JavaScript eram “suficientes”. Que tudo o resto eram variações superficiais. Que linguagens diferentes eram só ferramentas diferentes para o mesmo trabalho.

O Lisp mostra que não. A diferença está em o que podes fazer com a linguagem, não na sintaxe nem na performance.


Programas que escrevem programas

O que torna Lisp especial é a combinação de três coisas, e não uma feature isolada:

Homoiconicidade. O código é escrito na mesma estrutura de dados que o programa manipula. Listas. Tudo são listas. Código e dados partilham a mesma representação. Isto é uma propriedade fundamental que abre portas que outras linguagens nem sequer têm.

Macros. Ao contrário das macros do C, que são substituições de texto pré-processadas, são funções que transformam código em tempo de compilação. Escreves código que gera código. E como o código são listas, manipular código é tão natural como manipular dados.

O sistema vivo. O REPL é o programa em execução, e não uma consola de testes. Mudas uma função e ela está imediatamente disponível no processo em execução. Sem recompilar. Sem reiniciar. Sem hot-reload feito com ferramentas externas frágeis. Está lá desde os anos 60.

O Scotto descreve isto bem no artigo: em Lisp, vais aprender a crescer a linguagem à volta do teu problema, e depois escrever o programa nessa linguagem. Não és tu que te adaptas à linguagem. É a linguagem que se adapta a ti.


Porque é que nunca houve “um tempo para Lisp”

Há décadas que se espera o momento do Lisp. O momento em que a linguagem mais poderosa do mundo se torna mainstream. Esse momento nunca chegou. E o Scotto é honesto sobre isso — provavelmente nunca vai chegar.

Lisp exige demasiado. Exige que repenses o que sabes sobre programação. Exige que trabalhes a um nível de abstração que a maioria dos programadores nunca vai precisar de alcançar.

Mas há algo de profundamente valioso em aprender uma linguagem que não vais usar no trabalho. Porque o que ela te ensina sobre programação fica contigo e informa todas as decisões que tomas noutras linguagens, mesmo que nunca a escrevas.

Quando aprendes Lisp, começas a ver padrões. Percebes que os design patterns do GoF são, muitos deles, features que faltam na linguagem. Percebes que a orientação a objetos não é o único paradigma. Percebes que a maior parte do que chamas de “limitação técnica” é só “a minha linguagem não deixa fazer isto”.


O que levo disto

Não uso Lisp no meu dia-a-dia. Provavelmente nunca vou escrever um sistema em Common Lisp ou Clojure para produção. Mas ter estudado Lisp — e continuar a ler sobre ela — mudou a forma como programo em tudo o resto.

Fez-me valorizar linguagens que me deixam expressar ideias sem lutar contra a sintaxe. Fez-me desconfiar de frameworks que prometem resolver problemas que a linguagem devia resolver sozinha. Fez-me perceber que REPL-driven development é um padrão que todas as linguagens deviam ter.

O Scotto termina o artigo com uma nota que subscrevo inteiramente: não é uma única feature que faz Lisp valer a pena. É a combinação de todas elas.

Lisp é uma linguagem estranha, difícil, impopular. E é uma das experiências mais formativas que um programador pode ter. Se nunca lhe deste uma oportunidade, faz este favor a ti próprio: lê o artigo do Scotto, abre um REPL, e passa uma tarde a brincar com parênteses. Pode ser que descubras que o jazz afinal é mesmo bom.

Recursos adicionais

Partilhar

Comentários 0

Ainda sem comentários — sê o primeiro.