☰ Menu

05.10.2026 · Signal Titans Editorial

De las simulaciones de defensa a la arquitectura del software moderno

Cómo Kristen Nygaard y Ole-Johan Dahl pasaron de las simulaciones militares a definir la herencia de clases y la programación orientada a objetos.

Una cronología mecánica estilizada con engranajes de latón pulido y canales de vidrio ámbar que se ramifican en cintas de agua color cerceta sobre una superficie de pizarra oscura.

A finales de la década de 1950, en el Instituto Noruego de Investigación de la Defensa, Kristen Nygaard calculaba simulaciones de Montecarlo para el diseño de reactores nucleares e investigación operativa militar. Tras realizar inicialmente estos modelos de eventos discretos a mano, trasladó los cálculos a una computadora central Ferranti Mercury. Según Two Bit History, Nygaard consideraba tediosa la redacción de estos complejos modelos estadísticos y buscaba una sintaxis de lenguaje de mayor nivel para describir cómo los eventos discretos alteraban los estados del sistema a lo largo del tiempo. A principios de la década de 1960, reclutó al informático Ole-Johan Dahl para colaborar en un lenguaje dedicado. Su prototipo inicial, Simula 0, se concibió como una extensión y preprocesador para ALGOL 60.

De estaciones a corrutinas en Simula I

El diseño inicial de Simula 0 dependía de conceptos de dominio prefijados, empleando estructuras específicas denominadas estaciones y clientes para modelar redes como la salida de vuelos en aeropuertos. Sin embargo, Nygaard y Dahl advirtieron que estas estructuras rígidas limitaban la utilidad del lenguaje. Para modelar sistemas más amplios, sustituyeron las estaciones y los clientes por procesos de corrutina. En esta arquitectura, cada proceso agrupaba atributos de datos con una regla operativa capaz de suspender y reanudar la ejecución. Aunque en teoría se ejecutaban en paralelo, una cronología de avisos de eventos realizaba el seguimiento de los procesos activos. Este cambio rompió la compatibilidad con ALGOL 60. Dado que ALGOL mantenía una única pila de llamadas, el seguimiento de múltiples corrutinas suspendidas exigía gestionar de forma simultánea varias pilas de llamadas. Nygaard y Dahl dejaron la investigación de defensa para incorporarse al Centro Noruego de Cómputo con el fin de crear un compilador propio, completando el primer compilador de Simula I en 1965.

La chispa del manejo de registros

Simula I ganó adopción en las computadoras centrales UNIVAC y Burroughs B5500, pero sus creadores comprendieron que sus patrones estructurales podían extenderse más allá de la simulación de eventos discretos. El punto de inflexión decisivo llegó cuando el informático británico C.A.R. Hoare publicó un artículo titulado «Record Handling» («Manejo de registros»). Hoare proponía registros dinámicos creados durante la ejecución que pertenecían a clases de registros con nombre, comparando las denominaciones de las clases con términos como mesa o casa. Hoare introdujo a Nygaard y Dahl en los conceptos de superclases y subclases. El equipo noruego reconoció que, si los procesos heredaban de una superclase compartida, el propio modelo de procesos podía convertirse en una característica opcional en lugar de una envoltura obligatoria de primer nivel.

La estandarización de Simula 67

Esta revelación transformó a Simula en un lenguaje de programación de propósito general centrado en jerarquías de clases y métodos virtuales. En 1967, Nygaard y Dahl firmaron un contrato con el fabricante de computadoras Control Data para implementar esta especificación revisada como Simula 67. En una conferencia celebrada en junio de 1967, delegados de Control Data, la Universidad de Oslo y el Centro Noruego de Cómputo definieron la especificación del lenguaje Simula 67 Common Base Language. Posteriormente se construyeron compiladores para múltiples sistemas, extendiendo el lenguaje a usuarios de más de 23 países.

Los cimientos de la arquitectura de software moderna

Aunque hoy en día los desarrolladores rara vez escriben programas de aplicación en Simula, los primitivos estructurales establecidos por Nygaard y Dahl rediseñaron la creación de software. Los conceptos definidos en la especificación de Simula 67 —incluidas las clases, la herencia y los procedimientos virtuales— se convirtieron en la base estructural fundamental de los lenguajes orientados a objetos como C++, Java y Python, estableciendo la forma en que las aplicaciones modernas modelan los datos y estructuran el código.

Ilustración editorial generada con IA; no es una fotografía documental.

Fuente: 0b10 0b10 OOP Before OOP with Simula