História do Lisp: abra os olhos para programação funcional
Neste artigo, Thiago Avelino apresenta um compilado cronológico da história completa do Lisp e fala sobre a importância da programação funcional.
Como começou minha paixão por parênteses (ops, Lisp)?
Tenho uma formação na área de Matemática Aplicada (começa aí a loucura), e Lisp foi uma das poucas linguagens de programação que me deparei dentro da academia (já programava em Perl profissionalmente e conhecia Python↳Python56 conteúdosVSCode + Python + Alexa: Desenvolva e teste skills para alexa localmente com pythonDev (Back & Front) · out 2025Dominando decoradores em Python: um guia completo com exemplosDev (Back & Front) · jan 2025Desenvolvimento de software: diferenças entre Python, JavaScript e JavaGestão Dev & TI · nov 2024Ver tudo em Dev (Back & Front) →). Quando vi aqueles parênteses, de cara pensei: “Isso não é para mim (isso é uma loucura de Matemática/Acadêmico que nunca saiu para o mercado de trabalho)”.
Com o passar das aulas eu comecei a achar os parênteses confortáveis (seres humanos acostumam muito rápido com tudo) e comecei a achar estranho a forma de pensar para escrever a lógica do software (por exemplo, (+ 1 2)). Lisp usa Notação polonesa como forma de expressão. Isso foi complicado acostumar – no dia a dia usava uma linguagem de programação “normal” e dentro da academia, funcional (sem saber que era funcional).
Com o tempo comecei pegar gosto pela forma de pensar (funcionalmente) e acabei entrando para um projeto (no mercado, não acadêmico), que usava Common Lisp na sua implementação SBCL (Steel Bank Common Lisp, que é mantido até hoje).
Nesse momento eu virei super fã da linguagem e sua forma de lidar com software (de verdade) em produção. A empresa trabalhava com dados estatísticos do mercado de Pesquisa Cliníca, e LISP foi tomado como linguagem por matemáticos. Isso facilitou muito a comunicação entre o time de engenharia e acadêmicos.
Como tudo começou?
É um conjunto de linguagem de programação especificada pelo John McCarthy, em 1955, com sua primeira versão em 1958 (durante um projeto de pesquisa em inteligência artificial↳Inteligência artificial440 conteúdosUX e IA: Transformando Experiências Digitais com Inteligência ArtificialProduto & UX · jan 2025MCP: O que é e por que você vai ouvir falar disso em breve?AI · jul 2025IA generativa e a urgência de reconstruir nossa relação com a verdadeAI · jun 2025Ver tudo em AI →), influenciado pelo seu aluno Alonzo Church. A motivação de McCarthy surgiu da ideia de desenvolver uma linguagem algébrica para processamento de listas para trabalho em IA (inteligência artificial).
Seu nome vem de LISt Processing (a lista é a estrutura de dados fundamental desta linguagem). Tanto os dados como o programa são representados como listas, o que permite que a linguagem manipule o código fonte como qualquer outro tipo de dado, nascendo assim o Lisp 1, a versão que realmente foi distribuída por McCarthy e outros do MIT (Massachussets Institute of Tecnology). Foi Lisp 1.5 (manual de programadores), assim chamada porque continha várias melhorias no interpretador Lisp 1 original, mas não foi uma grande reestruturação como planejado que seria o Lisp 2.
Linha do tempo de linguagens que segue o dialeto Lisp
Vou começar a partir do Lisp 1.5, pois foi o primeiro a ser distribuido.
- Lisp 1.5 (1955 – 1965)/Dialeto: primeira implementação distribuída por McCarthy e outros do MIT.
- Maclisp (1965 – 1985)/Dialeto: desenvolvido pelo MIT Project MAC (não relacionado a Apple, nem ligado com McCarthy).
- Interlisp (1970 – 1990)/Dialeto: desenvolvido pela BBN Tecnologia para PDP-10 rodando no sistema operacional Tenex, adotado, em seguida, pela máquina Xerox Lisp o InterLisp-D.
- ZetaLisp (1975 – 1995)/Dialeto: denominada Lisp Machine – usado nas máquinas Lisp, descendente direto de Maclisp. Tendo como grande influência o Common Lisp.
- Scheme (1975 – mantido até hoje)/Dialeto: diferente de Common Lisp, linguagem que usa dialeto Lisp
- NIL (1975 – 1980)/Dialeto: sucessor direto do Maclisp, com muitas influências de Scheme. Essa versão do Common Lisp estava disponível para plataformas de grande alcance e foi aceita por muitos como um padrão, de fato, até a publicação do ANSI Common Lisp (ANSI x3.226-1994).
- Common Lisp (1980 – mantido até hoje)/Dialeto: aka Common Lisp the Language (a linguagem) – as tentativas e divergência entre ZetaLisp, Spice Lisp, nil, e S-1 Lisp para criar um dialeto sucessor para Maclisp. Common Lisp estava disponível para plataformas de grande alcance e foi aceita por muitos como padrão até a publicação do ANSI Common Lisp (ANSI X 3.226-1994).
- CCL (1984 – mantido até hoje)/Implementação: baseado no dialeto Common Lisp, antiga MCL
- T (1985 – mantido até hoje)/Dialeto: derivado de Scheme, escrito por Jonathan A. Rees, Kent M. Pitman e Norman, Adams da Yale University com experiencia de design de linguagem e implementação. Em 1987 foi publicado o livro “The T Programming Language: A Dialect of LISP“.
- Emacs Lisp (1985 – mantido até hoje)/Dialeto/Implementação: usado como linguagem de script (configuração) do editor Emacs (mantido pelo projeto GNU).
- AutoLISP (1985 – mantido até hoje)/Dialeto/Implementação: feito para AutoCAD, rodando nos produtos AutoCAD Map 3D, AutoCAD Architecture e AutoCAD Mechanical.
- OpenLisp (1985 – mantido até hoje)/Dialeto: desenvolvido por Christian Jullie escrito, em C e Lisp, que deu origem a implementação ISLISP.
- PicoLisp (1985 – mantido até hoje)/Dialeto: Open Source para Linux↳Linux34 conteúdosKali Linux em um Servidor VPS: como, quando e por que usar?DevSecOps · dez 2024Construindo um Windows Service ou Linux Daemon com Worker Service & .NET Core – Parte 2Dev (Back & Front) · jul 2020Criando uma WebApi utilizando .NET, Linux e VSCodeDev (Back & Front) · ago 2019Ver tudo em DevSecOps → e outros sistemas compatíveis com POSIX.
- EuLisp (1990 – 2015)/Dialeto: escopo estático e dinâmico, introduzido para Indústria e Academia Europeia.
- ISLISP (1990 – mantido até hoje)/Dialeto: feito para International Standard sob licença de Dominio Público.
- newLISP (1990 – mantido até hoje)/Dialeto: linguagem Open Source escrita por Lutz Mueller, ditribuída pela licença GPL (GNU General Public License) com fortes influencias de Common Lisp e Scheme.
- Racket (1990 – mantido até hoje)/Dialeto: multi paradigma que veio da familía Scheme, um de seus objetivos de projeto é servir como uma plataforma para a criação de linguagens, design e implementação. Sua runtime usa JIT.
- GNU Guile (1990 – mantido até hoje)/Implementação: usado para extensão de sistema para o Projeto GNU, baseado em Scheme.
- SBCL (1999 – mantido até hoje)/Implementação: baseado no dialeto Common Lisp com recurso de alta performance no compilador, suporte a unicode e threading. Nasceu como fork do Carnegie Mellon University Common Lisp por Andrew Carnegie e Andrew Mellon.
- Visual LISP (2000 – mantido até hoje)/Dialeto/Implementação: antigo AutoLisp após ser comprado pela Autodesk.
- Clojure (2005 – mantido até hoje)/Dialeto/Implementação: começou sendo baseado em Common Lisp rodando na JVM (Java Virtual Machine), trazendo retrocompatibilidade com todas as linguagens que rodam na JVM. É possível importar classes Java, por exemplo.
- Arc (2005 – mantido até hoje)/Dialeto/Implementação: desenvolvido por Paul Graham e Robert Morris, escrito usando Racket.
- LFE (2005 – mantido até hoje)/Dialeto/Implementação: Lisp Flavored Erlang, implementado em Erlang.
- ACL2 (2005 – mantido até hoje)/Dialeto/Implementação: criado por Matt Kaufmann e J Strother Moore dentro da University of Texas, em Austin.
- Hy (2013 – mantido até hoje)/Dialeto/Implementação: apelido para Hylang, implementado em Python. Nasceu dentro da PyCon 2013, escrito por Paul Tagliamonte.
- Rum (2017 – mantido até hoje)/Dialeto/Implementação: implementado em Go, projeto extremamente novo. Veja o GitHub e a timeline visual.
Não para por aqui. Existem muitas outras derivações.
É isso mesmo! Lisp é uma linguagem de programação que tem vários dialetos e implementações, com a ANSI Common Lisp utilizada como o dialeto mais utilizado.
Existe outra linguagem (mais usada que Lisp), o SQL↳SQL64 conteúdosSQL Server – Como evitar SQL Injection?Data · mai 2019Azure SQL DB Managed InstanceData · abr 2019SQL Server – Como evitar SQL Injection? Pare de utilizar Query Dinâmica como EXEC(@Query)Data · abr 2019Ver tudo em Data → ANSI (American National Standards Institute): PostgreSQL, MySQL, Oracle, Microsoft SQL, entre outros.
Todos têm como dialeto o SQL ANSI, mas evoluiu a partir do default.
Por onde começar estudar Lisp?
Vamos supor que você gostou da loucura das diversas implementações e quer estudar essa linguagem. Por onde você começa? Qual interpretador usar? Eu, particularmente, gosto do SBCL (particularmente é o que mais tenho usado para desenvolvimento). Em produção uso CCL – se você trabalha com alguma tecnologia que roda em JVM vai para Clojure.
Segue alguns links:







