Cuando el ENIAC aprendió a jugar a los dados para diseñar bombas atómicas
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
# Enlace permanente
Fuente: Artículo original