Smalltalk

Smalltalk
Información sobre la plantilla
Logo smalltalk small.jpg
Lenguaje de Programación que permite realizar tareas de computación mediante la interacción con un entorno de objetos virtuales.
CreadorAlan Kay, Dan Ingalls, Ted Kaehler, Adele Goldberg
Lanzamiento inicialAños 70
Smalltalk. Un sistema Smalltalk está compuesto por la Máquina virtual, Imagen virtual que contiene todos los objetos del sistema, Lenguaje de programación (también conocido como Smalltalk), Biblioteca de Objetos reusables, Opcionalmente un entorno de desarrollo que funciona como un sistema en tiempo de ejecución.

Historia

Smalltalk surge de investigaciones realizadas por Alan Kay, Dan Ingalls, Ted Kaehler, Adele Goldberg y otros durante los años setenta en el Palo Alto Research Institute de Xerox (conocido como Xerox PARC), para la creación de un sistema informático orientado a la educación.

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.

Un programa Smalltalk consiste únicamente de objetos, un concepto que se utiliza universalmente dentro de todo sistema Smalltalk. Prácticamente todo, desde un número natural como el 4 hasta un servidor web es considerado un objeto. Los objetos Smalltalk presentan características comunes

• Tienen una memoria propia.

• Poseen capacidad para comunicarse con otros objetos.

• Poseen la capacidad de heredar características de objetos ancestros.

• Tienen capacidad de procesamiento.

Los objetos se comunican entre sí mediante el envío de mensajes y puede proveer muchas operaciones (actualmente esto está determinado por cada implementación) Las definiciones de estas operaciones en los objetos son llamadas métodos. Un método especifica la reacción de un objeto cuando recibe un mensaje que es dirigido a ese método. La resolución (en el sentido de ligado) de un mensaje a un método es dinámica.

La colección entera de métodos de un objeto es llamada protocolo de mensajes o interfaz de mensajes del objeto. Los mensajes pueden ser parametrizados, estos parámetros serán objetos, y el resultado o respuesta del mismo también será un objeto. Las características comunes de objetos está capturado bajo la noción de clase, de tal forma que los objetos agrupados bajo una clase son llamados instancias de ella.

Las instancias son creadas durante la ejecución de un programa con algún propósito y son barridos automáticamente en el momento que no son necesitados más por el recolector de basura. Exceptuando algunos objetos especiales como los muy simples, llamados literales (números, cadenas, etc), cada objeto tiene su propio estado local y representa una instancia diferente de su clase.

Características de este lenguaje

Smalltalk es considerado el primero de los lenguajes orientados a objetos (OOP), aunque en realidad el primero en implementar programación orientada a objetos fue Simula. En Smalltalk todo es un objeto, incluidos los números reales o el propio entorno Smalltalk. Como lenguaje tiene las siguientes características:

• Orientación a Objetos Pura

• Tipado dinámico

• Interacción entre objetos mediante envío de mensajes

• Herencia simple y con raíz común

• Reflexión computacional completa

• Recolección de basura

• Compilación en tiempo de ejecución o Interpretado (dependiendo de la distribución o del proveedor)

• Múltiples Implementaciones Smalltalk ha tenido gran influencia sobre otros lenguajes como Java o Ruby, y de su entorno han surgido muchas de las prácticas y herramientas de desarrollo promulgadas actualmente por las metodologías ágiles (refactorización, desarrollo incremental, desarrollo dirigido por tests, etc.).

Entorno y Sintaxis del lenguaje

Las implementaciones de Smalltalk de mayor peso (VisualWorks, Squeak, VisualSmalltalk, VisualAge y Dolphin) poseen un entorno de interacción muy diferente al entorno de desarrollo típico de otras tecnologías como Microsoft Visual Studio .Net o Eclipse.

El entorno o ambiente Smalltalk es primordialmente gráfico y funciona como un sistema en tiempo de ejecución que integra varias herramientas de programación (Smalltalk), utilidades multimedia, interfaces para ejecutar código no nativo a Smalltalk y servicios del sistema operativo. Estas posibilidades, que han influido en la metodología de trabajo y concepción de la programación, se traducen en la tendencia a considerar a Smalltalk más que un simple lenguaje de programación. La forma de programar en Smalltalk no consiste en el ciclo típico de las tecnologías tradicionales: Arrancar un editor de texto, compilar y ejecutar y terminar la aplicación.

En Smalltalk se manipula el entorno mismo, comúnmente mediante el Navegador del Sistema. Tradicionalmente, Smalltalk no posee una notación explícita para describir un programa entero. 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.

El estándar mismo no promueve otra dirección, por lo que define una sintaxis abstracta de programas Smalltalk, que define todos los elementos que constituyen un programa Smalltalk y la manera en que esos elementos están lógicamente compuestos por otros elementos, sin embargo, cada implementación es libre de definir y utilizar las muchas sintaxis posibles que están conformes a la sintaxis abstracta estándar.

Un ejemplo de una sintaxis concreta es el Formato de Intercambio Smalltalk (o SIF, de Smalltalk Interchange Format) definida en el mismo estándar. La sintaxis de Smalltalk-80 tiende a ser minimalista. Esto significa que existen un grupo chico de palabras reservadas y declaraciones en comparación con la mayoría de los lenguajes populares. Smalltalk posee un grupo de 5 palabras reservadas: self, super, nil, true y false.

Ejemplos

En Smalltalk todo es un objeto, y a un objeto se le envían mensajes. Por ejemplo: 1 + 1 Significa que al objeto "1" le enviamos el mensaje "+" con el colaborador externo, otro objeto, "1". Este ejemplo entonces resulta en el objeto "2". Transcript show: '¡Hola, mundo!' En el típico Hola mundo, el objeto es Transcript, que recibe el mensaje show con el colaborador externo '¡Hola, Mundo!'. Para crear una instancia de un objeto, sólo hay que mandar un mensaje new a una clase: Objeto new Para obtener las vocales de una cadena de texto: 'Esto es un texto' select: [:aCharacter | aCharacter isVowel].

Fuentes

  • Lamanier Regueiferos, Hissel. Joven Club Santiago XIII ¨Flores¨ Trabajo investigativo sobre Smalltalk.
  • "Libro de Programación con Smalltalk" de Diego Gómez Deck (en Español) "The Art and Science of Smalltalk" The Art and Science of Smalltalk, Simon Lewis. Textbook Binding (1995).