LAS RAÍCES DE LISP
OriginalMayo 2001
(Escribí este artículo para ayudarme a entender exactamente lo que descubrió McCarthy. No necesitas saber estas cosas para programar en Lisp, pero debería ser útil para cualquiera que quiera entender la esencia de Lisp, tanto en el sentido de sus orígenes como de su núcleo semántico. El hecho de que tenga un núcleo es una de las características distintivas de Lisp, y la razón por la que, a diferencia de otros lenguajes, Lisp tiene dialectos.)
En 1960, John McCarthy publicó un notable artículo en el que hizo para la programación algo similar a lo que Euclid hizo para la geometría. Mostró cómo, con un puñado de operadores simples y una notación para funciones, se puede construir un lenguaje de programación completo. Lo llamó Lisp, por "List Processing", porque una de sus ideas clave era usar una estructura de datos simple llamada lista tanto para código como para datos.
Vale la pena entender lo que descubrió McCarthy, no solo como un hito en la historia de los ordenadores, sino como un modelo de lo que la programación tiende a convertirse en nuestro propio tiempo. Me parece que ha habido dos modelos de programación realmente limpios y coherentes hasta ahora: el modelo C y el modelo Lisp. Estos dos parecen puntos de gran altura, con pantanos entre ellos. A medida que los ordenadores se han vuelto más potentes, los nuevos lenguajes de programación que se han desarrollado han ido moviéndose gradualmente hacia el modelo Lisp. Una receta popular para los nuevos lenguajes de programación en los últimos 20 años ha sido tomar el modelo de computación C y añadirle, pieza por pieza, partes tomadas del modelo Lisp, como tipado en tiempo de ejecución y recolección de basura.
En este artículo voy a intentar explicar en los términos más sencillos posibles lo que descubrió McCarthy. El punto no es simplemente aprender sobre un resultado teórico interesante que alguien descubrió hace cuarenta años, sino mostrar hacia dónde se dirigen los lenguajes. Lo inusual de Lisp, de hecho, la cualidad definitoria de Lisp, es que puede escribirse a sí mismo. Para entender lo que McCarthy quería decir con esto, vamos a recorrer sus pasos, con su notación matemática traducida a código Common Lisp en ejecución.