LAS RAÍCES DE LISP
Mayo 2001
(Escribí este artículo para ayudarme a entender exactamente lo que McCarthy descubrió. No necesitas saber estas cosas para programar en Lisp, pero debe ser útil para cualquiera que desee comprender la esencia de Lisp— tanto en el sentido de sus orígenes como de su núcleo semántico. El hecho de poseer éste núcleo es una de las características distintivas de Lisp, y la razón por la cual, a diferencia de otros lenguajes, Lisp posee dialectos).
En 1960, John McCarthy publicó un notable artículo en el que hizo por la programación algo parecido a lo que Euclides hizo por la geometría. Demostró cómo, dado un puñado de operadores simples y una notación para funciones, se puede construir un lenguaje de programación. Llamó a este lenguaje Lisp, por "List Processing", debido a que una de sus principales ideas era usar una estructura de datos simple llamada list tanto para el código como para los datos.
Vale la pena comprender lo que McCarthy descubrió, no sólo como un hito en la historia de las computadoras, sino como un modelo para lo que la programación tiende a convertirse en nuestro propio tiempo. Me parece que hasta la fecha ha habido dos modelos de programación limpios y consistentes: el modelo C y el modelo Lisp. Estos dos se asemejan a puntos elevados sobre el terreno, con tierras bajas pantanosas entre ellos. Conforme las computadoras se han vuelto más potentes, los nuevos lenguajes en desarrollo se han estado moviendo de manera continua hacia el modelo de Lisp. Una receta popular para los nuevos lenguajes de programación en los últimos 20 años ha sido la de tomar el modelo C de la informática y agregarle, poco a poco, partes tomadas del modelo de Lisp, tales como la escritura en tiempo de ejecución y la recolección de basura.
En este artículo trataré de explicar en los términos más simples posibles lo que McCarthy descubrió. La idea no es sólo conocer el interesante resultado teórico descubierto hace cuarenta años, sino demostrar hacia donde se dirigen los lenguajes. Lo inusual de Lisp —de hecho, la característica distintiva de Lisp— es que se puede escribir a sí mismo. Para comprender lo que McCarthy quiso decir con esto, volveremos sobre sus pasos, con su notación matemática traducida a código corriente de Common Lisp.
Traducido del original The Roots of Lisp por Paul Graham. Traducción: Armando Alvarez.