Ambiente de Desenvolvimento para Common Lisp: Emacs + SBCL + CMUCL + Quicklisp + utilitários. Parte I: Breve Introdução

Uma das maiores dificuldades para quem está começando a aprender Lisp é a preparação do ambiente de desenvolvimento, ou seja: a escolha, instalação e configuração de uma implementação de um dialeto Lisp, e a escolha, instalação e configuração de um ambiente de desenvolvimento integrado (IDE – Integrated Development Environment) que seja capaz de nos auxiliar na programação, execução, teste e depuração de código.

Dos quatro dialetos Lisp em uso atualmente (Common Lisp, Scheme, Elisp e Autolisp), o Common Lisp é o padrão de fato e será utilizado nesta série. Das diversas implementações do Common Lisp, tanto comerciais quanto open-source, três se destacam (todas open-source): a SBCL (Steel Bank Common Lisp), a CMUCL (Carnegie Mellon University Common Lisp) e a CLISP Common Lisp. Se você ainda não escolheu uma implementação do Common Lisp, a SBCL é uma ótima escolha.

Em relação ao ambiente de desenvolvimento integrado a situação é mais complicada: praticamente inexistem boas IDEs open-source para desenvolvimento Lisp. Os IDEs comerciais, como o Allegro CL Integrated Development Environment ou o LispWorks IDE, são caros e especialmente criados para usar as implementações Lisp comerciais dessas empresas. Entretanto, no mundo Linux, existe uma solução (alguns dizem “a” solução): usar um dos melhores editores do mundo, o GNU Emacs, e customizá-lo com extensões e configurações adequadas para que ele se torne um IDE Lisp poderoso.

Existem duas maneiras de usar o Emacs como um IDE Lisp: modo “hardcore”, fazendo tudo manualmente, e modo “softcore”, usando um pacotão pronto para uso (chamado de Portacle).

1. Modo “Hardcore”: preparação manual

Esse é o modo mais difícil, demorado e, por vezes, frustrante (quando alguma coisa dá errado e temos que descobrir a causa do problema). Em compensação é o mais recompensador: você terá um ambiente exatamente do seu jeito, com a sua cara e com suas personalizações.

O propósito desta série de artigos é exatamente mostrar como instalar e configurar um ambiente de desenvolvimento para Common Lisp no modo “hardcore”, passo a passo, usando:

  • Linux (Ubuntu 20.4);
  • Emacs (e diversos packages apropriados);
  • Common Lisp (implementações SBCL e CMUCL);
  • Quicklisp; e
  • Utilitários diversos.

O resultado final é esse:

Minha IDE Lisp com o Emacs!

2. Modo “Softcore”: pacotão pronto (Portacle)

Se você está com pressa e não tem tempo para esperar os outros artigos da série, ou quer algo funcional, bom e prático, utilize o Portacle.

O Portacle é um ambiente completo para desenvolvimento Common Lisp integrando o Emacs (acrescido de packages como o Slime, Magit e Company), o SBCL e o Quicklisp.

A interface do Portacle é a seguinte:

Portacle: IDE para Common Lisp, baseada no Emacs

A vantagem do Portacle é que você não precisa instalar nem configurar nada: basta baixar o Portacle e rodar (pois ele já vem com o Emacs, o SBCL e o Quicklisp). Outra vantagem do Portacle: existem versões prontas para Windows, Linux e Mac:

Website do Portacle: https://portacle.github.io

3. Em resumo

  • Se você quer comodidade, boa funcionalidade e portabilidade entre diversos sistemas operacionais, simplesmente utilize o Portacle; ou
  • Se você quer controle total sobre a instalação e configuração de seu ambiente, faça a instalação e configuração manual conforme demonstrado nos próximos artigos desta série.

O próximo artigo desta série mostrará como instalar a versão mais nova do Emacs a partir do código fonte e as configurações básicas iniciais.

4. Obtendo ajuda

Se você precisar de ajuda na configuração do ambiente ou quiser contribuir para esta série de artigos, você pode:

  • Enviar um comentário diretamente nesta página;
  • Entrar em contato diretamente através do IRC, usando o canal ##abrantesasf no Libera.Chat (não fico muito tempo conectado, mas é a melhor forma de falar diretamente comigo). Outros canais que costumo participar no Libera.Chat: #clschool, #lisp, #lisp-br, #commonlisp, #latex, #R);
  • Mandar uma mensagem para a Usenet: costumo participar nos canais comp.lang.lisp, comp.lang.scheme, comp.text.tex.
Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *