Common Lisp Brasil
Olá! Seja-bem vindo ao grupo de estudos e projetos do Common Lisp Brasil!
- Grupo oficial do Telegram: Common Lisp Brasil.
- Nosso canal de livros de Computação e Lisp: Common Lisp Brasil Livros.
Os dados a seguir podem estar incompletos ou conter erros. Proceda com cuidado e, se você tiver uma sugestão ou reclamação, abra uma issue no repositório desta página.
Table of Contents
1 Sitemap
2 Conceitos e Fundamentos
2.1 O que é Lisp?
Lisp é uma família de linguagens de programação de computadores com uma longa história e tradição. O primeiro Lisp denotado historicamente por LISP foi criado por John McCarthy, em 1958, nos laboratórios de inteligência artificial do MIT, USA., Lisp é a segunda linguagem de programação de alto nível mais antiga ainda em uso atualmente, advinda antes mesmo da própria Internet (somente Fortran é mais antiga). Desde sua origem, Lisp se tornou rapidamente a linguagem favorita para Inteligência Artificial.
Dialetos Lisp 1 têm uma sintaxe singular simplificada para denotar, listas e símbolos, que podem ou não estarem associados a valores e/ou a procedimentos. Na linguagens da família Lisp, há a peculiaridade de existir uma linha muito tênue de separação entre dados e procedimentos no código-fonte. Na realidade, é possível produzir código a partir de dados e vice-versa! Uma das características fortes da linguagem é o uso da notação polonesa que simplifica a sintaxe da linguagem, de forma a previnir ambiguidades: operações e operandos são denotados de forma explícita, em sua ordem de precedência, no uso de listas.
(operação operando-1 operando-2) (+ 1 2) ;; => 3
Esta família de linguagens foi desenhada para abstrair a complexidade do hardware de um computador, criando uma interface para que um humano possa se comunicar de maneira expressiva com a máquina. Influenciada pela linguagem de computação teórica Lambda Calculus de Alonzo Church, atualmente os dialetos de Lisp de uso geral mais utilizados e conhecidos são Common Lisp, Scheme e Clojure.
2.2 O que é Common Lisp?
Common Lisp é uma linguagem multi-paradigma pertencente a família de linguagems de programação Lisp. Suporta os paradigmas de programação funcional, procedural e orientado a objetos.
No início dos anos 80, existiam dezenas de implementações Lisp incompatíveis, com cerca de meia dúzia de dialetos principais. Um projeto foi iniciado, liderado por Scott Fahlman, Daniel Weinreb, David Moon, Guy Steele e Richard Gabriel, para definir um Lisp comum que combinaria as melhores características dos dialetos existentes em um todo coerente.
A primeira edição do padrão Common Lisp apareceu em 1984; um padrão revisado apareceu em 1990. O padrão ANSI Common Lisp foi lançado em 1994 e revisado em 2004. Common Lisp tornou-se rapidamente o Lisp escolhido em ambientes acadêmicos e industriais. Os outros dialetos praticamente desapareceram, com exceção do Scheme, que continua a desfrutar de uma popularidade modesta para aplicações educacionais.
Muitas das idéias mais importantes nos sistemas de programação surgiram em conexão com Lisp. Estas incluem a combinação de funções interpretadas e compiladas, coleta de lixo, chamadas de função recursiva, rastreamento e depuração no nível de código-fonte. Atualmente, Lisp é uma linguagem líder para pesquisa sofisticada sobre estilos de programação funcional, paralelo e orientada a objetos. Além de ser também uma grande referência para Computação Quântica, assim como tem sido usado comercialmente em softwares como QLisp Project.
(defun range (a b) (loop for x from a to b collect x)) (defun fact (n) (reduce #'* (range 1 n))) (defun hello-world () ;; definição de função (format t "Fatorial de 10! é: ~a" (fact 10))) (hello-world) ;; chamada de função ;; resultado: Fatorial de 10! é: 3628800
3 Links de Aprendizado sobre Common Lisp
3.1 Apresentação
- Site oficial de Common Lisp, apresentação sobre a linguagem e seu poder.
- Awesome-CL, uma lista imensa sobre frameworks e ferramentas para Common Lisp.
- Lisperati Casting, uma história em quadrinhos sobre a magia que é programar em Lisp.
- História do Lisp, entenda como o Lisp começou e porque temos tantos dialetos.
3.2 Documentação e tutoriais
- Common Lisp REPL Exploration Guide, um guia interessantíssimo sobre a exploração de Common Lisp pelo REPL 2.
- Cookbook de Common Lisp, atualmente com uma tradução para o Português em andamento, feita pela comunidade. Também inclui tutoriais sobre Quicklisp (veja a seção de Tooling).
- Common Lisp Hyperspec Sua primeira parada ao pesquisar por documentação de Common Lisp. (Mirror)
- CLiki, a Wiki de Common Lisp
3.3 Livros
- Common Lisp: A Gentle Introduction to Symbolic Computation, por David S. Touretsky
- Livro físico [Amazon]
- Versão online
- Common Lisp Recipes: A Problem-Solution Approach, por Edmund Weitz. [Amazon]
- Practical Common Lisp, por Peter Seibel.
- Livro físico [Amazon]
- Versão online
- Common Lisp the Language, 2nd Edition, por Guy L. Steele Jr. [Online]
- Land of Lisp: Learn to Program in Lisp, One Game at a Time!, por Conrad Barski. [Amazon]
- The Common Lisp Cookbook (inglês). [Online]
4 Tooling
4.1 Emacs
Emacs é, consensualmente, o melhor editor de texto para se programar em Common Lisp.
- [Inglês] Site oficial
- [Inglês] Prelude uma configuração com baterias pro Emacs para bons hábitos
- [Inglês] Mini-manual do Emacs, por tuhdo
4.1.1 Spacemacs
4.2 Portacle
Portacle é um reempacotamento de Emacs. Diferente do programa original, Portacle é uma edição voltada para programadores Common Lisp. Este editor já inclui o SBCL (implementação de Common Lisp), Quicklisp (para gerenciar projetos e pacotes), e Magit (para lidar com versionamento de código em Git). Enquanto recomendamos instalar o Emacs e aprender a configurá-lo, esta é também uma excelente ferramenta para iniciantes que queiram um ambiente Common Lisp que funcione logo de cara, ou mesmo para lispeiros experientes que queiram um ambiente CL que possam carregar no pendrive, e que funcione em quase qualquer sistema operacional.
- [Inglês] Link oficial do Portacle
- [Inglês] Repositório oficial
4.3 SLIME
SLIME significa SUPERIOR LISP INTERACTION MODE for EMACS. É uma das coisas mais fascinante que se faz Common Lisp uma linguagem tão produtiva e o Emacs ser seu editor ideal.
- [Inglês] Instalando SLIME + SBCL + Quicklisp no Emacs, por AstrayBI
- [Inglês] Repositório do
quicklisp-slime-helper
Este pacote torna mais fácil a instalação do SLIME, a partir do Quicklisp.
4.4 Compiladores
4.5 Quicklisp
Quicklisp é o gerenciador de pacotes (systems, nos jargões de CL), muito útil para integrar sua aplicação usando pacotes de terceiros.
- [Inglês] Site oficial do Quicklisp
- [Inglês] Quickproject: crie o esqueleto de um projeto de Common Lisp
Este tutorial é extremamente útil para a criação de projetos compatíveis com Quicklisp.
4.6 Roswell
Roswell é descrito como sendo o instalador de implementações de Common Lisp, bem como um launcher para o ambiente em geral de Common Lisp, que simplesmente funciona. Tenta automatizar a instalação dos compiladores, pacotes do Emacs e criação de binários com Common Lisp. Vale a pena tentar dar uma olhada!
- [Inglês] Repositório oficial