06.10.2026 · Signal Titans Editorial
Colchetes e expressões S: como as limitações da perfuradora de cartões da IBM moldaram o Lisp
Como os limites do hardware da IBM e o contexto da IA no final dos anos 1950 levaram John McCarthy a criar a emblemática sintaxe do Lisp.

A perfuradora de cartões IBM 026, utilizada por estudantes no Instituto de Tecnologia de Massachusetts (MIT) no final dos anos 1950, não possuía teclas de colchetes no layout de seu teclado padrão. No outono de 1958, o cientista da computação John McCarthy encarregou alunos do MIT de implementar seu projeto inicial para uma nova linguagem de programação voltada à inteligência artificial. McCarthy pretendia que os programadores escrevessem código utilizando expressões M, uma notação algébrica de alto nível baseada em colchetes. No entanto, como perfurar esses caracteres ausentes exigia gambiarras incômodas no hardware da perfuradora, a equipe de implementação de estudantes abandonou totalmente as expressões M e passou a escrever seus programas diretamente em expressões S delimitadas por parênteses.
Da lógica de Dartmouth às listas algébricas
De acordo com o Two Bit History, McCarthy começou a conceber uma linguagem de processamento de listas durante o Dartmouth Summer Research Project on Artificial Intelligence, realizado em 1956. Naquela conferência, os pesquisadores Allen Newell e Herbert Simon apresentaram a Information Processing Language (IPL), que haviam desenvolvido para manipular listas de expressões simbólicas voltadas à geração de demonstrações lógicas. Embora McCarthy reconhecesse que as listas simbólicas eram ideais para modelar a dedução automatizada, ele não gostava do estilo de linguagem de montagem em nível de macro da IPL. Newell e Simon haviam focado em instruções de máquina de baixo nível em vez de notação matemática. McCarthy buscava uma alternativa algébrica capaz de combinar o processamento de listas simbólicas com a legibilidade de alto nível do Fortran.
Programas de xadrez e diferenciação simbólica
A visão de McCarthy evoluiu por meio de experimentos práticos de computação entre 1956 e 1958. Em 1957, ao escrever rotinas para um programa de xadrez em Fortran, ele se frustrou com as estruturas de controle limitadas da linguagem e inventou as expressões condicionais verdadeiras. Diferente das instruções de desvio do Fortran, a condicional de McCarthy retornava uma subexpressão específica com base em um teste, avaliando apenas o ramo bem-sucedido. Durante o verão de 1958, enquanto projetava um sistema capaz de realizar diferenciação simbólica, McCarthy percebeu que suas expressões condicionais simplificavam as operações recursivas. Para lidar com a diferenciação em somas arbitrárias de termos, ele introduziu a função maplist, que aplicava uma função especificada a cada elemento de uma lista. Munido dessas ideias, no outono de 1958, McCarthy encarregou seus alunos do MIT de escrever a primeira implementação prática do Lisp.
Restrições de perfuração e a expressão S
McCarthy havia planejado que as expressões S — expressões simbólicas delimitadas por parênteses — servissem apenas como uma representação interna voltada para a máquina. O código-fonte lido por humanos deveria utilizar expressões M envolvidas por colchetes. No entanto, as limitações do hardware da perfuradora IBM 026 alteraram permanentemente o design dessa sintaxe. Na ausência de teclas para colchetes, a equipe optou por representar tanto listas de dados quanto aplicações de funções usando expressões S diretamente entre parênteses. O que fora originalmente concebido como uma concessão sintática temporária de baixo nível tornou-se o traço marcante do Lisp: notação em prefixo, estruturas em árvore uniformes entre parênteses e uma representação idêntica para código e dados.
A formalização da computação em 1960
Em 1960, McCarthy publicou seu artigo "Recursive Functions of Symbolic Expressions and Their Computation by Machine". À medida que ele e seus alunos aprimoravam a linguagem durante a implementação, McCarthy percebeu que o Lisp havia evoluído de um utilitário prático de software para um sistema matemático conciso. Ao especificar o Lisp com um pequeno conjunto de regras primitivas e funções recursivas, McCarthy apresentou um formalismo axiomático para o estudo da computação que se mostrou mais elegante do que as máquinas de Turing ou a teoria convencional de funções recursivas.
A sintaxe mínima e os fundamentos axiomáticos de McCarthy permitiram que o Lisp se tornasse a segunda linguagem de alto nível mais antiga ainda em uso ativo hoje, atrás apenas do Fortran. Os compromissos impostos pelo hardware de perfuração dos anos 1950 acabaram produzindo uma estrutura unificada e minimalista que consolidou o Lisp como um marco fundamental no design de linguagens de programação.
Ilustração editorial gerada por IA; não é uma fotografia documental.
Fonte: 0b10 0b10 How Lisp Became God's Own Programming Language