Ada Lovelace y el primer código de un programa (y el primer bug)

17/1/2025
AUTOR
Colegio de matemáticas Bourbaki

Ada Lovelace nació en el año 1815 en Inglaterra y murió en el año 1852, fue hija del célebre poeta Lord Byron lo que la hizo parte de la aristocracia británica sin embargo lo más notorio de su vida estuvo alejado de la fanfarria de la realeza. Muchos historiadores la consideran la primera programadora (¡o programador!) de la historia y en este artículo les contaré un poco sobre su primer código.

Comenzaremos hablando sobre los números de Bernoulli que fueron el objetivo de Ada Lovelance al desarrollar su primer códido de un programa, estos números son complicados

Los números de Bernoulli

Supongamos que fijamos un número entero K, elevemos los primeros N números naturales a la potencia K y sumémoslos de la siguiente manera:

Un resultado fascinante descubierto por el brillante matemático alemán Johann Faulhaber dice que sin importar quién es K, existe un polinomio en la variable N tal que la suma anterior es igual a la evaluación de este polinomio en ese N. Este resultado no es demasiado difícil de mostrar sin embargo requiere alguna madurez matemática.

Además de lo anterior los coeficientes de estos polinomios llamémosles B(n) son números extremadamente interesantes conocidos como los números de Bernoulli y han atraído la atención de grandes matemáticos como Ramanujan por ejemplo. Estos números aparecen en numerosos lugares por ejemplo pueden calcularse utilizando la famosa función de Riemann.

Evidentemente utilizando la descripción que hemos dado de los números de Bernoulli, es muy complicado calcularlos pues no sabemos si existe un único polinomio que satisfaga esto, para calcular a los números de Bernoulli es necesario utilizar una complicada fórmula matemática recursiva que requiere muchos recursos computacionales. El récord actual es de aproximádamente 10 millones de ellos y requirió un trabajo no trivial hace algunos años por el equipo de Wolfram.

La fórmula que utilizó Ada Lovelace para realizar el cálculo es la siguiente en donde la primera parte es la delta de Dirac:

Notemos que esta fórmula recursiva así como muchas otras requiere un gran número de operaciones pues para llegar al número N es necesario haber llegado a los anteriores.

Charles Babbage y el diseño de Analytic Engine

Si bien es cierto que la teoría de la computación se descubriría muchos años después gracias al matemático Alan Turing, antes hubieron numerosos experimentos de antecedentes serios de la computación, un ejemplo importante es la máquina construida por el científico Charles Babbage llamada Difference Engine, esta máquina era capaz de hacer algunos cálculos no triviales.

Después de esta máquina diseñó una llamada Analytic Engine la cual era mucho más poderosa y posiblemente hubiera podido calcular hasta el número de Bernoulli 50 gracias al programa de Ada. Aunque la máquina analítica nunca se construyó en vida de Babbage, el trabajo de Ada Lovelace anticipó el concepto de programación y su visión sobre las posibilidades de las máquinas de hacer más que solo cálculos numéricos fue clave para el desarrollo futuro de la informática.

El primer código

Cuando estaban trabajando en el diseño de la Analytic Engine, Ada Lovelace le propuso a Babbage que utilizaran la máquina para calcular los números de Bernoulli con el objetivo de probar su eficacia. Él accedió y le propuso a Ada la fórmula recursiva que les mencionamos más arriba para realizar el cálculo, a partir de ahí ella redactó con increíble detalle cómo deberían de utilizarse 28 variables que debería de tener la máquina para poder realizar el cálculo. Les comparto aquí el documento original que ella propuso:

Les recomiendo mucho que revisen con cuidado esta imagen pues es muy interesante pues es perfectamente posible seguir el argumento completo incluyendo el único loop dentro de este código.

Desde mi punto de vista es extremadamente interesante cómo en este trabajo de hace más de 150 años se desarrollo el primer ejemplo de cómo los programadores construyen algoritmos necesarios para que todo lo que nos rodea sea como es.

Pueden revisar el código detallado implementado en Python en esta liga aunque también existen otros ejemplos inclusive en otros lenguajes de programación.

Referencia

Quienes deseen conocer más detalles sobre el magnífico trabajo de Ada Lovelace les recomiendo el formidable artículo e investigación del genial Stephen Wolfram.

¿Cómo aprender matemáticas y programación?

En el Colegio de Matemáticas Bourbaki enseñamos con detalle las matemáticas y las bases para que nuestros estudiantes estén listos para aprender los modelos más avanzados de Inteligencia Artificial, Ciencia de Datos y Finanzas Cuantitativas.