|
Introdução A linguagem de programação LISP (do inglês LISt Processing), criada por John McCarthy na década de 50, é a segunda mais antiga linguagem de programação de alto nível, mais recente apenas que a linguagem FORTRAN. O LISP é o melhor exemplo do paradigma funcional, no qual a forma que o computador usa para solucionar o problema que lhe é proposto é centrada no processo. Ele introduziu o conceito de processamento simbólico. A capacidade de manipular símbolos torna o LISP uma linguagem extremamente conveniente para a área de Inteligência Artificial. A linguagem Lisp nasceu como uma ferramenta matemática, independente de qualquer computador e só posteriormente se procedeu à sua adaptação a uma máquina. Uma vez que em Lisp não existia qualquer dependência, à priori, do processador que iria executar a linguagem, a linguagem também não podia tirar partido das suas potencialidades, sendo as primeiras versões muito ineficientes. Esta ineficiência resultava de os programas Lisp serem interpretados, sendo por isso muito mais lentos do que o que uma compilação permite ao rescrever um programa na linguagem do processador. No entanto, com o aparecimento de interpretadores eficazes e de um suporte cada vez maior da parte dos processadores, Lisp possui, atualmente, uma eficiência comparável à das restantes linguagens. Devido à origem acadêmica, a linguagem LISP se desenvolveu de maneira desregulada. Cada grupo que se interessava pelas idéias contidas na proposta da linguagem implementava sua própria versão, cujos detalhes e ambientes de programação variavam de lugar para lugar. Esse desenvolvimento anárquico fez com que surgissem uma série de "dialetos" do LISP, indo de encontro a um dos conceitos básicos no projeto de uma linguagem de programação, o de portabilidade (a capacidade de transferir os programas para outras máquinas e sistemas operacionais). A facilidade de utilização, adaptação e extensão da linguagem Lisp, aliada à sua origem acadêmica, fez com que surgissem dezenas de versões diferentes: FranzLisp, ZetaLisp, LeLisp, MacLisp, InterLisp, Scheme, T, Nil, XLisp, AutoLisp, etc, para nomear apenas as mais relevantes. Esta multitude de dialetos começou a tornar difícil a livre comunicação entre os membros da comunidade Lisp. Para obviar este problema, criou-se um standard denominado Common Lisp com o objetivo de facilitar a troca de idéias (e programas). Sendo a linguagem Common Lisp o herdeiro legítimo de todas as outras, ela deve suportar a maioria das capacidades que estas possuem. Como é lógico isto impede a estabilização da linguagem, que ainda não parou de evoluir, sendo ampliada de tempos a tempos para incorporar novos (e velhos) paradigmas de programação. Felizmente, essa ampliação evita (na medida em que isso é possível) alterar funcionalidades das versões anteriores e assim um programa Common Lisp tem a garantia de funcionar independentemente do estado atual da linguagem. O programa pode não estar tecnologicamente atual mas estará sempre funcionalmente atual. Lisp é uma linguagem interativa. Cada porção de um programa pode ser compilada, corrigida e testada independentemente das restantes. Deste modo, Lisp permite a criação, teste e correção de programas de uma forma incremental, o que facilita muito a tarefa do programador. Quase todos as versões de Lisp possuem simultaneamente um compilador e um interpretador, permitindo misturar livremente código compilado e interpretado e permitindo realizar compilações incrementais. Uma das idéias mais
importantes do LISP é o fato de seus dados serem listas, inclusive seus
programas. Estes têm a capacidade de receber outros programas como dados
(argumentos), permitindo o surgimento de idéias como a recursividade,
entre outras. |