Professional Documents
Culture Documents
do dinmico. Por sus caractersticas, Smalltalk puede ser considerado tambin como un
entorno de objetos, donde incluso el propio sistema es un objeto. Metafricamente,
se puede considerar que un Smalltalk es un mundo virtual donde viven objetos qu
e se comunican entre s, mediante el envo de mensajes.
Un sistema Smalltalk est compuesto por:
Una Mquina virtual (Virtual machine)
Un archivo llamado "Imagen", que contiene a todos los objetos del sistema
Un lenguaje de programacin (tambin conocido como Smalltalk)
Una enorme biblioteca de "objetos reusables"
Y generalmente, un entorno de desarrollo que adems puede funcionar como un si
stema en tiempo de ejecucin.
ndice
1
2
3
4
5
6
7
Historia
Terminologa
Caractersticas
El entorno Smalltalk
Sintaxis
Recoleccin de basura
Reflexin computacional
Historia
Los orgenes de Smalltalk se encuentran en las investigaciones realizadas por Alan
Kay, Dan Ingalls, Ted Kaehler, Adele Goldberg y otros durante los aos setenta en
el Palo Alto Research Institute de Xerox (conocido como Xerox PARC), para la cr
eacin de un sistema informtico orientado a la educacin. El objetivo era crear un si
stema que permitiese expandir la creatividad de sus usuarios, proporcionando un
entorno para la experimentacin, creacin e investigacin.
Terminologa
Un programa Smalltalk consiste nicamente de objetos, un concepto que se utiliza u
niversalmente dentro de todo sistema Smalltalk. Prcticamente todo, desde un nmero
natural como el 4 hasta un servidor web es un objeto. Los objetos Smalltalk pres
entan caractersticas comunes:
Tienen
Poseen
Poseen
Tienen
Recoleccin de basura
En Smalltalk no es necesario desalocar objetos explcitamente, por lo tanto no pro
porciona mecanismos para ello. Las implementaciones utilizan tcnicas de recoleccin
de basura para detectar y reclamar espacio en memoria asociado con objetos que
ya no se utilizarn ms en el sistema. En Smalltalk la recoleccin de basura es integr
ada configurable. La forma de ejecucin del recolector de basura es en background,
es decir, como un proceso de baja prioridad no interactivo, aunque en algunas i
mplementaciones es posible ejecutarlo a demanda, siendo posible definir configur
aciones de memoria especiales para cada sistema mediante polticas (por ejemplo en
VisualWorks). La frecuencia y caractersticas de la recoleccin depende de la tcnica
utilizada por la implementacin. Adicionalmente algunas implementaciones de Small
talk proporcionan soporte para mecanismos de finalizacin como el uso de Ephemeron
s.
Reflexin computacional
Smalltalk-80 provee reflexin computacional estructural y comportacional, ya que e
s un sistema implementado en s mismo. La reflexin estructural se manifiesta en que
las clases y mtodos que define el sistema son en s mismos objetos tambin y forman
parte del sistema mismo. La mayora de las implementaciones de Smalltalk tienden a
exponer el compilador Smalltalk al entorno de programacin, permitiendo que dentr
o del sistema se compile cdigo fuente (textual), transformndose en objetos mtodos,
que son comnmente instancias de la clase CompiledMethod. El sistema generalmente
incorpora estos mtodos en las clases, almacenndolos en el diccionario de mtodos de
la clase a la cual se quiera agregar el comportamiento que realiza el mtodo. Esto
, as como la incorporacin de nuevas clases al sistema, es realizado dentro del sis
tema mismo; aunque la mayor parte de las implementaciones poseen herramientas vi
suales que ocultan la complejidad de interactuar con la clase que usualmente se
encarga de tales tareas, el ClassBuilder.
La reflexin computacional de Smalltalk-80 se manifiesta en la posibilidad de obse
rvar el estado computacional del sistema. En los lenguajes derivados del Smallta
lk-80 original, durante el envo de mensajes entre objetos, cada objeto receptor d
e un mensaje consulta su clase para tener acceso a los mtodos que define. En caso
de encontrarse el mtodo en la clase, se dice que se "activa" el mtodo. Esta activ
acin de un mtodo actualmente en ejecucin, es accesible mediante una palabra clave l
lamada thisContext. Enviando mensajes a thisContext se puede consultar cuestione
s tales como "quin me envi este mensaje?". Estas facilidades hacen posible implemen
tar co-rutinas, continuaciones o back-tracking al estilo Prolog sin necesidad de
modificar la mquina virtual. Uno de los usos ms interesantes de esta facilidad, s
e da en el framework de web Seaside de Avi Bryant.