
O que é?
Lisp não é uma linguagem. É uma família delas. Uma família de dialetos. É como no Brasil. Temos o Português Brasileiro mas mandioca é aipim em Santa Catarina, macaxeira no norte, mandioca mesmo no Paraná e por aí vai.
Lisp é como o Português Brasileiro e Scheme, Common Lisp, ELisp, AutoLisp, ... são seus dialetos, suas linguagens populares.
Lisp é como Unix e seus sabores (FreeBSD, OpenBSD, NetBSD, Solaris, ...).
Lisp é como GNU/Linux e suas distribuições (Debian, Slackware, OpenSuSE, ...).
Qual delas uso?
A que for melhor para você.
Scheme é um Lisp mais acadêmico, mais simples, com foco no paradigma de programação funcional. Se você gosta de funções recursivas, de funções como argumentos, de closures, continuations, Scheme é para você. É claro que existem bibliotecas que estendem Scheme a ponto de você ter tudo isso e muito mais.
Common Lisp é um Lisp mais profissional, mais cheio, com foco em não ter foco. Common Lisp, ou CL, é multiparadigma. Ou seja, se você está querendo uma linguagem que se adapte a sua forma de pensar, que deixe você hora programar com funções recursivas, hora com objetos, hora com laços for, CL é para você. Também existem centenas de bibliotecas que estendem CL. A diferença dela para Scheme é que ela, sozinha, já vem com funcionalidades incríveis, enquanto Scheme prima pela simplicidade.
Na dúvida, brinque com as duas ;-)
E isso de ter um monte de dialetos, não prejudica?
Pense nisso como uma virtude e não um defeito. Enquanto outras linguagens só te dão uma opção de escolha, você tem N opções em Lisp. Escolha uma e siga feliz.
Mas isso não acaba separando a comunidade de desenvolvedores?
Não. Existe uma comunidade global de usuários Lisp. Onde pessoas que programam em Scheme conversam com quem programa em Common Lisp, por exemplo. Há somente uma especialização.
É como as distribuições de GNU/Linux ou os sabores de Unix. A comunidade não se dividiu. Pelo contrário, a liberdade de se escolher o que se quer, o que mais lhe agrada, aumenta as opções para mais e mais pessoas se interessarem. Afinal nem todos gostam de mandioca mas todo mundo gosta de comer bem.
E fiquei sabendo que além de vários dialetos existem vários compiladores/interpretadores... mais essa?!
É verdade. Só que mais uma vez: encare como uma virtude e não um defeito. Enquanto outras linguagens só têm um único compilador/interpretador, você pode escolher entre vários!
E o que é ainda melhor, você pode até mesmo fazer com que seu código compile em compiladores diferentes! Lisp te proporciona isso como bônus.
Mas se você não quer se incomodar... sem problemas... escolha um único compilador/interpretador e vá em frente...
O que você recomenda?
Vou mostrar o que uso. Para Scheme uso Chicken. Para CL uso SBCL.
Como uso?
Scheme
Vamos começar com Scheme. Usaremos Chicken...
- Baixe o Chicken:
wget -c http://www.call-with-current-continuation.org/chicken-4.3.0.tar.gz
- Instale-o
tar -xvzf chicken-4.3.0.tar.gz
cd chicken-4.3.0
make PLATFORM=linux
sudo make PLATFORM=linux install
- Execute-o
csi
Common Lisp
Vamos usar SBCL em um sistema GNU/Linux.
- Baixe o SBCL em http://sbcl.org
wget -c http://prdownloads.sourceforge.net/sbcl/sbcl-1.0.34-x86-linux-binary.tar.bz2
- Instale-o
tar -xvjf sbcl-1.0.34-x86-linux-binary.tar.bz2
cd sbcl-1.0.34-x86-linux
su
sh install.sh
- Execute-o
sbcl
(aperte CTRL+d ou digite (quit) para sair do interpretador)
Pronto. O SBCL está instalado e funcionando. Mas claro que desenvolver no console não é muito interessante. Por isso vamos instalar o SLIME, um modo para o editor Emacs que facilita a edição de Lisp, tornando o Emacs um ambiente de desenvolvimento e execução poderoso.
- Faça o download do SLIME aqui:
wget -c http://common-lisp.net/project/slime/snapshots/slime-current.tgz
- Descompacte-o
tar -xvzf slime-current.tgz
rm slime-current.tgz
mv slime* slime
- Configure o Emacs para usar SLIME e SBCL. Edite o arquivo ~/.emacs e adicione as linhas
(setq inferior-lisp-program "/usr/local/bin/sbcl")
(add-to-list 'load-path "~/src/slime/") ; aqui o caminho do seu diretório slime descompactado
(require 'slime)
(slime-setup)
- Pronto, seu SLIME está instalado e configurado, agora vamos usá-lo. Inicie o Emacs e dentro dele tecle ALT+m e depois digite slime e tecle ENTER. Pronto, você está usando o SBCL dentro do Emacs
Tudo instalado, como desenvolvo?!
- Abra um arquivo novo no Emacs (CTRL+x CTRL+f e digite o nome do arquivo, por exemplo, teste.lisp)
CTRL+C CTRL+K compila e carrega o arquivo todo
CTRL+C CTRL+C compila e carrega a função onde está o cursor
CTRL+C CTRL+Z vai para o REPL