Érase una vez, lo fue. Es difícil recordarlo ahora, porque se ha avanzado muy poco, pero la IA fue una vez la gran cosa en informática y la gente tenía un gran optimismo al respecto. En retrospectiva, eso parece un poco ingenuo, ya que la gente todavía se estaba ejecutando en ideas esencialmente cartesianas sobre lo que era la inteligencia, que ahora sabemos que en su mayoría están equivocadas.
En aquel entonces, la Santísima Trinidad de los lenguajes informáticos consistía en FORTRAN, COBOL y LISP. FORTRAN fue bueno para el cálculo de números, pero la única estructura de datos era una matriz. Ha pasado mucho tiempo desde que usé COBOL, pero hasta donde puedo recordar, lo más parecido a una estructura de datos fue el registro, y esta fue solo una forma de dividir los caracteres en las tarjetas Hollerith, una tecnología del siglo XIX, en campos de longitud fija. Me hizo aprender a escribir VALOR de un solo movimiento en un teclado 049 y LLENAR casi tan rápido.
En contraste, LISP permitió la creación dinámica de árboles binarios arbitrarios. Por lo general, se usaban para representar listas según la siguiente convención: la rama izquierda del árbol era el primer elemento, y la rama derecha era el resto de la lista. Por esta razón, obtuvo su nombre de LISt Processor. Aquellos de nosotros que lo conocemos y amamos sabemos que realmente significa muchos paréntesis individuales irritantes. También era completamente dinámico, por lo que un elemento de una lista podría ser una lista o un átomo, esencialmente un escalar, aunque a veces el término estaba reservado para símbolos.
Era absurdamente simple escribir un intérprete de LISP desde cero. La sintaxis fue mínima. El código fuente de los programas consistía en listas. La estructura dinámica significaba que podía programar de forma interactiva. Era el único idioma en ese momento que apoyaba la recursividad, pero por alguna razón inexplicable, muchas personas prefirieron usar el bloque PROG con GOTO.
Fue, y durante mucho tiempo siguió siendo, el único lenguaje apropiado para hackear. Gran parte de la investigación de IA consistió en piratería. No había una teoría decente para la IA (todavía no la hay, pero al menos ahora sabemos lo suficiente como para saber que no es obvio).
Sin embargo, los programadores de LISP obtuvieron un complejo de inferioridad durante mucho tiempo. Los primeros intérpretes de LISP eran bastante malos, y las máquinas con las que funcionaban eran bastante más desagradables. Corrieron despacio. LISP también requirió la recolección de basura, y la gente no sabía mucho al respecto, por lo que fue lento. Ya a fines de la década de 1970, cuando fui al MIT, los programas de LISP ocasionalmente iban a almorzar, imprimiendo “COLECCIONANDO BASURA …” una y otra vez en el DECWriter. Los sistemas posteriores utilizaron principalmente trucos cursis como el recuento de referencias o simplemente poner el problema en el programador pobre. La recolección adecuada de basura no volvió a crecer hasta la invención de Java, y luego, los viejos, resentidos de lo maravillosa que la gente pensaba que era, hicieron muchos comentarios sarcásticos.
Los desarrolladores de LISP intentaron hacer mucho para que fuera un lenguaje más atractivo, probablemente bajo la suposición incorrecta de que las críticas se basaban en algo real, lo que resultó en el gigante de Common Lisp. Por otro lado, Scheme recapturó algo de la pureza del LISP original con características basadas en ideas modernas, como el alcance léxico, la recursión de la cola y la sorprendente continuación (que desafortunadamente hace que Scheme se mapee mal en arquitecturas modernas basadas en pilas). Ninguno de ellos, desafortunadamente, obtuvo una programación orientada a objetos en su forma más pura, prefiriendo un modelo similar a ADA que sea así, pero al mismo tiempo no lo sea del todo.
Aún así, el modelo de memoria de LISP fue tan útil, e incluso la sintaxis fue tan útil para la secuencia de comandos de pirateo rápido que muchos sistemas obtuvieron Green Spunning. Yo también lo he hecho. Que yo sepa, la primera vez que las actitudes tipo LISP se utilizaron en gran medida con otro idioma fue Google y C ++.
Puedo obtener ladrillos para esto, pero mi idioma preferido para la piratería de IA es en realidad Perl. No escribiría un gran sistema en él, pero si tiene un montón de texto del que necesita extraer información, no hay nada igual.