Estudo: Linguagem de Programação Lisp


Lisp é uma família de linguagens que possui uma longa história. As primeiras idéias-chave para a linguagem foram desenvolvidas por John McCarthy em 1956, durante um projeto de pesquisa em inteligência artificial. A primeira implementação da linguagem se dá no inverno de 1958.[3] A motivação de McCarthy surgiu da idéia de desenvolver uma linguagem algébrica para processamento de listas para trabalho em IA (inteligência artificial). Esforços para a implementação de seus primeiros dialetos foram empreendidos no IBM 704, IBM 7090, DEC PDP-1, DEC PDP-6 e DEC PDP-10. O dialeto principal entre 1960 e 1965 foi o Lisp 1.5.No início dos anos 1970, houve outros dois dialetos predominantes, desenvolvidos através de esforços anteriores: MacLisp e Interlisp.
Apesar das primeiras implementações do Lisp terem sido realizados nos IBM 704 e 7090, trabalhos posteriores concentraram-se nos DEC PDP-6 e PDP-10, este último sendo o baluarte do Lisp e das pesquisas em IA (inteligência artificial) em lugares como o MIT (Massachussets Institute of Tecnology) e as Universidades de Stanford e Carnegie-Mellon até metade dos anos 1970. O computador PDP-10 e seu antecessor, o PDP-6 eram por definição, especialmente adequados para o Lisp, por possuirem palavras de 36 bits e endereços de 18 bits. Esta arquitetura permitia um registro de um cons cell (par pontuado) em uma única palavra de memória, em instruções simples extraíam o seu car e cdr. Esses computadores possuíam também poderosas instruções de pilha, que proporcionavam rápida chamada a funções; porém suas limitações em 1973 eram evidentes: suportavam um pequeno número de pesquisadores utilizando o Lisp e seu endereçamento em 18 bits limitava o espaço dos programas. Uma resposta para o problema de endereçamento foi o desenvolvimento do "Lisp Machine",um computador dedicado especialmente à tarefa de trabalhar com a linguagem. Outra solução foi a utilização de computadores de uso geral com maior capacidade de endereçamento, como o DEC VAX e o S1 Mark IIA.

Dialetos historicamente significativos

  • LISP 1 – Primeira Implementação.
  • LISP 1.5 – Primeira versão amplamente distribuída, desenvolvida por McCarthy e outros do MIT. Assim chamada porque continha várias melhorias no interpretador "LISP 1" original, mas não foi uma grande reestruturação como planejado que fosse ser o LISP 2.
  • Stanford LISP 1.6[6] – Este foi uma sucessora para o LISP 1.5 desenvolvida no Stanford AI Lab, e amplamente distribuída para sistemas PDP-10 rodando o sistema operacional TOPS-10. Se tornou obsoleta com o advento do Maclisp e do InterLisp.

Aplicabilidade

Lisp é uma linguagem madura, concebida atenciosamente, altamente portável, linguagem de força industrial com a qual desenvolvedores em todo o mundo contam para:
  • Ferramenta rápida e altamente personalizável para fazer coisas do dia a dia.
  • Aplicações grandes, complexas e críticas as quais seriam impossíveis desenvolver em outra linguagem.
  • Prototipação rápida e Rapid Application Development (RAD).
  • Aplicações de alta disponibilidade, principalmente aquelas que necessitam de mudanças após a etapa inicial.
A linguagem teve um grande sucesso em software do ramo de negócios, engenharia, processamento de documentos, hipermídia (incluindo a Web), matemática, gráficos e animação (Mirai), inteligência artificial e processamento de linguagem natural. Uma das grandes vantagens de Lisp é que ela trata o programa como dado, possibilitando assim um programa inteiro ser dado como entrada de um outro, coisa que não acontece em outras linguagens como C e Pascal. E usada algumas vezes para definir todos os aspectos de uma aplicação, ou apenas o motor de processamento interno, ou apenas a interface do usuário; e ainda é usada com rotina para prover linguagens de comando interativas, linguagens de macro ou script e linguagens extensoras de sistemas comerciais.

Exemplos de Funções

(quote expressão)
Retorna a expressão diretamente, sem tentar qualquer forma da avaliação. Ex: (quote jose) retorna jose, e (quote (jose silva)) retorna (jose silva).
'expressão
Significa o mesmo que (quote expressão). Ex: 'jose retorna jose, e '(jose silva) retorna (jose silva).
(eval expressão)
força a avaliar a expressão. Ex: Embora '(+ 3 4) simplesmente retorna (+ 3 4)(eval '(+ 3 4)) força a avaliar o (+ 3 4) e portanto retorna 7.
(car lista)
Retorna o primeiro elemento da lista. Ex: (car '(jose silva)) retorna jose. Entre os vários dialetos de Lisp, há alguns (por exemplo, ISLISP) que permitem o nome first como alternativa para car.
(cdr lista)
Retorna a lista sem o primeiro elemento. Ex: (cdr '(jose da silva)) retorna (da silva). Há dialetos que usam o nome rest como alternativa para cdr.
(cons atomo lista)
Adiciona átomo ao início da lista. Ex: (cons 'jose '(da silva)) retorna (jose da silva).
Funções matemáticas:
+ (Adição)
- (Subtração)
* (Multiplicação)
/ (Divisão)

Share this:

JOIN CONVERSATION

    Blogger Comment

0 Comentários:

Postar um comentário