You are on page 1of 3

Smalltalk es un lenguaje reflexivo de programacin, orientado a objetos y con tipa

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

una memoria propia.


capacidad para comunicarse con otros objetos.
la capacidad de heredar caractersticas de objetos ancestros.
capacidad de procesamiento.

Los objetos se comunican entre s mediante el envo de mensajes.. Asimismo, un objet


o puede proveer muchas operaciones (actualmente esto est determinado por cada imp
lementacin)
Las definiciones de estas operaciones en los objetos son llamadas mtodos. Un mtodo
especifica la reaccin de un objeto cuando recibe un mensaje que es dirigido a es
e mtodo. La resolucin (en el sentido de ligado) de un mensaje a un mtodo es dinmica.
La coleccin entera de mtodos de un objeto es llamada protocolo de mensajes o inte
rfaz de mensajes del objeto. Los mensajes pueden ser parametrizados, estos parmet
ros sern objetos, y el resultado o respuesta del mismo tambin ser un objeto.
Las caractersticas comunes de objetos est capturado bajo la nocin de clase, de tal
forma que los objetos agrupados bajo una clase son llamados instancias de ella.
Las instancias son creadas durante la ejecucin de un programa con algn propsito y s

on barridos automticamente en el momento que no son necesitados ms por el recolect


or de basura. Exceptuando algunos objetos especiales como los muy simples, llama
dos literales (nmeros, cadenas, etc), cada objeto tiene su propio estado local y
representa una instancia diferente de su clase.
Caractersticas
Smalltalk es considerado el primero de los lenguajes orientados a objetos (OOP),
aunque en realidad el primero en implementar programacin orientada a objetos fue
Simula. En Smalltalk todo es un objeto, incluidos los nmeros reales o el propio
entorno Smalltalk.
Como lenguaje tiene las siguientes caractersticas:
Orientacin a Objetos
Tipado dinmico
Interaccin entre objetos mediante envo de mensajes
Herencia simple y con raz comn
Reflexin computacional completa
Recoleccin de basura
Compilacin en tiempo de ejecucin o Interpretado (dependiendo de la distribucin
o del proveedor)
Mltiples Implementaciones
Smalltalk ha tenido gran influencia sobre otros lenguajes como Java o Ruby, y de
su entorno han surgido muchas de las prcticas y herramientas de desarrollo promu
lgadas actualmente por las metodologas giles (refactorizacin, desarrollo incrementa
l, desarrollo dirigido por tests, etc.).
El entorno Smalltalk
Las implementaciones de Smalltalk de mayor peso (VisualWorks, Squeak, VisualSmal
ltalk, VisualAge, Dolphin, Pharo Smalltalk, Smalltalk X) poseen un entorno de in
teraccin muy diferente al entorno de desarrollo tpico de otras tecnologas como Micr
osoft Visual Studio .Net o Eclipse. El entorno o ambiente Smalltalk es primordia
lmente grfico y funciona como un sistema en tiempo de ejecucin que integra varias
herramientas de programacin (Smalltalk), utilidades multimedia, interfaces para e
jecutar cdigo no nativo a Smalltalk y servicios del sistema operativo.1 Estas pos
ibilidades, que han influido en la metodologa de trabajo y concepcin de la program
acin, se traducen en la tendencia a considerar a Smalltalk ms que un simple lengua
je de programacin. La forma de desarrollar software en Smalltalk no consiste en e
l ciclo tpico de las tecnologas tradicionales: Arrancar un editor de texto, compil
ar y ejecutar y terminar la aplicacin. En Smalltalk se manipula el entorno mismo,
comnmente mediante el Navegador del Sistema.
Sintaxis
Tradicionalmente, Smalltalk no posee una notacin explcita para describir un progra
ma entero. S se utiliza una sintaxis explcita para definir ciertos elementos de un
programa, tales como mtodos, pero la manera en que tales elementos estn estructur
ados dentro de un programa entero generalmente es definida por las mltiples imple
mentaciones. El estndar mismo no promueve otra direccin, por lo que define una sin
taxis abstracta de programas Smalltalk, que define todos los elementos que const
ituyen un programa Smalltalk y la manera en que esos elementos estn lgicamente com
puestos por otros elementos, sin embargo, cada implementacin es libre de definir
y utilizar las muchas sintaxis posibles que estn conformes a la sintaxis abstract
a estndar. Un ejemplo de una sintaxis concreta es el Formato de Intercambio Small
talk (o SIF, de Smalltalk Interchange Format) definida en el mismo estndar.
La sintaxis de Smalltalk-80 tiende a ser minimalista. Esto significa que existen
un grupo pequeo de palabras reservadas y declaraciones en comparacin con la mayora
de los lenguajes populares. Smalltalk posee un grupo de 5 palabras reservadas:
self, super, nil, true y false.

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.

You might also like