En julio de 1943 empezó a construirse un nuevo ordenador en la escuela Moore de Ingeniería Eléctrica de la Universidad de Pensilvania, situada en Filadelfia, que marcaría un hito en la historia de la computación; se le dio el nombre de ENIAC (Electronic Numerical Integrator and Computer). Se trataba de un proyecto de máximo secreto cuyo nombre en clave era PX. El ENIAC está considerado como el primer ordenador de la historia, aunque algunos piensan que la progenitura se le debería dar a la Colossus, puesta en funcionamiento a mediados de febrero de 1944 en Bletchley Park, una instalación militar localizada en Buckinghamshire, Inglaterra. La Colossus, inspirada por el científico de la computación Alan Turing (1912 – 1984), y diseñada por el matemático Max Newman (1897 – 1984), fue utilizada para descifrar la máquina Enigma.
El ENIAC costó cerca de 8000 dólares y fue financiado por el ejército. Medía 30 metros de largo y pesaba 32 toneladas. Funcionaba con 17468 válvulas de vacío que disipaban tanto calor que la temperatura de la habitación en la que estaba ubicado podía subir fácilmente hasta los 50 ºC. Únicamente podía almacenar veinte números, pero su defecto fundamental era que para cambiar un programa era necesario reconfigurar sus circuitos, de forma muy parecida a como lo hacían las telefonistas en las antiguas centralitas, en una operación que podía llevar varios días. Otro de los problemas serios del ENIAC es que se pasaba más tiempo averiado que en funcionamiento. Aun así, el ENIAC estuvo funcionando diez años y durante ese período realizó más cálculos matemáticos de los que se habían realizado en la historia de la humanidad hasta entonces.
Von Neumann entró en contacto con el ENIAC de forma totalmente casual. El matemático estadounidense Herman Heine Goldstine (1913 – 2004) se alistó en el ejército al comienzo de la Segunda Guerra Mundial. Trabajó con el grado de teniente en el BRL, que era el laboratorio de investigación de balística de Aberdeen, en Maryland. Como especialista en la confección de tablas de tiro, era muy consciente de la urgente necesidad de automatizar los engorrosos y largos cálculos mediante la utilización de algún tipo de computador electrónico, motivo por el que aceptó el cargo de hacer de enlace entre la escuela Moore, en Filadelfia, encargada de construir el ENIAC, y Aberdeen. En el verano de 1944, Goldstine se encontró casualmente con Von Neumann en el vestíbulo de la estación de tren de Aberdeen. Debido a los numerosos compromisos que tenía con diversas instituciones gubernamentales, Von Neumann era de los pocos científicos que no estaba obligado a permanecer en las instalaciones de Alamogordo. Goldstine no le conocía personalmente, pero había asistido a varias conferencias suyas y decidió abordarle. Curiosos por naturaleza, cuando los matemáticos se encuentran tienen una fácil tendencia a interesarse uno por el trabajo del otro. La charla transcurrió sin mayor trascendencia, hasta que Goldstine le dejó caer a Von Neumann que estaba trabajando en la construcción de un nuevo ordenador. En este punto, la actitud de Von Neumann cambió y, según cuenta el propio Goldstine, le sometió a un interrogatorio de tercer grado. El calado de las preguntas le pareció propio de un experto y decidió invitarle al centro de investigaciones de Moore para ponerle directamente en contacto con los ingenieros John Mauchly y Prosper Eckert, que estaban trabajando en el diseño del ENIAC. Lo que nadie aclara en esta anécdota es cómo dos personas que estaban trabajando, cada una de ellas en sendos proyectos de alto secreto, se pusieran a hablar por los codos de sus respectivos trabajos en el vestíbulo de una estación de tren en el que acababan de conocerse.
Nada más plantarse delante de la nueva computadora, Von Neumann le preguntó a Eckert por la estructura lógica del sistema. Aquella fue una pregunta clave para que los ingenieros del ENIAC le abrieran las puertas a una colaboración que ya no cesaría hasta que acabara la guerra. Von Neumann pensó en la posibilidad de diseñar un conjunto de instrucciones que fuera un fiel reflejo de todos los pasos que se daban con papel y lápiz en la resolución de un problema y que, a su vez, este conjunto de instrucciones pudiera ser almacenado en la memoria central. Para que este conjunto de datos pudiera ingresar en la computadora, era necesario dotar a esta de una nueva unidad diferente a aquella en la que se realizaban los cálculos, de manera que por un lado se pudieran entrar indistintamente datos y programas, y por otro recoger los resultados. Al hacer esto, Von Neumann estaba configurando un concepto que hoy nos resulta muy familiar, el software.
De esta manera, en 1945, en el Laboratorio Nacional de Los Álamos se empezó a trabajar en el proyecto de un nuevo ordenador que tuviera programas almacenados.
Arquitectura de Ordenadores
Lo que actualmente se conoce como “arquitectura de Von Neumann” se corresponde con el concepto de programa almacenado. Hoy en día existen computadoras con programas almacenados, como por ejemplo una calculadora de bolsillo con la que podemos llevar a cabo una serie de complicados cálculos, pero con la que no es posible escribir un texto. En cambio, en un PC, si queremos un determinado programa de tratamiento de textos, basta con instalarlo y ponernos a trabajar. Pero no siempre fue así. Como ya se ha dicho, en las primeras computadoras, como el ENIAC, cambiar el programa significaba cambiar el diseño, para lo que había que hacer un croquis con papel y lápiz para luego cambiar el cableado de la máquina.
Von Neumann diseñó varios tipos de recableado para agilizar las operaciones en el ENIAC, pero sabía que por mucho que optimizara el sistema, no dejaría de ser siempre un apaño con serias limitaciones. La idea de Von Neumann fue que los datos del programa, que al fin y al cabo también podían expresarse en bits como ceros y unos, fueran almacenados en la memoria junto con los otros datos. Esto permitía modificar las direcciones de memoria y también los mismos programas durante su ejecución. La mayoría de las computadoras modernas se basan en este tipo de arquitectura.
Los ordenadores construidos con este tipo de arquitectura constan de cinco componentes:
La idea de almacenar las instrucciones junto con los datos tiene un antecedente en un artículo publicado en 1936 por Alan Turing en la London Mathematical Society en el que se daba una descripción detallada de lo que él llamaba la “máquina computadora universal”, un modelo teórico de computadora que actualmente se conoce como “máquina de Turing”, y que contenía tantos datos como instrucciones con una capacidad de memoria infinita. Es más que probable que Von Neumann conociera la existencia de los trabajos de Turing, ya que ambos estuvieron en contacto durante los años 1936-1937, cuando Turing estuvo en la Universidad de Princeton. Además, el proyecto ya había sido expuesto por Turing en la Universidad de Cambridge en 1935. Es cierto que ambos trabajos, tanto el de Turing como el de Von Neumann, se refieren a ordenadores con programas almacenados. Sin embargo, el trabajo de Von Neumann se publicó antes, por lo que este tipo de arquitectura lleva su nombre.