Parte 2 – Investigação e apresentação
Otavio Bergmann e Raphael Miollo

2.1.1 – Quem criou a linguagem?
◦ LISP foi inventado por John McCarthy em 1958,
enquanto ele estava no Instituto de Tecnologia de
Massachusetts(MIT). McCarthy publicou um artigo
onde ele mostra que com alguns operadores
simples e uma notação para funções é possível
construir uma linguagem Turing para algoritmos.
John McCarthy (1927-2011)

2.1.2 – Qual a motivação para a criação da
linguagem?
• Os motivação para criação de LISP, segundo McCarthy
era desenvolver uma linguagem algébrica para o
processamento de listas para trabalho com
IA(inteligência artificial).

2.1.3 – Em que ano foi criada e como evoluiu a
linguagem?
LISP foi criada em 1958 e sua evolução foi de grande
importância para as linguagens que surgiram
posteriormente.
Durante 1980s e 1990s, um esforço grande foi feito e
surgiram numerosos dialetos do lisp(interlisp, Maclisp,
ZetaLisp).
Lisp influenciou pesadamente o inventor de SmallTalk.

2.1.4 - A linguagem é usualmente
implementada via interpretador, compilador,
ou ambos?
◦ A linguagem LISP é interpretada, onde o usuário
digita em uma linguagem formal definida e recebe
de volta a avaliação de sua expressão.
◦ LISP é implementada via interpretador, porem todos
os dialetos de LISP tem compiladores. Em algus
dialetos o compilador é uma função que pode
invocar a partir de código normal para transformar
uma lista numa função invocável.

2.1.5 – Informe nomes, versões, URL’s e
descrições de duas implementações da
linguagem.
◦
◦
◦
◦
◦
◦
◦
FranzLisp (http://en.wikipedia.org/wiki/Franz_Lisp)
InterLisp (http://c2.com/cgi/wiki?InterLisp)
ZetaLisp (http://wiki.alu.org/ZetaLisp)
Scheme (http://groups.csail.mit.edu/mac/projects/scheme/)
LeLisp (http://lelisp.org/)
AutoLisp (http://pt.wikipedia.org/wiki/AutoLISP)
MacLisp (http://c2.com/cgi/wiki?MacLisp)

Algumas coisas que LISP trouxe:
◦
◦
◦
◦
◦
Uso de condicionais (if-then-else);
Garbage Colletor;
Recursividade;
Tipos de dados;
Variáveis são tratadas como ponteiros;
Alguns fatos:
o O nome LISP vem de List Processor;
 A primeira plataforma de popular para desenvolvimento de lojas
virtuais, a ViaWeb foi inteiramente desenvolvida em LISP;
 LISP é a principal linguagem usada em estudos de inteligência artificial;

Prós:
◦ Programas mais concisos;
◦ Programas próximos de uma especificação
matemática;
◦ Permite decompor problemas em componentes
reutilizáveis;

Contras:
o Alguns algoritmos são mais eficientes quando
implementados de forma imperativa;
o Difícil de prever os custos de execução;
o Compiladores/interpretadores mais complexos.

Funções de alta ordem podem receber como
parâmetro ou retornar funções.
◦ Alguns exemplos são: Mapear, Filtrar, Reduzir.
◦ Ex: >map sqrt[100, 9, 25, 16]
 A função acima pega cada elemento da lista e obtém a sua
raiz quadrada.
Map sqrt
 Saída: [10, 3, 5, 4]
Entrada
100
9
25
√100
√9
√25
3
5
10
16
√16
4
Saída

Implementação do algoritmo de ordenação quicksort com haskell.

Exemplo em C
















void qsort(int a[], int lo, int hi)
{
int h, l, p, t;
if (lo < hi) {
l = lo;
h = hi;
p = a[hi];
do {
while ((l < h) && (a[l] <= p))
l = l+1;
while ((h > l) && (a[h] >= p))
h = h-1;
if (l < h) {
t = a[l];
a[l] = a[h];
a[h] = t;
◦







}
} while (l < h);
a[hi] = a[l];
a[l] = p;
qsort( a, lo, l-1 );
qsort( a, l+1, hi );
}
}
Exemplo em Haskell
qsort [] = []
qsort (x:xs) = qsort (filter (< x) xs) ++ [x] ++ qsort (filter (>= x) xs)
Download

Slides