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 é 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

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: 2019-03-11 Mon 02:18

Emacs 25.1.1 (Org mode 8.2.10)

Validate