Nacido en el año 1791, Charles Babbage fue un matemático y científico inglés, que es considerado como uno de los pioneros de la ciencia de la computación; más concretamente sus desarrollos y proyectos deberían considerarse como computadores mecánicos. Nótese que especifico mecánicos porque hasta el siglo XX no aparecieron las primeras implementaciones de esquemas tecnológicos basados en relés electromecánicos o en válvulas de vacío, y que se catalogan comúnmente como los verdaderos inicios de la informática. Aunque todos los posibles puntos de vista en lo que respecta a quién tuvo la primicia, quién desarrolló las nociones fundamentales, etcétera, no dejan de ser corrientes de opinión, sin embargo, se suele reconocer a los matemáticos Alan Turing y John Von Neumann como los artífices conceptuales, y a científicos tales como Eckert, Mauckly, Konrad Zuse, el propio Turing, Atanassof, y un largo etcétera, como los tecnólogos que desarrollaron los ingenios, si bien si somos tal vez menos puristas no deberíamos olvidar que tanto Blaise Pascal como Gottfried von Leibniz construyeron máquinas aritméticas, y más aún, que se conservan los restos de una máquina de cómputo datada en la antigüedad griega, el mecanismo de Anticitera, de cuya construcción se sospecha que pudo originarse en alguna corriente tecnológica iniciada por Arquímedes de Siracusa, y que empleaba trenes de engranajes, así como engranajes epicíclicos, para predecir los eclipses solares y lunares, así como las posiciones de los planetas a lo largo de la eclíptica, todo ello empleando el modelo Ptolemaico de epiciclos sobre deferentes, que daba lugar a excelentes predicciones a ojo desnudo, aunque conceptualmente estuviera errado.
Charles Babbage proyectó teóricamente máquinas de cómputo movidas por un motor de vapor, basadas en engranajes, pero que no llegaron a ser construidas íntegramente. Algunos historiadores creen que esto fue debido a la dejadez y desconfianza de los organismos oficiales, que no invirtieron la suficiente cantidad de dinero en los proyectos. Sin embargo, la corriente mayoritaria encuentra como la causa de la no finalización de ellos al mal entendimiento entre el proyectista (Babbage) y el constructor, así como el hecho de que los engranajes de aquel entonces se deformaban con el calor de la fricción y esto repercutía en el mal funcionamiento de las partes desarrolladas.
Los dos ingenios de mayor relevancia que diseñó Babbage fueron la máquina diferencial o máquina de diferencias, y la máquina analítica.
La máquina diferencial trataba de resolver un problema operativo de aquel entonces, que consistía en la dificultad y tediosidad de la tabulación de funciones matemáticas, como por ejemplo los logaritmos o las funciones trigonométricas, para su empleo con un fin científico o en la ingeniería. En aquellos tiempos dicha tabulación se efectuaba mediante cálculo manual, existían para ello operarios, que no podían ser tan eficaces y rápidos como una máquina que desarrollase una rutina de cálculo.
La fundamentación matemática de la máquina diferencial es el método numérico de interpolación de Lagrange, no en su expresión según polinomios de Lagrange sino según polinomios basados en diferencias finitas, es decir, empleando la notación de Newton. El problema de la interpolación de Lagrange consiste en buscar el polinomio de un cierto grado que pasa por unos puntos dato y que por tanto les da solución de continuidad. Las funciones matemáticas de variable compleja que admiten expansión en serie de potencias se denominan funciones analíticas u holomorfas, y tienen la propiedad de “variar suavemente” en cada punto de su dominio de definición. Aparte de esto, si las particularizamos para la recta real, entonces como es lógico admiten desarrollo en serie de Taylor, y nos basta con conocer un conjunto finito y/o numerable de números reales, las derivadas de órdenes sucesivos en un punto de la recta real, para conocer todo el pasado y el futuro de dicha particularización real. Es decir, las particularizaciones reales de funciones complejas holomorfas varían suavemente y son totalmente predecibles a partir de un conjunto numerable de valores. ¿Son analíticas las funciones que modelan el comportamiento de la naturaleza?. La respuesta a esto es no. Pondré algunos ejemplos: tanto la variación temporal del consumo energético, como la evolución temporal de la bolsa, como las señales eléctricas radiadas por una antena, son funciones no analíticas. Se pueden generar modelos predictivos, inclusive lineales, para predecirlas a corto plazo, pero nunca se obtiene un modelado exacto debido a su impredicibilidad inherente. Por muy complejos y buenos que desarrollemos los modelos, nunca jamás llegaremos a predecir con exactitud el futuro, ahí reside precisamente el encanto del universo. Ahora bien, aunque no podamos emular el comportamiento de la maquinaria universal mediante funciones que se adapten a sus variables, sí podemos sin embargo ajustar polinomios a dicho comportamiento y así tendremos un medio para avanzar en la investigación científica. Es esta la razón del interés que hubo siempre en las tabulaciones de polinomios, que aproximan funciones más complejas, en ciertos intervalos de interés. Charles Babbage era consciente de este estado de cosas, y ésta fue su motivación para su máquina de diferencias.
Básicamente, el algoritmo que implementaría la máquina de diferencias era el que sigue: se partía de unos valores conocidos para la ordenada del polinomio a tabular y correspondientes a ciertos valores de abscisa. Estos valores se podían calcular empleando el método de Lagrange para diferencias finitas (método de Newton), de forma manual con lápiz y papel. Entonces ya dispondríamos de un punto de partida para nuestra calculadora, pues una vez ingresados dichos valores en las correspondientes columnas de engranajes, así como las diferencias finitas que los relacionan, la máquina diferencial, al mover una manivela, ya se encargaría de ir computando los valores de ordenada para abscisas consecutivas a las de entrada. Para ello la máquina diferencial la única operación aritmética que emplea es la suma, dado que con esta simple operación nos podemos ir moviendo en la tabla de diferencias finitas asociada al problema para ir calculando los valores de las diferencias finitas de cada orden, así como los de las ordenadas. La propiedad matemática subyacente que permite este proceder es el hecho de que cualquier polinomio de grado N tiene diferencias finitas de orden N+1 igual a 0, y por lo tanto de orden N iguales a una constante, para todos los saltos entre ordenadas. Es esta constante la que la máquina de diferencias suma en un primer paso para obtener la nueva diferencia de orden N-1, y una vez obtenida ésta, es la de orden N-1 la que suma para obtener la de orden N-2, y así hasta llegar a la nueva diferencia de orden 0, que es el valor de la ordenada para la nueva abscisa. Por cada pasada de la manivela se calcularía un nuevo valor de ordenada, y eso llevaría implícitas todas estas operaciones que acabo de describir. De esta forma, dado un punto de partida conferido mediante un conjunto limitado y pequeño de valores y sus diferencias correspondientes, que conforman una parte pequeña de la tabla de diferencias finitas final, se llega a obtener la tabla de diferencias total para todos los puntos de abscisa dato que se quiera, con las limitaciones del tamaño de la máquina.
Por lo que respecta a la máquina analítica, ésta se corresponde con una idea más ambiciosa de Babbage, y que en síntesis se podría describir como una máquina de propósito general. Al igual que la máquina diferencial, no llegó a ser construida en su totalidad en vida de Babbage, y su motor sería una máquina de vapor. En la máquina analítica encontramos ideas pioneras de la arquitectura actual de los ordenadores, o al menos similares. Así, la máquina analítica poseía dos partes principales, a saber: el molino, que sería equivalente a la actual UCP de los computadores, y el almacén, en paralelismo a la memoria de los mismos. Para difundir sus ideas de la máquina analítica, así como para diseñar los programas, Babbage contó con la colaboración de la única hija legítima del poeta romántico inglés Lord Byron, la condesa Lady Ada Lovelace (cuyo nombre recibe en su honor el lenguaje de programación ADA, basado en el lenguaje Pascal). Ada Lovelace recibió una exquisita formación científica para aquellos tiempos, en concreto su profesor de matemáticas fue el mismo Augustus De Morgan (el artífice de las leyes lógicas de De Morgan), el primer profesor de la Universidad de Londres. Ada describió a la perfección el funcionamiento de la máquina analítica, ayudando así a difundir las ideas del inventor, pero incluyendo además sus propias ideas acerca del asunto, y por si esto fuera poco, además describió la manera en que serían implementados los algoritmos en dicha máquina, como por ejemplo el algoritmo para calcular los números de Bernoulli; por lo que es considerada como la primera programadora de la historia, si bien como ya expresé más arriba, la máquina analítica nunca llegó a ser implementada.
Babbage desarrolló otros inventos en vida, fue profesor de matemáticas de la Universidad de Cambridge, rompió la cifra polialfabética Vigènere (lo cual fue un secreto de Estado durante mucho tiempo), e incluso diseñó una máquina impresora, la cual estaría conectada con la máquina analítica. Por todo ello, se podría considerar como un verdadero pionero de la informática, así como una figura eminente en el terreno de las matemáticas.
En cuanto a las máquinas diferencial y analítica, si bien en vida de Ada y Babbage no fueron construidas, muy recientemente, en concreto en el año 1989, el Museo de Ciencias de Londres decidió averiguar si los esquemas de Babbage no estaban errados y si se podría construir efectivamente una máquina diferencial con dichos diseños, usando para ello las tolerancias constructivas de su época. Al final, sí se pudo desarrollar esta idea y de hecho en dicho Museo se pueden observar un modelo de máquina diferencial, así como un modelo de la máquina impresora de Babbage, ambas con perfecto funcionamiento.