Una de las bellezas de Lisp, o de Smalltalk, es que se basan en un concepto claro y lo llevan hasta sus últimas consecuencias. En Smalltalk todo el sistema se basa en objetos enviándose mensajes entre ellos. Así, por ejemplo, en Smalltalk la forma de ejecutar código de manera condicional no depende de una palabra clave del lenguaje, sino que es un mensaje que se manda a un objeto lógico. Otros lenguajes recurren en su sintaxis a expresiones definidas por el intérprete o el compilador con lo que se llaman palabras reservadas. No voy a darle muchas vueltas más al tema de las palabras reservadas.

Sólo comentar que Alan Kay, desarrollador principal de Smalltalk afirmó verse muy influenciado por Lisp, y también remarcar que Smalltalk influyó en Lisp haciendo que se pudiera utilizar POO (Programación Orientada a Objetos). La clave fundamental de ambos sistemas es que están pensados para que un programador ─que sepa lo que hace─ pueda redefinir todo el sistema y también en ambos, se puede hacer en caliente, mientras se está ejecutando. Por lo tanto, todo el código del sistema es accesible para el programador. Lo digo por propia experiencia, me he cargado unas cuantas imágenes de trabajo de Smalltalk, intentando hacer lo que no debía. Lo bueno, es que a pesar de eso nunca pasa nada: reinicias el trabajo, quitas lo que has puesto o metes lo que has quitado y las cosas se suelen arreglar, no tengáis miedo. Al contrario, equivocándote aprendes más que no haciendo y si no eres capaz de arreglarlo, siempre puedes reinstalarlo (que tampoco es tan grave).

El Lisp fue presentado por John McCarthy en 1960 en el MIT en un artículo con el título «Funciones recursivas de expresiones simbólicas y su cómputo a máquina, Parte I», demostrando en él que con algunos operadores simples y una notación para las funciones, se puede construir un lenguaje de programación completo para procesar algoritmos.