Smalltalk es un lenguaje de programación orientado a objetos que ha tenido un impacto significativo en el desarrollo de software. Desarrollado en la década de 1970 por Alan Kay, Dan Ingalls,Ted Kaehler y Adele Goldberg en Xerox PARC, Smalltalk es conocido por su sencillez y potencia. Este lenguaje ha influido profundamente en la programación orientada a objetos (OOP - Object Oriented Programming) y ha sido la base para el desarrollo de muchos otros lenguajes modernos, como Java y C#.
En este post, exploraremos la historia de Smalltalk, sus características principales, las ventajas de su uso, comentaré un poco de mi experiencia con el lenguaje y veremos su relevancia en la programación actual.
Historia de Smalltalk
El lenguaje Smalltalk fue desarrollado inicialmente en los años 70 en Xerox PARC (Palo Alto Research Center). El objetivo principal de sus creadores era crear un lenguaje de programación que fuera completamente orientado a objetos y fácil de usar. Alan Kay, uno de los pioneros de Smalltalk, visionó un lenguaje que podría ser utilizado por cualquier persona, desde niños hasta expertos en computación. La primera versión de Smalltalk, conocida como Smalltalk-72, fue seguida por Smalltalk-76 y finalmente por Smalltalk-80, que se convirtió en la versión más conocida y ampliamente utilizada.
Características Principales de Smalltalk
Orientación Total a Objetos
Smalltalk es un lenguaje totalmente orientado a objetos. Todo en Smalltalk es un objeto, incluyendo números, cadenas y clases. Este enfoque puro a la OOP facilita la comprensión y manipulación de objetos y sus relaciones. Aquellos programadores que les gusta que el lenguaje sea completamente orientado a objetos, les llaman "puristas OOP" ... levanto la mano y me uno a este grupo de "puristas".
Interfaz de Desarrollo Integrada (IDE)
Smalltalk incluye una poderosa IDE que permite a los programadores escribir, probar y depurar código de manera interactiva. Esta interfaz proporciona herramientas avanzadas de edición y depuración, haciendo el desarrollo más eficiente. En una área de la ventana (parte inferior) se puede escribir el método, que aquí se llama "mensaje", mientras se navega en la parte superior en cada componente.
Reflexión
La reflexión en Smalltalk permite que los programas inspeccionen, modifiquen su estructura y comportamiento en tiempo de ejecución. Esta capacidad es muy útil para la metaprogramación y para construir sistemas altamente flexibles y dinámicos.
Ventajas de Usar Smalltalk
Simplicidad y Consistencia
La sintaxis de Smalltalk es extremadamente simple y consistente, lo que facilita su aprendizaje y uso. Es como si se estuviera escribiendo en lenguaje natural.
Interactividad
La capacidad de modificar y probar el código en tiempo real aumenta la productividad del desarrollador y reduce el tiempo de depuración.
Comunidad y Recursos
En el índice tiobe no aparece ni entre los 50 primeros puestos al día de hoy, pero a pesar de que no es tan popular al igual que otros lenguajes modernos, Smalltalk tiene una comunidad activa y una gran cantidad de recursos educativos disponibles.
Legado e Influencia
Muchos conceptos y técnicas de Smalltalk han influenciado el diseño de otros lenguajes de programación orientados a objetos, lo que lo convierte en una excelente base para aprender OOP.
Mi experiencia con Smalltalk
Smalltalk lo aprendí en la Universidad en el año 1998 estaba cursando las materias de Lenguajes de Programación y Paradigma Orientado a Objetos, en ese tiempo ya programaba en: Basic, Turbo Pascal, Cobol y FoxPro ... estos 4 lenguajes los aprendí en el Colegio (Bachillerato) y pasar de una programación procedimental a una programación orientada a objetos fue un gran cambio, pero creó que el haber aprendido a usar Smalltalk me facilitó el camino para el aprendizaje de Java y C++ (fueron los siguientes 2 lenguajes que usé después).
De hecho, mi segundo trabajo a nivel profesional fue como Programador de Smalltalk (1999), en la academia usabamos un compilador Smalltalk/V (si mal no recuerdo) y a nivel empresarial usaba la versión IBM Visual Age for Smalltak. Estuve en este trabajo por 16 meses luego me cambié a otro trabajo que era administrativo. Pero, recuerdo bien que mis últimos cruds sencillos podía hacerlos entre 20 a 30 minutos. Cuando hacía cruds padre-hijo o más complejos me demoraba más tiempo, obviamente.
Con este lenguaje he alcanzado mis picos de productividad, he programado en otros muchos lenguajes durante muchos años pero con Smalltak era más veloz, aquí radica el porque le tengo mucho aprecio y cariño a este lenguaje.
Smalltalk al día de hoy
Como mencioné Smalltalk ha perdido popularidad a nivel empresarial, pero si usted estimado lector quiere aprender un lenguaje de programación orientado a objetos como Java, C#, C++, Python le recomiendo primero estudiar Smalltalk, la curva de aprendizaje es más rápida. En la web puede encontrar compiladores como Cuis-Smalltalk o Squeak pero me gustaría hacer una mención especial a Pharo.
Pharo.org es una iniciativa que sigo desde el año 2016,cuando me suscribí a su newsletter (aunque el proyecto empezó muchos años antes), frecuentemente me llegan noticias novedosas y muchos avances (se nota el trabajo y esfuerzo que hay detrás de cada release). Justo, hoy me llegó la invitación al MOOC "Advanced Object-Oriented Design" es un curso gratuito para aprender y/o refrescar los conceptos de programación orientada a objetos (empieza el 17 de junio), aquí la invitación en youtube y la url del curso por si acaso le gustaría tomarlo.
Conclusión
Smalltalk es un lenguaje de programación con una rica historia y una fuerte influencia en el desarrollo de software moderno. Su enfoque puramente orientado a objetos, su simplicidad y su potente entorno de desarrollo lo convierten en una herramienta valiosa para aprender y practicar la programación orientada a objetos. A pesar de la aparición de nuevos lenguajes, Smalltalk sigue siendo relevante y utilizado en varias aplicaciones industriales y educativas. Si está interesado en profundizar en los conceptos de OOP y experimentar con un lenguaje que ha dado forma a la informática moderna, Smalltalk es una excelente elección.