- Smalltalk fue el primer lenguaje en implementar la orientación a objetos pura, innovando con un entorno gráfico interactivo y una sintaxis minimalista.
- Ha influido directamente en la creación de lenguajes modernos como Java, Python y Ruby, y sentó las bases de metodologías ágiles y herramientas de desarrollo actuales.
- La comunidad mantiene viva la herencia de Smalltalk a través de proyectos open source como Pharo, Squeak y Cuis Smalltalk, facilitando su acceso y aprendizaje.
Decir que Smalltalk revolucionó la programación no es ninguna exageración. Esta joya nacida en los laboratorios de Xerox PARC marcó un antes y un después en la forma de concebir y desarrollar software, sentando las bases de la programación orientada a objetos y dando pie a conceptos que, hoy, son esenciales en casi cualquier lenguaje moderno.
Ahora bien, ¿qué es exactamente Smalltalk y por qué sigue apareciendo, aunque con menor popularidad, en los rankings y conversaciones sobre lenguajes más influyentes de la historia? En este artículo vamos a descubrir, de manera amena y exhaustiva, el origen, la filosofía, el funcionamiento, las virtudes y la influencia de Smalltalk en la informática actual, repasando a fondo todo lo que deberías saber para entender su relevancia.
El origen de Smalltalk: donde empezó todo
Para entender Smalltalk hay que viajar a los años setenta, concretamente a los pasillos del Xerox Palo Alto Research Center (PARC) en California, uno de los epicentros de la innovación informática de la época. El proyecto estaba dirigido por Alan Kay, acompañado de mentes brillantes como Dan Ingalls, Ted Kaehler y Adele Goldberg. Su propósito inicial era nada menos que crear un entorno donde, además de programar, los usuarios —incluyendo niños— pudieran experimentar y dar rienda suelta a la creatividad. De ahí nació Smalltalk.
Smalltalk fue conceptualizado como un lenguaje completamente orientado a objetos. En sus primeras versiones —Smalltalk-72, Smalltalk-76 y, especialmente, Smalltalk-80 (la más popular y extendida)— se sentaron pilares que hoy damos por sentados en la industria: objetos, clases, mensajes, encapsulación, herencia y un entorno gráfico interactivo.
Como curiosidad, el contexto en el que apareció Smalltalk es fundamental. Aquellos laboratorios eran el terreno fértil también de tecnologías y conceptos que más tarde darían lugar a las interfaces gráficas (GUI), la programación WYSIWYG (lo que ves es lo que hay), el hipertexto o incluso la propia Internet. Smalltalk se gestó allí justo cuando la informática se preparaba para dar el salto de lo académico a la sociedad y la empresa.
¿Qué hace especial a Smalltalk?
Vale, todo lenguaje de programación tiene alguna característica diferencial, pero Smalltalk tiene varias y radicales. Smalltalk fue el primer lenguaje en llevar hasta sus últimas consecuencias la orientación a objetos. Su lema podría resumirse en: «Todo es un objeto. Sin excusas.»
- En Smalltalk, absolutamente todo es un objeto: números, cadenas, clases… Incluso el propio entorno de desarrollo y los métodos.
- La interacción se basa en el envío de mensajes entre objetos. Cuando tienes que sumar 1 + 2 no usas un operador, sino que envías el mensaje «+» al objeto 1 con 2 como argumento. Así de sencillo y así de potente.
- Herencia sencilla y consistente: todas las clases, salvo la raíz, tienen una única superclase, de la que heredan comportamientos y atributos; esto se conoce como «herencia simple».
- Tipado completamente dinámico: el tipo de cada objeto sólo se conoce en tiempo de ejecución, lo que permite una flexibilidad y dinamismo excepcionales.
- Reflexión total: los programas pueden inspeccionarse y modificarse a sí mismos durante la ejecución, lo cual facilita la metaprogramación y la adaptación dinámica.
- Basura gestionada automáticamente: el programador no debe preocuparse por liberar memoria. Smalltalk integra su propio recolector de basura, que optimiza la gestión de los objetos en memoria.
Otra característica que diferencia a Smalltalk es que lleva el paradigma orientado a objetos hasta sus últimas consecuencias, sin reservar trato especial a ningún tipo primitivo. Aquí, un número, una cadena de texto o incluso la propia clase son siempre objetos, todos interactuando a través de mensajes.
La sintaxis minimalista y natural de Smalltalk
Otra seña de identidad es su sintaxis atomizada y extremadamente simple. Smalltalk cuenta únicamente con seis palabras reservadas: self, super, nil, true, false y thisContext. El resto es pura semántica orientada a objetos y envío de mensajes. Esto hace que escribir código en Smalltalk sea lo más parecido posible a redactar en lenguaje natural, lo que le ha conferido fama de amigable, sobre todo para quienes están empezando o buscan flexibilidad.
- Se define muy poca sintaxis adicional: el código se organiza en métodos dentro de clases, cada método responde a ciertos mensajes (la “interfaz” pública).
- No hay puntos y comas ni paréntesis innecesarios, salvo donde estrictamente son imprescindibles.
Un ejemplo típico en Smalltalk sería enviar el mensaje show al objeto Transcript con el texto que queremos mostrar:
Transcript show: '¡Hola, Mundo!'.
O, para sumar dos números, simplemente:
1 + 2
Aquí, el mensaje «+» se envía al objeto 1 con el argumento 2 (ambos números son objetos en sí).
La estructura interna: objetos, clases y métodos
En Smalltalk, el universo se compone de objetos y cada uno pertenece a una clase. Las clases, a su vez, son también objetos especiales denominados metaclases. Cada objeto tiene atributos propios y puede recibir mensajes, lo que le permite ejecutar métodos concretos.
- Objetos: Son las entidades básicas. Pueden representar conceptos reales (una persona, un vehículo) o abstractos (una colección, un evento).
- Clases: Definen el “molde” del que se generan objetos. Especifican los atributos y los métodos que tendrán las instancias (objetos concretos).
- Jerarquía de clases: Smalltalk utiliza herencia simple, es decir, cada clase tiene una única superclase. Si una clase no encuentra un método propio al recibir un mensaje, lo busca en la superclase, y así sucesivamente hasta llegar a la raíz.
- Métodos: Son los bloques de código asociados a una clase. Cuando un objeto recibe un mensaje, ejecuta el método correspondiente.
A modo de ejemplo, una clase Contacto podría tener métodos para añadir, buscar o modificar contactos, y atributos como nombre y teléfono. Definirlo en Smalltalk es un proceso directo y orientado a objetos de principio a fin, como veremos después.
El entorno de desarrollo y la experiencia interactiva
Uno de los puntos fuertes de Smalltalk reside en su entorno de desarrollo integrado (IDE) completamente interactivo. Aquí el desarrollador puede:
- Escribir código y modificarlo en tiempo real
- Probar y depurar funciones instantáneamente
- Utilizar herramientas avanzadas de inspección, testing, navegación y gestión de clases y métodos
El propio entorno está construido usando Smalltalk, lo que significa que es posible modificarlo, adaptarlo y personalizarlo — ¡incluso mientras el programa está ejecutándose! Así, Smalltalk explota las posibilidades de la reflexión y permite una productividad difícil de igualar. Quien lo ha usado como entorno principal suele coincidir en que, para tareas de prototipado, experimentación y aprendizaje de OOP, sigue siendo muy difícil de superar.
¿Qué aporta Smalltalk a la enseñanza y la industria?
En palabras del propio Alan Kay, «es más fácil enseñar Smalltalk a un niño que a un programador profesional». Esto es porque el cambio de paradigma —de la programación imperativa tradicional a la programación orientada a objetos “pura”— cuesta más de asimilar cuando uno tiene ya interiorizados otros sistemas. Pero Smalltalk ha brillado, y sigue haciéndolo, como herramienta educativa. Son numerosos los colegios y universidades que lo recomiendan para explorar los conceptos de objetos, mensajes, encapsulación, herencia y modularidad.
A nivel industrial, aunque Smalltalk no está entre los lenguajes más usados en la actualidad (de hecho, en rankings como TIOBE no suele aparecer en el top 50), mantuvo una relevancia extraordinaria en los años ochenta y noventa, especialmente en sectores financieros y de consultoría. Todavía existen desarrollos empresariales —en bancos, industria y sistemas críticos— escritos en Smalltalk y funcionando a pleno rendimiento.
La influencia de Smalltalk: dejar huella en la informática moderna
Prácticamente todos los lenguajes posteriores de orientación a objetos han bebido de Smalltalk. Java, Python, C#, Ruby, Objective-C y numerosos entornos gráficos y sistemas de depuración, testing y desarrollo continuo surgen directa o indirectamente a partir de ideas y tecnologías que debutaron en Smalltalk, como:
- El modelo de objetos y mensajes usado hoy en día por lenguajes como Ruby y Python deriva de los conceptos originales de Smalltalk.
- Las prácticas ágiles (refactorización, desarrollo incremental, test-driven development, etc.) se inspiraron en métodos y herramientas del entorno Smalltalk.
- Dialéctos y plataformas modernas como Pharo o Squeak continúan la tradición y evolución del lenguaje, con comunidades muy activas.
- Herramientas de desarrollo gráfico, IDEs avanzados y tecnologías WYSIWYG tienen su origen en el enfoque holístico de Smalltalk al diseño de software.
Reflexión, automodificación y dinamismo en tiempo real
Una de las habilidades más bestias de Smalltalk es la posibilidad de inspección, reflexión y modificación de sus propios programas en tiempo real. Esto no sólo fue pionero en su momento, sino que sigue siendo rarísimo: puedes añadir métodos, modificar atributos, redefinir clases o cambiar el entorno de desarrollo “sobre la marcha”, mientras la aplicación sigue en funcionamiento. Eso permite crear sistemas altamente maleables y con una capacidad de experimentación incomparable.
Diversidad en la implementación y plataformas actuales
Smalltalk está lejos de ser una pieza de museo. Existen muchas implementaciones vigentes y activas —algunas comerciales, otras completamente open source. Las más relevantes incluyen
- : dialecto moderno que pone el foco en investigación, innovación y facilidad de uso.
- : muy orientado a la educación, la multimedia y la experimentación.
- VisualWorks, Dolphin, VisualSmalltalk, VisualAge Smalltalk, Smalltalk/X y otras plataformas especializadas.
Cada implementación aporta matices propios en cuanto a herramientas, integración con sistemas operativos y características de desarrollo, pero todas comparten la raíz común del estándar Smalltalk-80 y la filosofía orientada a objetos pura.
Aplicaciones y ejemplos de uso
Si bien Smalltalk ya no lidera el mercado empresarial, es tremendamente útil en investigación, simulaciones, desarrollo educativo, sistemas orientados a objetos avanzados, IA y como herramienta didáctica. Además, se sigue empleando para impartir asignaturas universitarias y existe una amplia variedad de recursos gratuitos y de pago para su aprendizaje: libros, tutoriales, cursos MOOC como el ofertado por Pharo, y comunidades muy activas.
Un ejemplo clásico que resume la filosofía Smalltalk sería la creación de una clase para almacenar contactos:
Object subclass: Contacto inicializa: unNombre telefono: unTelefono email: unEmail nombre telefono email actualizaTelefono: nuevoTelefono ]
Este código refleja la esencia de la programación orientada a objetos: encapsulamiento, métodos, atributos privados y una interfaz pública clara.
Virtudes y ventajas de usar Smalltalk
- Simplicidad y consistencia: La curva de aprendizaje puede ser desafiante desde la óptica de otros lenguajes, pero la gramática y el enfoque natural hacen que, una vez interiorizado el modelo, el desarrollo sea rápido y lógico.
- Productividad y prototipado veloz: El feedback inmediato entre los cambios aplicados y su efecto al instante convierte Smalltalk en un entorno ideal para prototipos, pruebas, didáctica y experimentos.
- Flexibilidad extrema: El modelo de reflexión y la capacidad de modificar la propia estructura de los objetos permiten construir sistemas adaptativos realmente complejos.
- Amplia influencia y legado: Aprender Smalltalk es abrir una puerta a comprender a fondo la programación orientada a objetos y la filosofía detrás de los lenguajes más modernos y demandados.
La comunidad Smalltalk: activa y colaborativa
Aunque ya no sea mainstream, Smalltalk dispone de una comunidad especialmente dedicada y participativa. Encontrarás desde foros hasta recursos gratuitos, como documentación, manuales, wikis y libros (por ejemplo, «Smalltalk Best Practice Patterns» de Kent Beck, «Discovering Smalltalk» de LaLonde o la traducción de «Powerful Ideas in the Classroom» enfocada al uso educativo).
Si te interesa probar Smalltalk, puedes descargar implementaciones de código abierto como , o Cuis Smalltalk. Además, existen cursos gratuitos promovidos por la comunidad y el propio equipo de Pharo.
Smalltalk en la actualidad y ideas para el futuro
Como ocurre con tantas tecnologías adelantadas a su tiempo, Smalltalk sigue siendo muy útil para entender los pilares de la programación, inventar nuevas formas de interacción y construir software elegante y mantenible. Si quieres comprender a fondo la programación orientada a objetos y experimentar cómo sería trabajar en un entorno puramente interactivo y adaptativo, probar Smalltalk sigue siendo una decisión inteligente que abrirá tu mente a nuevos enfoques.
Tanto si ya usas Python, Java o C#, como si vienes de entornos de scripting o web, aprender Smalltalk de verdad te ayudará a pensar de otra forma, y a enfrentarte con soltura a la complejidad de los sistemas de software.
Smalltalk es mucho más que un lenguaje: es una filosofía de desarrollo, una caja de herramientas para la innovación y una escuela completa sobre cómo crear software sostenible, flexible y humano.

Expertos en software, desarrollo y aplicación en industria y hogar. Nos encanta sacar todo el potencial de cualquier software, programa, app, herramienta y sistema operativo del mercado.
