Las máquinas de Babbage

Por Colaborador Invitado, el 4 marzo, 2021. Categoría(s): Historia • Ingeniería • Matemáticas • Personajes

Charles Babbage (1791-1871) es considerado por muchos como el “padre del ordenador”, o más bien como el “abuelo”, reservando la paternidad directa para Alan Turing (sin olvidar el destacado papel de nuestro Leonardo Torres Quevedo y su aritmómetro electromecánico, aunque el aritmómetro no era en realidad una máquina programable, así que era más bien una calculadora que un ordenador).

Babbage inventó la primera computadora programable, la Máquina Analítica, cuyo precedente directo es la Máquina Diferencial, diseñada también por él mismo. En ambos casos se trataba de computadoras mecánicas, que realizaban sus operaciones moviendo ruedas y engranajes.

Toda esta maquinaria requería una gran cantidad de energía, proporcionada por una máquina de vapor, para realizar sus movimientos (computing by steam); no olvidemos que estamos todavía en la primera mitad del siglo XIX, y todavía no se ha dominado la electricidad como fuente de energía. Además de la cuestión de la fuente de energía, estaba la cuestión del ajuste y desgaste mecánico de las piezas: imagina un reloj de precisión, y ahora imagina que ese reloj tiene tantos miles de piezas como para llenar una habitación entera, un laberinto de engranajes, ¡una verdadera locura!

Aunque los ingenios de Babbage eran mecánicos y poco manejables, su arquitectura conceptual anticipa las ideas esenciales de un ordenador electrónico moderno: separación de datos y programa, unidad de control capaz de realizar saltos condicionales, unidad de memoria para almacenamiento temporal de resultados, y unidad de entrada/salida de datos.

Las máquinas de Babbage nos parecen hoy día sorprendentes y prodigiosas, porque hemos asociado estrechamente la computación y los ordenadores a la electrónica. Pero lo cierto es que la esencia de la computación no está en la electrónica y las máquinas de Babbage nos lo recuerdan una vez más. Turing lo expresa con lucidez en 1948, posiblemente refiriéndose a su experiencia con la “maquinaria humana” que descifraba los mensajes secretos alemanes en Bletchley Park [1]:

Un hombre provisto de papel, lápiz y goma de borrar, y sujeto a disciplina estricta, es en efecto una máquina [computadora] universal.

La Máquina Diferencial: cómo hacer cálculos con engranajes

En la época de Babbage, las tablas matemáticas impresas (tablas de logaritmos y tablas trigonométricas) eran calculadas por computadoras humanas; en otras palabras, a mano. Estas tablas eran fundamentales para la navegación, la ciencia y la ingeniería. Se sabía, sin embargo, que se cometían errores por fatiga o aburrimiento, tanto en la transcripción de los datos como en el cálculo de resultados, o incluso en el momento de imprimir las tablas.

Ya en Cambridge, en 1812, tuvo su primera inspiración en el camino hacia la computación automática [2]. Estaba sentado en sus habitaciones, reunido con la Sociedad Analítica, la que había creado con Herschel y Peacock, mirando una tabla de logaritmos, que sabía que estaba llena de errores, cuando se le ocurrió la idea de computar los valores tabulados de las funciones por medio de algún tipo de ingenio mecánico semejante a las máquinas calculadoras capaces de sumar y restar, como las realizadas por Blaise Pascal (pascalina, 1642) y Gottfried Leibniz (rueda de Leibniz, 1672).

Pascalina (1642) y Rueda de Leibniz (1672)

En Francia se había inventado un nuevo método para producir las tablas logarítmicas y trigonométricas. Tres o cuatro matemáticos profesionales de alto nivel decidían cómo calcular las tablas, otra media docena dividía las operaciones en etapas más simples, y el grueso del trabajo de cálculo en sí, que se limitaba a operaciones de suma y resta, era realizado por un gran número de calculadores humanos que no necesitaban conocer más que estas dos operaciones aritméticas elementales.

Por primera vez, la producción en masa se aplicaba a la aritmética, y Babbage, que conocía este trabajo, tuvo la idea de que el trabajo de los calculadores humanos no cualificados podría ser asumido completamente por maquinaria más rápida y fiable [2]. Observemos que esta división del trabajo de computación es una aplicación directa del “principio de Babbage” que expliqué anteriormente.

La idea cristalizó en torno a 1822 en el diseño de la Máquina Diferencial (Difference Engine), construida para calcular automáticamente series de valores de funciones polinómicas. Utilizando el método de diferencias finitas, era posible evitar la necesidad de multiplicar y dividir, y realizar así todos los cálculos solo con sumas y restas.

