9 de junio de 2008

La venganza de los nerds (3 de 11)

Poniendonos al día en matemáticas


Lo que quiero decir es que Lisp fue descubierto inicialmente por John McCarty en 1958, y los lenguajes populares de programación actuales apenas se están poniendo al día con las ideas que él desarrolló entonces.

Ahora, ¿cómo puede ser esto? ¿No es la tecnología de las computadoras algo que cambia muy rápidamente? Es decir, en 1958 las computadoras eran monstruos del tamaño de refrigeradores con el poder de procesamiento de un reloj de pulsera. ¿Cómo podría alguna tecnología así de vieja ser siquiera relevante, ya no digamos superior a los últimos desarrollos?

Les diré como. Esto es porque Lisp no fue en realidad diseñado para ser un lenguaje de programación, al menos no en el sentido de lo que entendemos hoy en día. Lo que queremos decir con lenguaje de programación es algo que usamos para decirle a una computadora qué hacer. McCarthy pretendió de hecho eventualmente desarrollar un lenguaje de programación en ese sentido, pero el Lisp con que al final acabamos se basó en algo separado que él hizo como ejercicio teórico-- un esfuerzo para definir una alternativa más conveniente a la máquina de Turing. Como McCarthy dijo después:

Otra forma de mostrar que Lisp era más limpio que las máquinas de Turing era escribir una función de Lisp universal y mostrar que es más breve y más comprensible que la descripción de una máquina de Turing universal. Esta fue la función de Lisp eval..., que computa el valor de una expresión de Lisp... Escribir eval requirió inventar una notación que representara las funciones de Lisp como datos de Lisp, y tal notación fue formulada para los propósitos del estudio sin pensar que sería usada para expresar programas de Lisp en la práctica.

Lo que pasó a continuación fue que poco tiempo después, a finales de 1958, Steve Russell, uno de los estudiantes graduados con McCarthy observó la definición de eval y entendió que si la traducía a lenguaje de máquina, el resultado sería un intérprete de Lisp.

Esta fue una gran sorpresa en su momento. Aquí está lo que más tarde dijo McCarthy al respecto en una entrevista:

Steve Russell dijo, mire, ¿por qué no programo este eval..?, y yo le dije, cuidado, estás confundiendo teoría con práctica, este eval fue pensado para leerse, no para computarse. Pero siguió adelante y lo hizo. Esto es, compiló el eval de mi estudio en código de máquina de una [IBM] 704, corrigió errores, y luego lo anunció como un interprete de Lisp, lo cual era ciertamente. Así, en ese momento Lisp obtuvo esencialmente la forma que hoy tiene...

No hay comentarios.: