El Lenguaje de Programación Smalltalk
Producto de un equipo liderado por Alan Kay, Smalltalk se presenta como un lenguaje orientado a objetos y tipado dinámico. Después de distintas versiones publicadas durante los años 1970, en 1980 se publica la primera versión ampliamente distribuida (Smalltalk-80) que constituyó la base del estándar ANSI ratificado en 1998.
Smalltalk surge en el contexto del programa ARPA, proyecto financiado durante los años 1960 y de donde surgen otros resultados y tecnologías (como el hipertexto, las GUI, la multimedia o Internet) que definen lo que hoy entendemos como informática. En particular, las características del lenguaje, las herramientas de depuración y el entorno de desarrollo, influyeron en el desarrollo de las modernas GUIs y los entornos WYSISYG (What You See Is What You Get).
A diferencia de otros lenguajes orientados a objetos, Smalltalk considera todos los elementos implicados en el código como objetos, sin diferenciar entre objetos y «tipos primitivos» como C++ o Java. La sintaxis de Smalltalk es minimalista y considera exclusivamente seis palabras reservadas, estando la ejecución de operaciones relacionada con el envío de mensajes. Otra característica de Smalltalk es la capacidad de un programa de acceder a su estructura y modificarla, esto es, la capacidad de un programa de automodificarse.
Aunque no fue el único lenguaje que recoge el enfoque de programación orientado a objetos presentado originalmente por Simula, Smalltalk-80 sí es el lenguaje que más éxito tiene y que por lo tanto populariza este paradigma de programación. Prácticamente todos los lenguajes posteriores que soportan orientación a objetos (Java, Python, Objective-C, etc.) han estado influidos por Smalltalk.
Debido a la importancia de los lenguajes influenciados por Smalltalk, actualmente no es muy utilizado y no aparece entre los 50 lenguajes más populares del ranking TIOBE (2021).
Smalltalk
Nacimiento:1960
Evolución: Smalltalk-71; Smalltalk-72; Smalltalk-76; Smalltalk-80; ANSI Smalltalk (1998)
Influencias de: Simula; Lisp; Logo
Influye en: Objective-C; Java; Python; Scratch