Durante más de diez años recibió fondos públicos para su proyecto y los sucesivos prototipos, que lograron algún modesto éxito. No obstante, Babbage no llegó nunca a construir una máquina completa y funcional, en buena medida porque su perfeccionismo lo llevaba a introducir continuas modificaciones en el diseño. Finalmente, el Gobierno perdió la confianza en él, se canceló la subvención, y Babbage abandonó el proyecto hacia 1834. Años más tarde (1847-1849) produjo dibujos detallados para una versión mejorada, la Máquina Diferencial Nº 2, pero en esta ocasión ya no recibió fondos del gobierno británico. Babbage nunca perdonó al gobierno por no seguir financiando sus proyectos (y eso que había recibido el equivalente al presupuesto de construcción de dos buques de guerra).

La máquina completa habría estado compuesta por unas 25.000 piezas, con 2,4 m de altura y un peso superior a 13.600 kg. En 1991 se construyó una versión operativa a partir de los planos originales de la Máquina Diferencial Nº 2 (aquí se puede ver una demostración del fascinante funcionamiento de la misma). Construida con tolerancias alcanzables en el siglo XIX, realizó su primer cálculo en el Museo de la Ciencia de Londres, devolviendo resultados correctos con 31 dígitos de precisión. Todo un éxito que indicó que la máquina de Babbage habría funcionado de haber sido completada en su momento [3].

Réplica de la Máquina Diferencial construida según diseño de Babbage, Museo de la Ciencia de Londres

La Máquina Analítica: la primera computadora programable

Tras el abandono del proyecto de la Máquina Diferencial, Babbage se embarcó a partir de 1837 en un nuevo proyecto: la Máquina Analítica (Analytical Engine), que con razón es considerada la primera computadora programable de la historia [4]. Con ella comienza la transición de la simple aritmética mecanizada a la computación de propósito general en toda regla, y a ella se debe principalmente la consideración de Babbage como pionero de la informática.

La mayor innovación que incorporaba –y la clave para considerarla una verdadera computadora– fue la posibilidad de ser programada mediante tarjetas perforadas, siguiendo la inspiración del telar mecánico programable inventado por Joseph Marie Jacquard en 1801, que también funcionaba accionado por una máquina de vapor [5]. Este artilugio era capaz de tejer los patrones de dibujo en la tela conforme a las instrucciones grabadas en las tarjetas, permitiendo así elaborar complejos diseños de modo mecánico. Sin ir más lejos, Babbage exhibía en su casa un retrato del propio Jacquard tejido con su telar usando más de 24.000 tarjetas perforadas.

Telar de Jacquard, Museo de la Ciencia y de la Industria, Manchester (Inglaterra)

El programa de la Máquina Analítica podía incluir control secuencial, ramificación condicionada y bucles de repetición, que son los tres elementos fundamentales de la programación estructurada moderna. Además, podía usar como entrada los resultados de los cálculos precedentes, es decir, era una máquina con memoria, por rudimentaria que esta fuese. Sin embargo, al contrario que hoy día, la codificación de los datos no era binaria sino decimal.

Babbage siguió trabajando en sucesivos diseños de la Máquina Analítica hasta su muerte, sin llegar a construir nunca un prototipo funcional (como ingeniero era más un inventor brillante que un buen director de proyecto). Este conjunto de diseños continuamente refinados es tan complejo y extenso que, a diferencia de la Máquina Diferencial, aún no ha podido ser implementado, aunque está en marcha un proyecto que pretende terminarla en 2021, en el 150º aniversario de la muerte de Babbage [6].

La máquina analítica, modelo incompleto de prueba, Museo de la Ciencia de Londres

Ada Lovelace, la primera programadora

No se puede hablar de la Máquina Analítica sin mencionar, aunque sea brevemente, el papel de Ada Lovelace en su desarrollo [7][8]. Augusta Ada King, condesa de Lovelace, era hija del poeta Lord Byron, el cual abandonó a su mujer y a su hija recién nacida, saliendo de Inglaterra para no volver nunca más. Su madre la animó a estudiar lógica y matemáticas, y en su educación tuvo contacto cercano con muchos de los grandes científicos de la época (Augustus De Morgan, Charles Wheatstone, Michael Faraday, y muy especialmente Mary Somerville, que ejerció durante un tiempo como tutora y mentora de Ada).

Augusta Ada King, condesa de Lovelace (1815-1852)

Babbage, a quien Ada había conocido ya en 1833, visitó Turín en 1840 para impartir un seminario sobre la Máquina Analítica. El joven ingeniero y futuro Primer Ministro de Italia, Luigi Menabrea, transcribió y publicó las notas del seminario impartido en francés. Lovelace recibió entonces el encargo de traducir el trabajo al inglés, añadiendo extensas notas bajo la dirección del mismo Babbage, que quedó impresionado por la profundidad de la comprensión que ella había alcanzado (según los estándares actuales serían sin duda considerados coautores del paper) [9]. En la abundante correspondencia intercambiada en aquellos meses de duro trabajo (sobre todo para Ada) se observa que a cada uno le preocupaba más un aspecto diferente de la máquina, de acuerdo con sus respectivas personalidades: a Babbage el hardware, a Lovelace el software, por usar la terminología moderna.

