jueves, enero 27, 2005

«Evaluador Meta-Circular» o Magia en estado puro

Me impactó profundamente, la primera vez que lo ví quedé pasmado. Es una de esas cosas que no te crees hasta que alguien se atreve a hacerlas realidad.

El «Evaluador Meta-Circular» es una cosa simple, pero devastadora para la comprensión. Es algo mágico...¿crees que exagero? Todo el mundo decía que las reglas de la naturaleza eran simétricas, porque es lo normal... nosotros somos simétricos y por tanto todo debe serlo... ¿o no? demasiadas veces pecamos de antropocentrismo, si no somos capaces de imaginar o considerar algo bello lo desterramos.

Richard P. Feynmann encontró que muchas cosas cambian si comenzamos a evaluar las reglas de la naturaleza al revés.

El «Evaluador Meta-Circular» es una idea: creas un lenguaje de programación en C, por ejemplo, y después creas un intérprete para ese lenguaje en él mismo, de manera que podrás interpretarlo usándolo a él mismo. Es enrrevesado: creas un intérprete de A y ahora defines A usando A. ¿Qué se consigue con esto? El lenguaje deja de ser dependiente de la plataforma, solo necesitas un interprete C para las primitivas que usaste para crear el interprete de A en A.

En LISP solo son necesarias, creo recordar, 7 primitivas que son muy fáciles de interpretar. Si en algún lenguaje se implementan esas 7 primitivas ese lenguaje no es más que una extensión de LISP.

Uno de los mejores de libros de informática que existen es Structure and Interpretation of Computer Programs escrito por dos genios del MIT AI Lab, Sussman y Abelson. Es un libro que suele iluminar a quien lo lee y se ha usado durante muchos años como texto base para la introducción a la programación en el MIT.

Ahora estas cosas ya casi no se estudian, la gente cree que Java o C# son poderosos sin conocer el poder real ;)