LAS RAÍCES DE LISP
OriginalMay 2001
(Escribí este artículo para ayudarme a entender exactamente lo que McCarthy descubrió. No necesitas saber esto para programar en Lisp, pero debería ser útil para cualquiera que quiera entender la esencia de Lisp, tanto en el sentido de su origen como de su núcleo semántico. El hecho de que tenga un núcleo así 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 parecido a lo que Euclides hizo para la geometría. Mostró cómo, dados unos pocos operadores simples y una notación para funciones, se puede construir un lenguaje de programación completo. Llamó a este lenguaje Lisp, por "List Processing", porque una de sus ideas clave era usar una simple estructura de datos llamada lista para ambos código y datos.
Vale la pena entender lo que McCarthy descubrió, no solo como un hito en la historia de las computadoras, sino como un modelo de lo que la programación tiende a convertirse en nuestro tiempo. Me parece que ha habido dos modelos de programación realmente limpios y consistentes hasta ahora: el modelo C y el modelo Lisp. Estos dos parecen puntos de alta tierra, con tierras bajas pantanosas entre ellos. A medida que las computadoras se han vuelto más poderosas, los nuevos lenguajes que se están desarrollando han estado moviéndose constantemente hacia el modelo Lisp. Una receta popular para nuevos lenguajes de programación en los últimos 20 años ha sido tomar el modelo C de computación y agregarle a él, poco a poco, partes tomadas del modelo Lisp, como el tipado en tiempo de ejecución y la recolección de basura.
En este artículo voy a intentar explicar en el términos más simples posibles lo que McCarthy descubrió. El punto no es solo aprender sobre un interesante resultado teórico 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 se puede escribir en sí mismo. Para entender lo que McCarthy quiso decir con esto, vamos a retroceder sobre sus pasos, con su matemática notación traducida a código Common Lisp en ejecución.