Las explicaciones de Lovelace triplican en extensión el trabajo original de Menabrea, y contienen en conjunto una aportación bastante más sustancial. Uno de los aspectos más destacables de este trabajo es que Ada Lovelace no describe la estructura física de la máquina, sino su estructura lógica y funcional, la describe en términos de lo que hace; verdaderamente está describiendo el funcionamiento de lo que hoy llamaríamos una “máquina abstracta”, que además ni siquiera había sido construida, ¡ni lo sería nunca! Podemos decir que escribía “programas imaginarios para una computadora imaginaria”, según la afortunada expresión de Sydney Padua [7]. (Esto me recuerda mis inicios en la informática: estuve meses escribiendo maravillosos programas en Basic antes de poder probarlos en un ordenador real, como imagino que ocurrió a muchos de mis contemporáneos.)

El trabajo fue publicado en 1843 [10], y en uno de sus capítulos (“Nota G”) contiene la descripción de un algoritmo que permitiría a la Máquina calcular una secuencia de números de Bernoulli. Por este logro, a menudo se la considera como la primera programadora informática. Así describe ella en ese trabajo la programación con tarjetas perforadas:

Podemos decir muy acertadamente que la máquina analítica teje patrones algebraicos como el telar de Jacquard teje flores y hojas.

Diagrama de Lovelace (aquí en alta resolución) publicado como Nota G, el primer algoritmo informático

No solo eso, sino que la misma Ada entrevió la posibilidad de utilizar la máquina para manipular entidades diferentes a los números, tales como letras, notas musicales, etc. Cien años antes de la construcción de los primeros ordenadores electrónicos, ella ya había dado el salto conceptual desde el mero cálculo numérico mecanizado (number-crunchers, trituradores de números) a la auténtica computación (manipulación de símbolos conforme a reglas bien definidas).

Además, anticipando también en un siglo los debates sobre el alcance de la inteligencia artificial, tomó partido contra la posibilidad de que las máquinas pudieran aprender por sí mismas o ser creativas:

La Máquina Analítica no tiene la pretensión de originar nada. Sólo puede hacer lo que le ordenemos que haga. Puede seguir el análisis, pero no tiene el poder de anticipar verdades o relaciones analíticas. Su competencia reside en asistirnos, poniendo a nuestra disposición aquello con lo que estamos ya familiarizados.

Esta objeción preocupó mucho a Turing, quien citaba implícitamente las palabras de Ada Lovelace en una conferencia a la London Mathematical Society en 1947 [11]:

Se ha dicho que las máquinas computacionales solo pueden llevar a cabo las tareas que se les han ordenado. Ciertamente es así en el sentido de que, si hacen algo diferente a aquello para lo que se les instruyó, entonces es que cometieron un error. (…) ¿Pero es necesario que siempre se usen así?

Más tarde, en su conocido trabajo de 1950, Máquinas computacionales e inteligencia [12], trató de refutar la que denominó “objeción de Lady Lovelace” a la posibilidad de construir máquinas dotadas de originalidad y creatividad. Allí cita de nuevo estas palabras, argumentando que si Babbage y Lovelace habían creído que no era posible que una máquina pensase o aprendiese por sí misma habría sido por “falta de evidencia para creerlo”. En mi opinión, la argumentación de Turing no es sólida y Lovelace demuestra mayor clarividencia en su objeción (escribí más extensamente sobre esto en Turing y la inteligencia de lo no computable).

¿A quién molestan los organilleros?

Charles Babbage murió sin poder ver completado el gran proyecto de su vida. No obstante, este hombre al que el lector podrá juzgar admirable por unos motivos y censurable por otros, sí obtuvo reconocimiento en su vida. Tanto, que a su muerte se extrajo su cerebro y sus dos mitades se conservan expuestas hasta hoy en dos museos distintos de Londres, en el Colegio Real de Cirujanos de Londres y en el Museo de la Ciencia de Londres.

Pero no fue igualmente popular para todo el mundo. Babbage se implicó personalmente en un buen número de campañas contra las molestias públicas causadas por los “plebeyos”. Odiaba especialmente la música callejera, y en particular la música de los organilleros, que trató de prohibir en varias ocasiones con resultados descorazonadores, porque los organilleros se vengaban reuniéndose a tocar junto a su casa hasta que llegaba la policía.

