LAS RAÍCES DE LISP
OriginalMayo de 2001
(Escribí este artículo para ayudarme a entender exactamente lo que McCarthy descubrió. No es necesario 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 dicho 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 por la programación algo similar a lo que Euclides hizo por la geometría. Demostró 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, abreviatura de "List Processing" (Procesamiento de listas), porque una de sus ideas clave era utilizar una estructura de datos simple llamada lista tanto para el código como para los datos.
Vale la pena entender lo que McCarthy descubrió, no sólo como un hito en la historia de las computadoras, sino como un modelo de lo que la programación tiende a convertirse en nuestra propia época. Me parece que hasta ahora ha habido dos modelos de programación realmente limpios y consistentes: el modelo C y el modelo Lisp. Estos dos parecen puntos altos, 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 se han ido moviendo constantemente 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 agregarle, 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 intentaré explicar de la forma más sencilla posible lo que McCarthy descubrió. No se trata sólo de aprender sobre un resultado teórico interesante que alguien descubrió hace cuarenta años, sino de mostrar hacia dónde se dirigen los lenguajes. Lo inusual de Lisp (de hecho, la cualidad que lo define) es que puede escribirse en sí mismo. Para entender lo que McCarthy quiso decir con esto, volveremos a seguir sus pasos, con su notación matemática traducida a código Common Lisp en ejecución.