La programación orientada a objetos (POO) es uno de los pilares fundamentales del desarrollo de software en la actualidad. Sin embargo, entre la propia comunidad de programadores y entusiastas, existen muchas ideas erróneas sobre sus orígenes y los aportes de quienes la hicieron posible. Uno de los mitos más persistentes es la creencia popular de que Alan Kay inventó los objetos. Aunque es cierto que Kay desempeñó un papel crucial en la popularización y conceptualización de la POO, afirmar que fue el inventor de los objetos es una simplificación que oculta una historia mucho más rica y compleja. En este análisis profundo, vamos a desentrañar las verdaderas raíces de los objetos en la programación, revisando el contexto histórico, las contribuciones de otros pioneros y el impacto que sus ideas tuvieron en el paradigma que hoy conocemos.
Para entender el porqué del malentendido, primero debemos retroceder a la década de 1960 y principios de los 70, cuando Ole-Johan Dahl y Kristen Nygaard, matemáticos noruegos, estaban revolucionando el mundo con la creación de Simula. Simula no solo fue el primer lenguaje de programación orientado a objetos, sino que introdujo muchos de los conceptos que aún hoy son esenciales en esta metodología, como clases, objetos y herencia. En su trabajo, Dahl y Nygaard estaban enfocados en resolver problemas concretos relacionados con la simulación de sistemas, como la modelización de la propagación de infecciones en poblaciones. Su interés principal radicaba en crear entidades que pudieran representar objetos del mundo real y sus interacciones, encapsulando datos y comportamientos de forma organizada. Por otro lado, Alan Kay es un nombre inseparable de Smalltalk, el lenguaje de programación que aparece en la década siguiente y que llevó la programación orientada a objetos a otro nivel.
Kay fue quien realmente acuñó el término “Object-Oriented Programming” (Programación Orientada a Objetos), y su visión trascendió la mera definición de objetos para enfocarse en la comunicación a través del envío de mensajes. A través de Smalltalk, Kay impulsó un paradigma donde todo en el entorno de programación era un objeto: los números, las clases, incluso los mensajes eran tratados como objetos. Esta universalidad fue una innovación radical que permitió un nivel de flexibilidad y dinamismo sin precedentes. Sin embargo, a pesar de este avance, es incorrecto pensar que Kay fue el inventor exclusivo de los objetos. De hecho, el manual de Smalltalk-72 reconoce explícitamente a Simula como una inspiración fundamental, reflejando que el concepto de objetos, mensajes y clases eran ideas que provenían del trabajo anterior de Dahl y Nygaard.
Además, en un artículo emblemático de Byte Magazine de 1981 que impulsó Smalltalk y la POO, se reconoce claramente que Simula fue el precursor en crear sistemas orientados a objetos. Esto pone en perspectiva que la comunidad que rodeó a Smalltalk no trabajaba en aislamiento, sino sobre la base de conceptos ya desarrollados anteriormente que fueron reinterpretados y enriquecidos. Uno de los factores que ha propiciado la confusión es que el propio Alan Kay, en entrevistas realizadas décadas después, llegó a afirmar que había «inventado el término objetos», lo cual llevó a algunos a asumir que también inventó el concepto. Sin embargo, estas declaraciones han sido matizadas y revisadas con el tiempo, y no se tienen como fuente primaria definitiva. Kay mismo ha reconocido que «Smalltalk no es sólo su sintaxis o su biblioteca de clases, ni siquiera es sólo sobre clases», remarcando que la idea central para él residía más en el concepto de mensajes, que en la estructura misma de objetos o clases.
Este énfasis en los mensajes, la localización y protección del estado, y el enlace dinámico extremo son parte vital del significado profundo de la POO desde la perspectiva de Kay. La evolución del concepto de objetos y mensajes muestra cómo los primeros lenguajes orientados a objetos consideraban los mensajes mucho en función de los objetos, como medios esenciales para la comunicación entre ellos. Dan Ingalls, uno de los desarrolladores clave de Smalltalk, explicaba que el lenguaje era orientado a objetos, no a funciones. Por ejemplo, cuando se evalúa una expresión como <unObjeto> + 4, esa operación es vista como el envío del mensaje «+4» al objeto, dejando que sea el objeto quien decida cómo responder. Esta propiedad refleja que el significado se determina por el objeto receptor, y no por la función misma, enfatizando un cambio radical respecto a los paradigmas anteriores.
En contraste, el diseño de Simula respondía a necesidades muy específicas como la simulación discreta de sistemas con un conjunto cerrado de objetos. En ese contexto, la mensajería dinámica no tenía la misma relevancia que para Smalltalk, donde el entorno era mucho más abierto y dinámico, y la capacidad de manejar mensajes a nivel de tiempo de ejecución se convertía en una característica clave. Smalltalk introdujo el método doesNotUnderstand, que permite que un objeto reciba una notificación cuando no existe un método capaz de responder a un mensaje particular, habilitando mecanismos de manejo de errores y extensiones de comportamiento muy sofisticadas. Este último aspecto es, quizás, uno de los mayores aportes conceptuales de Smalltalk en la evolución de la POO: la separación entre la mensajería y la implementación de objetos. Esto no sólo dotó a la programación de una flexibilidad sin precedentes, sino que abrió la puerta a la interoperabilidad entre sistemas heterogéneos.
En teoría, esta capacidad permite enviar mensajes incluso a objetos escritos en diferentes lenguajes de programación, o a instancias que residen en máquinas distintas, incluso a través de medios tan dispares como correo electrónico o SMS, algo que aún hoy en día sigue siendo una frontera muy explorada pero poco explotada en aplicaciones prácticas. La importancia del contexto y los problemas a resolver también es fundamental para comprender cómo surgió la diferencia conceptual entre Simula y Smalltalk. Mientras que Dahl y Nygaard estaban preocupados por modelar simulaciones para estudios científicos y de ingeniería, Alan Kay perseguía una visión mucho más ambiciosa ligada a la computación personal y la democratización del acceso a la informática. Kay imaginaba un ordenador personal, representado en su proyecto Dynabook, donde cada usuario pudiera explorar y modificar todos los aspectos de su máquina en tiempo real. La capacidad de enviar mensajes dinámicos a objetos y de manejar su comportamiento en tiempo de ejecución era clave para permitir un entorno controlador y maleable que no requiriera compilaciones ni reinicios constantes.
Este enfoque hacía que los objetos pudieran alcanzar un nivel de autonomía sin precedentes. Si un usuario instalaba un nuevo juego o una aplicación, no necesitaría recompilar ni reiniciar el sistema operativo, puesto que el paradigma de mensajería permitiría que un objeto aceptara y gestionara mensajes conforme a sus capacidades y contexto actuales. Asimismo, la protección de estados y el manejo local del comportamiento evitaba que errores en un módulo afectaran al sistema entero. Esta robustez y flexibilidad fueron fundamentales para que Smalltalk fuera considerado el primer lenguaje verdaderamente orientado a objetos en sentido moderno. Asimismo, la contribución de otras figuras como Adele Goldberg, Barbara Liskov, David Parnas o Bertrand Meyer es esencial para la maduración y diversificación de la POO.
Liskov, por ejemplo, introdujo el principio de sustitución que lleva su nombre, mientras Meyer desarrolló el lenguaje Eiffel, que introdujo conceptos avanzados de diseño por contrato y herencia. Estas aportaciones consolidaron el paradigma estableciendo una base teórica y práctica sobre la que se han construido gran parte de los lenguajes orientados a objetos usados hoy en día. Un aspecto interesante que surge del análisis histórico de la POO es la evolución del propio término «programación orientada a objetos». Investigaciones más recientes sugieren que Kay no fue el primero en usarlo, y que el término apareció en papers y contextos relacionados con Douglas Ross y Barbara Liskov en 1976, incluso antes de que Smalltalk fuera conocido. Esto refleja nuevamente que el paradigma nació de una confluencia de ideas y esfuerzos que tuvieron lugar en diferentes contextos y propósitos.
Este punto es crucial para comprender que no existe una única definición o autoría absoluta sobre qué es la programación orientada a objetos o quién fue su inventor. En realidad, la POO es una síntesis de múltiples visiones, problemas por resolver y aportes realizados por distintos investigadores y desarrolladores durante décadas. Tratar de encontrar una autora o autor que “inventó” algo tan fundamental es desestimar la complejidad inherente a la evolución de las ideas en la informática. Finalmente, hay que resaltar el valor educativo que tiene conocer fielmente esta historia. Al comprender que la POO no es un dogma sino una colección de conceptos y técnicas que han evolucionado en función de distintas necesidades, podemos abordar el paradigma con una mentalidad más abierta y crítica.
Esto facilita la innovación y evita que los desarrolladores caigan en debates estériles sobre cuál es el “verdadero significado” o la “forma correcta” de aplicar la orientación a objetos. En conclusión, aunque Alan Kay fue una figura fundamental que definió y popularizó la programación orientada a objetos y acuñó el importante término “Object-Oriented Programming”, la invención de los objetos y la base conceptual original se encuentra en los trabajos pioneros de Ole-Johan Dahl y Kristen Nygaard con Simula. La creatividad e innovación posterior de Smalltalk expandieron y profundizaron el paradigma hasta convertirlo en la base de la programación moderna que reconocemos hoy. Entender este legado múltiple ayuda a apreciar la riqueza histórica de la POO y a valorar la colaboración constante entre generaciones de investigadores para resolver los crecientes retos de la informática.