Curiosamente, un organillo es en el fondo una máquina programable, estando el programa codificado en el cilindro que contiene las púas que mueven a su vez a los macillos que repercuten en las cuerdas de piano haciéndolas sonar. No parece, sin embargo, que Babbage hubiera cambiado de opinión ni siquiera viendo a los organilleros desde este punto de vista, como ejecutores de un programa en una Music Engine.

Un organillo y detalle del cilindro con púas, su “programa”

Charles Babbage, que hoy día es conocido casi exclusivamente como pionero de la computación por sus maravillosas máquinas, diseñadas un siglo antes de la era de la electrónica, es exponente perfecto del sabio universal de la Inglaterra victoriana. Participa, junto con muchos otros, del mito del genio educado fuera del sistema, en escuelas en el campo, en pequeñas asociaciones de amigos rebeldes ante sus profesores. Su pasión por el orden y la exactitud, su destacada contribución a la revolución industrial, y su afán por la racionalización del trabajo (expresada como hemos visto en el principio que hoy lleva su nombre) son aspectos de su personalidad que están en la raíz de la concepción de sus máquinas: ingenios destinados a reemplazar al trabajador humano en las tareas que requieren menor cualificación profesional.

Charles Babbage (1791-1871)

Este artículo nos lo envía Gonzalo Génova, profesor de la Universidad Carlos III de Madrid. Aparte de mis clases de informática, también imparto cursos de humanidades en los que trato temas de filosofía de la tecnología y pensamiento crítico.

Puedes leer todos mis artículos en Naukas en este enlace. Además de usar las redes sociales de Naukas, si quieres comentar y debatir más a fondo puedes visitar mi blog De máquinas e intenciones (reflexiones sobre la tecnología, la ciencia y la sociedad), donde esta entrada estará disponible en un par de días.

Referencias y más información:

[1] Turing, A.M. (1948). Intelligent Machinery. National Physical Laboratory Report. In Meltzer, B., Michie, D. (eds), Machine Intelligence 5. Edinburgh: Edinburgh University Press, 1969. Digital facsimile viewable at http://www.AlanTuring.net/intelligent_machinery.

[2] Bowden, B.V. (1953). Faster than Thought: A Symposium on Digital Computing Machines. London: Pitman.

[3] Swade, D. (2002). The Difference Engine: Charles Babbage and the Quest to Build the First Computer. London: Penguin.

[4] Bernstein, J. (1964). The Analytical Engines: Computers, Past, Present, and Future. New York: Random House.

[5] Gross, B. (2015). The French Connection. Inventor Charles Babbage drew inspiration from an unusual source for his analytical engine. Distillations Magazine, 1(3): 10–13 (https://www.sciencehistory.org/distillations/magazine/the-french-connection).

[6] Graham-Cumming, J. (2010). Plan 28.  Building Charles Babbage’s Analytical Engine (http://plan28.org/).

[7] Padua, S. (2015). The Thrilling Adventures of Lovelace and Babbage: The (Mostly) True Story of the First Computer. New York: Pantheon Graphic Library. Este libro me ha sorprendido muy agradablemente, no por ser divertido, que lo es (al fin y al cabo, siendo un cómic era lo esperable), sino por su rigor y lo bien documentado que está.

[8] Hammerman, R., Russell, A.L., eds. (2016). Ada’s Legacy: Cultures of Computing from the Victorian to the Digital Age. Association for Computing Machinery and Morgan & Claypool Publishers.

[9] Fuegi, J., Francis, J. (2003). Lovelace & Babbage and the creation of the 1843 ‘notes’. IEEE Annals of the History of Computing 25(4):16–26.

[10] Menabrea, L., Lovelace, A. (1843). Sketch of the Analytical Engine invented by Charles Babbage… with notes by the translator. Translated by Ada Lovelace. Taylor’s Scientific Memoirs, vol. III, pp. 666-731. En Morrison, P. y Morrison, E. (eds.), Charles Babbage and His Calculating Engines. New York: Dover, 1961. (http://www.fourmilab.ch/babbage/sketch.html).

[11] Turing, A.M. (1947). Lecture to the London Mathematical Society, 20 February 1947. In Carpenter, B.E., Doran, R.W. (eds), A.M. Turing’s ACE Report of 1946 and Other Papers, Cambridge, Mass.: MIT Press (1986).

[12] Turing, A.M. (1950). Computing machinery and intelligence. Mind 59: 433-460.

Algunas charlas recomendables (en inglés)

A demo of Charles Babbage’s Difference Engine (2010)

https://www.youtube.com/watch?v=BlbQsKpq3Ak

Ursula Martin.

The Scientific Life of Ada Lovelace (2015)

https://www.gresham.ac.uk/lectures-and-events/the-scientific-life-of-ada-lovelace

Doron Swade, Sydney Padua.

Babbage, Turing, Lovelace, & the Discovery of Computation (2018)

https://www.youtube.com/watch?v=cq2x_PY43ms