
A quien le guste la relación entre la prehistoria de los ordenadores y los números aleatorios le encantará echar un vistazo a Los Alamos Bets on ENIAC: Nuclear Monte Carlo Simulations, 1947–1948 [PDF] publicado en la revista IEEE Annals of the History of Computing en 2014. En el artículo se relata cómo John von Neumann, Klara Dan von Neumann, Nick Metropolis y otros utilizaron el ENIAC, el «primer ordenador moderno de la historia» para ejecutar en abril de 1948 la primera simulación de Montecarlo informatizada.
El objetivo era bastante menos inocente que calcular el valor de π o hacer cálculos meteorológicos. Era calcular mediante probabilidades lo que sucedía con miles de neutrones para estudiar reacciones nucleares y, en particular, diferentes diseños de armas atómicas.
Una idea random, pero interesante

La idea consistía en seguir neutrones virtuales y decidir gracias a los números pseudoaleatorios si se dispersaban, eran absorbidos, escapaban o producían la fisión. Si había fisión aparecían nuevos neutrones y «la fiesta continuaba».
Para generar esos números necesarios para el método de Montecarlo (en este versión, porque el método puede implementarse de muchas formas), Von Neumann utilizó el famoso método del medio del cuadrado que había inventado él mismo: tomar un número de ocho o diez cifras, elevarlo al cuadrado y quedarse con las cifras centrales. El resultado es más o menos random, aunque es sabido que resulta inadecuado para muchos propósitos. El caso es que aquí era suficiente. El generador se convirtió en una subrutina reutilizable, que según cuentan en el artículo podría ser la primera subrutina ejecutada en un ordenador, aproximadamente un año antes que las del EDSAC.
El primer intento duró diez días de dieciséis horas, aunque el ENIAC sólo produjo resultados la mitad del tiempo, principalmente por problemas de hardware. Completó 160 ciclos de 100 tarjetas perforadas sobre siete problemas y produjo a su vez más de 20.000 tarjetas perforadas. Von Neumann calificó el método un poco a lo Elon Musk: «éxito al cien por cien». En esta primera versión, parte del proceso consistía literalmente en clasificar, duplicar, eliminar y volver a introducir tarjetas perforadas que representaban neutrones.
El segundo intento ya incluyó cálculos de armas reales, como un núcleo de hidruro de uranio y una configuración llamada Zebra. Pero un error obligó a repetir uno de los cálculos. El llamado Problema número 4, relacionado con el hidruro, estaba mal planteado. El mismísimo Stanislaw Ulam escribió a Von Neumann escuetamente diciendo que «el Problema número 4 ha de repetirse, Nick ha encontrado un fallo».
El programa y su programadora
Es aquí donde aparece Klara Dan von Neumann, la esposa de Von Neumann, cuyo papel como programadora estuvo bastante eclipsado durante décadas. Tenía 35 años y una formación matemática formal bastante limitada, pero terminó programando, operando y documentando las simulaciones. El paper la sitúa como una figura central del proyecto y atribuye a su mano buena parte del código conservado.
El programa del ENIAC resulta especialmente interesante porque ya tenía buena parte de lo que hoy consideraríamos básicamente programación: saltos condicionales, bucles, índices, instrucciones, subrutinas y los datos en un mismo espacio de direcciones. La idea original era hacer los cálculos en unos 81 pasos (recuperar dato, hacer un cálculo, guardar dato…) Todavía se conserva una versión completa con unas 840 instrucciones, codificadas en 2.208 dígitos y documentadas en 28 páginas manuscritas; demuestran las buenas costumbres las de la época. Todo ello para una máquina que necesitaba una habitación especial, pesaba toneladas y todavía necesitaba tarjetas perforadas, tiene mérito.
_____
Foto: Programación del ENIAC (DP) ARL Technical Library @ Picryl.
Relacionados:
- El ENIAC, primer ordenador moderno, cumple 75 años
- Proving Ground: historia de las primeras programadoras del ENIAC
- Pioneer Programmer, memorias de una programadora del ENIAC
- Tarjetas perforadas
- Una demostración visual e interactiva del método de Montecarlo
- La evolución de los generadores de números aleatorios
- La calidad de los generadores aleatorios afecta a Montecarlo
- Richard Feynman y la explosión atómica de Trinity
- El primer ordenador del mundo
