Smalltalk

Smalltalk es un lenguaje reflexivo de programación, orientado a objetos y con tipado dinámico.

El objetivo era crear un sistema que permitiese expandir la creatividad de sus usuarios, proporcionando un entorno para la experimentación, creación e investigación.

En Smalltalk se manipula el entorno mismo, comúnmente mediante el Navegador del Sistema.

Sí se utiliza una sintaxis explícita para definir ciertos elementos de un programa, tales como métodos, pero la manera en que tales elementos están estructurados dentro de un programa entero generalmente es definida por las múltiples implementaciones.

Smalltalk posee un grupo de 6 palabras reservadas: self, super, nil, true , false y thisContext.

Smalltalk-80 provee reflexión computacional y estructural, ya que es un sistema implementado en sí mismo.

La reflexión estructural se manifiesta en que las clases y métodos que define el sistema son en sí mismos objetos también y forman parte del sistema mismo.

Esta activación de un método actualmente en ejecución, es accesible mediante una palabra clave llamada thisContext.

Estas facilidades hacen posible implementar corrutinas, continuaciones o back-tracking al estilo Prolog sin necesidad de modificar la máquina virtual.