Common Lisp Brasil

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

Grupo oficial do Telegram: Common Lisp Brasil

Canal do IRC não-oficial de Lisp Brasileiro no 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?

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 é um dialeto multi-paradigma da linguagem de programação Lisp. Suporta os paradigmas de programação procedural, orientado a objetos e, inclusive, o funcional, 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 para 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 é, consensualmente, o melhor editor de texto 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 pacotes (systems, nos jargões de CL), muito útil para integrar sua aplicação usando pacotes de terceiros.

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!

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, Hélio Cordeiro

Created: 2018-02-25 Sun 21:52

Emacs 25.3.1 (Org mode 8.2.10)

Validate