Loading...

AS RAÍZES DO LISP

Original

Maio de 2001

(Escrevi este artigo para me ajudar a entender exatamente o que McCarthy descobriu. Você não precisa saber disso para programar em Lisp, mas deve ser útil para qualquer um que queira entender a essência do Lisp - tanto no sentido de suas origens quanto de seu núcleo semântico. O fato de ter um núcleo é uma das características distintivas do Lisp, e a razão pela qual, ao contrário de outras linguagens, o Lisp tem dialetos.)

Em 1960, John McCarthy publicou um artigo notável no qual ele fez para a programação algo semelhante ao que Euclides fez para a geometria. Ele mostrou como, com um punhado de operadores simples e uma notação para funções, você pode construir uma linguagem de programação inteira. Ele chamou essa linguagem de Lisp, para "Processamento de Listas", porque uma de suas ideias-chave era usar uma estrutura de dados simples chamada lista tanto para código quanto para dados.

Vale a pena entender o que McCarthy descobriu, não apenas como um marco na história dos computadores, mas como um modelo do que a programação tende a se tornar em nossos próprios tempos. Parece-me que houve até agora dois modelos de programação realmente limpos e consistentes: o modelo C e o modelo Lisp. Esses dois parecem pontos de alta elevação, com baixadas pantanosas entre eles. À medida que os computadores se tornaram mais poderosos, as novas linguagens de programação que vêm sendo desenvolvidas têm se movido constantemente em direção ao modelo Lisp. Uma receita popular para novas linguagens de programação nos últimos 20 anos tem sido pegar o modelo de computação C e adicionar a ele, gradualmente, partes retiradas do modelo Lisp, como tipagem em tempo de execução e coleta de lixo.

Neste artigo, vou tentar explicar nos termos mais simples possíveis o que McCarthy descobriu. O objetivo não é apenas aprender sobre um resultado teórico interessante que alguém descobriu há quarenta anos, mas mostrar para onde as linguagens estão se dirigindo. O incomum sobre o Lisp - de fato, a qualidade definitiva do Lisp - é que ele pode ser escrito em si mesmo. Para entender o que McCarthy quis dizer com isso, vamos refazer seus passos, com sua notação matemática traduzida em código Common Lisp em execução.