La magia del Smalltalk: Capítulo 4 - ¿Qué es el compilador? ¡Un objeto!
¿Recuerdan que dijimos, al menos unas 278 veces, que en Smalltalk todo es un objeto?
Eso nos vale para contestar a casi cualquier pregunta: ¿Qué es la paz? ¿Qué es el amor? ¿Qué es Dios? ¿Qué es la nada? ¡Todos son objetos! :-)
No puedo decir nada sobre la paz, el amor, Dios o la nada así que mejor hablo de un tipo de objeto que conozco un poco mejor: Compiler.
El compilador de Smalltalk está escrito en Smalltalk. Además de los clásicos problemas de bootstrapping de los lenguajes escritos en si mismo, esto permite un gran poder dentro del ambiente.
Se pueden hacer desde cosas muy simples como evaluar código Smalltalk y procesar el resultado:
Compiler evaluate: '5 factorial' |
A cosas un poco más bonitas como especializar el compilador para determinadas clases del ambiente. Veamos un ejemplo: Supongamos que queremos hacer un Prolog dentro de nuestro Smalltalk. Podríamos escribir un compilador específico para la sintaxis de Prolog y decirle al Smalltalk que determinadas clases (las herencias de una clase en particular) usen otro compilador y no el default.
Para eso simplemente (¿?) tenemos que escribir el compilador de Prolog, y en la clase que servirá de superclase para las cosas en Prolog, especificamos nuestro compilador:
Prolog>>compilerClass "Answer a compiler class appropriate for source methods of this class." ^ PrologCompiler |
Les dejo un paper muy bueno que habla del compilador de Smalltalk (en Squeak y VisualWorks): The Hitch Hiker's Guide to the Smalltalk Compiler
¡A jugar con el compilador!
3 Comentarios:
Lo digo en serio, Diego ¿para cuando un libro/pdf con todos estos artículos juntos?.
El formato fascículos está bien para satisfacer el deseo diario, pero para guardarlo no es cómodo.
Secundo totalmente la postura de José!.
Seria muy bueno que hagas "EL" libro para enseñar Smalltalk de acuerdo a tus convencimientos sobre cómo se debe enseñar un ambiente de objetos.
Yo lo compro!
En cuanto tenga algunos artículos más, los pongo en un PDF.
Publicar un comentario
<< Principal