Loading...

LAS RAÍCES DE LISP

Original

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 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 tal 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 artículo notable en el que hizo para la programación algo similar a lo que Euclides hizo para la geometría. Mostró cómo, dado un puñado de operadores simples y una notación para funciones, puedes construir un lenguaje de programación completo. Llamó a este lenguaje Lisp, por "Procesamiento de Listas", 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 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 propio 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 terreno elevado, 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 moviendo 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, poco a poco, 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 simples posibles lo que McCarthy descubrió. El objetivo no es solo 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 calidad definitoria de Lisp — es que puede ser escrito en sí mismo. Para entender lo que McCarthy quiso decir con esto, vamos a seguir sus pasos, con su notación matemática traducida en código de Common Lisp en ejecución.