Introdução

John MacCarthy e os seus estudantes começaram a trabalhar na primeira implementação de Lisp em 1958. Depois do Fortran, Lisp é a linguagem mais antiga ainda em uso. O que é mais notável é que ainda continua na vanguarda da tecnologia das linguagens de programação. Programadores que conhecem Lisp irão dizer-te, que existe qualquer coisa na linguagem que a separa das outras.

Parte do que torna o Lisp distinto é que é desenhado para ev oluir. Podes utilizar o Lisp para definir novos operadores Lisp. À medida que novas abstracções se tornam populares ( programação orientada a objectos, por exemplo), torna-se sempre fácil de implementá-las em Lisp. Como o DNA, essa linguagem não passa de moda.

Para quê aprender Lisp ?

Porque deixa-te fazer coisas que não podes fazer com outras linguagens. Se quisesses escrever uma função que devolvia a soma dos números menos de n, iria se parecer semelhante tanto em Lisp como em C:

;Lisp      /* C*/
      i nt sum (int n) {
(defun sum (n)     int i,s=0;
   (let ((s 0))     for (i=0;i<n; i++)
(dotimes (i n s)     s +=i;
(incf s i))))    return (s); }

Se apenas precisares de realizar coisas simples, não interessa muito em que linguagem as fazes. Supõe, no entanto, que querias escrever uma função que recebe um número n e devolve uma função que adiciona n aos seus argumentos:

;Lisp

(defun addn(n)
      #'lamba(x) (+ x n)))

Como é que addn se parece e m C? Não podes escrevê-la.
Podes pensar para ti, Quando é que alguém há-de querer fazer coisas como essas? Linguagens de programação ensinam-te a não querer o que não podem dar-te. Tens de pensar numa linguagem para escrever programas nela, e se quise res algo que não sabes bem descrver ? . Quando eu comecei a programar - em BASIC - eu não tive falta da
recursividade, porque eu não sabia que existia tal coisa. Eu pensava em BASIC. Apenas podia conceber algoritmos iterativos, por isso para que quereria recursividade?
Se não precisares de
Lexical closures (que é o que está a ser utilizado no exemplo anterior), toma isso bem em conta, porque os programadores Lisp utilizam-as todo o tempo. Seria difícil encontrar um programa em Common Lisp de qualquer dimensão que não tirasse partido das closures.
      E as
closures são apenas uma das abstracções  que não se encon tra noutras linguagens. Outra propriedade única do Lisp, possivelmente ainda mais valiosa, é que os programas em Lisp são expressos em Estruturas de Dados Lisp. Isto significa que podes escrever programas que escrevem outros programas. As pessoas querem i sto ? Sim - são designadas macros, e novamente, programadores experientes usam-as todo o tempo.

      Com
macros, closures, programação em run-time, o Lisp transcende a orientação orientada a objectos. A recompensa de aprender Lisp será uma equívoca: irás sentir-te sufocado programando em C++ como um programdor experiente de C++ se sentiria programando em BASIC.
BA SIC é sufocante para alguém habituado ao C++ porque em programador experiente em C++ conhece técnicas que são impossíveis de exprimir em BASIC. Da mesma forma, aprender Lisp vai ensinar-te novas e mais poderosas maneiras de pensar sobre os programas.
< /font>

Este Web Site designed com:

Comentários e
Sugestões: