Common Lisp Brasil

Olá! Seja-bem vindo ao grupo de estudos e projetos do Common Lisp Brasil!

Grupo oficial do Telegram: Common Lisp Brasil

Grupo não-oficial de Lisp Brasileiro IRC freenode: #lisp-br

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?

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 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 onde simplifica a sintaxe da linguagem de uma maneira sem acrescentar 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. O primeiro Lisp denotado historicamente por LISP foi criado por John McCarthy em 1958 nos laboratórios do MIT, USA.

2.2 O que é Common Lisp?

Common Lisp é um dialeto multi-paradigma da linguagem de programação Lisp. Suporta programação procedural, orientação a objetos e o paradigma funcional, algo comum a todos os Lisps, por sua próxima relação com a natureza do Cálculo Lambda.

Foi criada por Guy L. Steele nos anos 80, com o intuito de combinar aspectos de diversos dialetos anteriores, incluindo Scheme. Em 1994 foi publicada no padrão ANSI Information Technology - Programming Language - Common Lisp, registro X3.226-1994 (R1999). Common Lisp é bem maior e semanticamente mais complexa que um dialeto como Scheme, uma vez que foi projetada para ser uma linguagem comercial e ser compatível com os diversos outros dialetos Lisp dos quais derivou.

(defun hello-world () ;; definição de função
  (princ "Hello, Lispers!"))

(hello-world) ;; chamada de função

;; resultado: Hello, Lispers!

3 Links de Aprendizado sobre Common Lisp

3.1 Apresentação

3.2 Documentação e tutoriais

3.3 Livros

4 Tooling

4.1 Emacs

Emacs é o melhor editor de texto em consenso para se programar em Common Lisp.

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.

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.

4.4 Compiladores

  • [Inglês] SBCL: Steel Bank Common Lisp (recomendado)
  • [Inglês] ECL: Embedabble Common Lisp
  • [Inglês] GNU CLISP (obsoleto desde 2010, artefato histórico)
  • [Inglês] CCL: Clozure Common Lisp (Clojure é outra coisa, não confunda!)

4.5 Quicklisp

Quicklisp é o gerenciador de pacote (sistemas nos jargões de CL), muito útil para integrar sua aplicação usando pacotes de terceiro.

4.6 Roswell

Roswell é descrito como ser o instalador de lisp e 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!

Footnotes:

1

Lisp é uma abreviação de LISt Processing, processamento de listas.

2

REPL significa Read-Eval-Print-Loop, muito comum em linguagens interativas como Lisp e Python. A propósito, o conceito foi inicialmente feito justamente em Lisp!

Date: <2018-02-10 Sat>

Author: Manoel Vilela, Lucas Vieira

Created: 2018-02-15 Thu 04:03

Emacs 25.3.1 (Org mode 8.2.10)

Validate