Loading...

AS RAÍZES DO LISP

Original

May 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 pessoa que queira entender a essência do Lisp - tanto no sentido de sua origem quanto de seu núcleo semântico. O fato de ter um núcleo é uma das características distintivas do Lisp e o motivo pelo qual, ao contrário de outras linguagens, o Lisp tem dialetos.)

Em 1960, John McCarthy publicou um artigo notável em que ele fez para a programação algo parecido com o que Euclides fez para a geometria. Ele mostrou como, dado um punhado de simples operadores 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 simples estrutura de dados chamada lista para ambos código e dados.

Vale a pena entender o que McCarthy descobriu, não apenas como um marco na história dos computadores, mas como um modelo para o que a programação está tendendo a se tornar em nosso próprio tempo. Parece-me que houve dois modelos de programação realmente limpos e consistentes até agora: o modelo C e o modelo Lisp. Esses dois parecem pontos de alta altitude, com terras baixas pantanosas entre eles. À medida que os computadores se tornaram mais poderosos, as novas linguagens que estão sendo desenvolvidas têm sido movendo 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 C de computação e adicionar a ele, aos poucos, 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 ponto não é apenas aprender sobre um resultado teórico interessante que alguém descobriu há quarenta anos, mas para mostrar para onde as linguagens estão indo. O que é incomum sobre o Lisp - na verdade, a qualidade definidora 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 para código Common Lisp em execução.