El motor analítico era una computadora mecánica digital de propósito general propuesta diseñada por el matemático y pionero de la informática inglés Charles Babbage . [2] [3] Fue descrito por primera vez en 1837 como el sucesor del motor diferencial de Babbage , que era un diseño para una calculadora mecánica más simple. [4]
El motor analítico incorporó una unidad lógica aritmética , flujo de control en forma de bifurcaciones y bucles condicionales y memoria integrada , lo que lo convirtió en el primer diseño de una computadora de propósito general que podría describirse en términos modernos como Turing completo . [5] [6] En otras palabras, la estructura del motor analítico era esencialmente la misma que ha dominado el diseño de computadoras en la era electrónica. [3] El motor analítico es uno de los logros más exitosos de Charles Babbage.
Babbage nunca pudo completar la construcción de ninguna de sus máquinas debido a conflictos con su ingeniero jefe y a una financiación inadecuada. [7] [8] No fue hasta 1941 que Konrad Zuse construyó la primera computadora de propósito general, Z3 , más de un siglo después de que Babbage propusiera el motor analítico pionero en 1837. [3]
El primer intento de Babbage de crear un dispositivo informático mecánico, el motor diferencial , fue una máquina de propósito especial diseñada para tabular logaritmos y funciones trigonométricas mediante la evaluación de diferencias finitas para crear polinomios aproximados . La construcción de esta máquina nunca se completó; Babbage tuvo conflictos con su ingeniero jefe, Joseph Clement , y finalmente el gobierno británico retiró la financiación para el proyecto. [9] [10] [11]
Durante este proyecto, Babbage se dio cuenta de que era posible un diseño mucho más general, el motor analítico. [9] El trabajo sobre el diseño de la máquina analítica comenzó alrededor de 1833. [12] [4]
La entrada, que constaba de programas ("fórmulas") y datos, [13] [9] debía proporcionarse a la máquina mediante tarjetas perforadas , método que se utilizaba en ese momento para dirigir telares mecánicos como el telar Jacquard . [14] Para la salida, la máquina tendría una impresora, un trazador de curvas y una campana. [9] La máquina también podría perforar números en tarjetas para leerlos más tarde. Empleaba aritmética ordinaria de punto fijo de base 10 . [9]
Debía haber un almacén (es decir, una memoria) capaz de contener 1.000 números de 50 dígitos decimales [15] cada uno (aproximadamente 16,6 kB ). Una unidad aritmética (el "molino") podría realizar las cuatro operaciones aritméticas , además de comparaciones y, opcionalmente, raíces cuadradas . [16] Inicialmente (1838) se concibió como un motor diferenciado curvado hacia atrás sobre sí mismo, en un diseño generalmente circular, con la larga tienda saliendo hacia un lado. [17] Dibujos posteriores (1858) muestran un diseño de cuadrícula regularizado. [18] Al igual que la unidad central de procesamiento (CPU) de una computadora moderna, el molino dependería de sus propios procedimientos internos , que se almacenarían en forma de clavijas insertadas en tambores giratorios llamados "barriles", para llevar a cabo algunas de las tareas más importantes. instrucciones complejas que el programa del usuario puede especificar. [7]
El lenguaje de programación que utilizarían los usuarios era similar a los lenguajes ensambladores modernos . Los bucles y las ramificaciones condicionales eran posibles, por lo que el lenguaje tal como se concibió habría sido Turing completo , tal como lo definió más tarde Alan Turing . Se utilizaron tres tipos diferentes de tarjetas perforadas: una para operaciones aritméticas, otra para constantes numéricas y otra para operaciones de carga y almacenamiento, transfiriendo números del almacén a la unidad aritmética o viceversa. Había tres lectores separados para los tres tipos de tarjetas. Babbage desarrolló unas dos docenas de programas para la máquina analítica entre 1837 y 1840, y un programa más tarde. [14] [19] Estos programas tratan polinomios, fórmulas iterativas, eliminación gaussiana y números de Bernoulli . [14] [20]
En 1842, el matemático italiano Luigi Federico Menabrea publicó una descripción del motor en francés, [21] basada en las conferencias que Babbage dio cuando visitó Turín en 1840. [22] En 1843, la descripción fue traducida al inglés y Ada la anotó extensamente. Lovelace , que se había interesado por el motor ocho años antes. [13] En reconocimiento a sus adiciones al artículo de Menabrea, que incluían una forma de calcular los números de Bernoulli usando la máquina (ampliamente considerada como el primer programa de computadora completo), ha sido descrita como la primera programadora de computadoras .
Al final de su vida, Babbage buscó formas de construir una versión simplificada de la máquina y ensambló una pequeña parte antes de su muerte en 1871. [1] [7] [23]
En 1878, un comité de la Asociación Británica para el Avance de la Ciencia describió la máquina analítica como "una maravilla de ingenio mecánico", pero recomendó no construirla. El comité reconoció la utilidad y el valor de la máquina, pero no pudo estimar el costo de construirla y no estaba seguro de si la máquina funcionaría correctamente después de ser construida. [24] [25]
De forma intermitente desde 1880 hasta 1910, [27] el hijo de Babbage, Henry Prevost Babbage, estuvo construyendo una parte de la fábrica y el aparato de impresión. En 1910, pudo calcular una lista (defectuosa) de múltiplos de pi . [28] Esto constituía sólo una pequeña parte de todo el motor; No era programable y no tenía almacenamiento. (Las imágenes populares de esta sección a veces han sido mal etiquetadas, dando a entender que se trataba del molino completo o incluso del motor completo). El "molino de motores analíticos" de Henry Babbage se exhibe en el Museo de Ciencias de Londres. [26] Henry también propuso construir una versión de demostración del motor completo, con una capacidad de almacenamiento menor: "quizás para una primera máquina diez (columnas) bastarían, con quince ruedas en cada una". [29] Una versión de este tipo podría manipular 20 números de 25 dígitos cada uno, y lo que se le podría decir que hiciera con esos números aún podría ser impresionante. "Es sólo una cuestión de tarjetas y de tiempo", escribió Henry Babbage en 1888, "... y no hay ninguna razón por la que (veinte mil) tarjetas no deban usarse, si es necesario, en una máquina analítica para los propósitos del matemático. ". [29]
En 1991, el Museo de Ciencias de Londres construyó un ejemplar completo y funcional del motor diferencial nº 2 de Babbage , un diseño que incorporaba refinamientos que Babbage descubrió durante el desarrollo del motor analítico. [5] Esta máquina fue construida utilizando materiales y tolerancias de ingeniería que habrían estado disponibles para Babbage, sofocando la sugerencia de que los diseños de Babbage no podrían haber sido producidos utilizando la tecnología de fabricación de su tiempo. [30]
En octubre de 2010, John Graham-Cumming inició una campaña del "Plan 28" para recaudar fondos mediante "suscripción pública" para permitir un estudio histórico y académico serio de los planes de Babbage, con miras a luego construir y probar un diseño virtual completamente funcional que luego a su vez permiten la construcción del motor analítico físico. [31] [32] [33] En mayo de 2016, no se había intentado la construcción real, ya que aún no se podía obtener una comprensión consistente de los dibujos de diseño originales de Babbage. En particular, no estaba claro si podría manejar las variables indexadas que se requerían para el programa Bernoulli de Lovelace. [34] En 2017, el esfuerzo del "Plan 28" informó que estaba disponible una base de datos con capacidad de búsqueda de todo el material catalogado y que se había completado una revisión inicial de los voluminosos libros de garabatos de Babbage. [35]
Muchos de los dibujos originales de Babbage han sido digitalizados y están disponibles públicamente en línea. [36]
No se sabe que Babbage haya escrito un conjunto explícito de instrucciones para el motor a la manera de un manual de procesador moderno. En lugar de eso, mostró sus programas como listas de estados durante su ejecución, mostrando qué operador se ejecutaba en cada paso con poca indicación de cómo se guiaría el flujo de control.
Allan G. Bromley ha asumido que la baraja de cartas podría leerse hacia adelante y hacia atrás como una función de bifurcación condicional después de probar las condiciones, lo que haría que el motor Turing fuera completo:
...se podría ordenar a las tarjetas que avancen y retrocedan (y por lo tanto que formen un bucle)... [14]
La introducción por primera vez, en 1845, de operaciones de usuario para una variedad de funciones de servicio, incluido, lo más importante, un sistema eficaz para el control por parte del usuario de los bucles en programas de usuario. No se indica cómo se especifica el sentido de giro de las tarjetas de operación y variables. En ausencia de otra evidencia, he tenido que adoptar la suposición mínima por defecto de que tanto las tarjetas de operación como las de variables sólo pueden girarse hacia atrás según sea necesario para implementar los bucles utilizados en los programas de muestra de Babbage. No habría ninguna dificultad mecánica o de microprogramación para poner la dirección del movimiento bajo el control del usuario. [37]
En su emulador del motor, Fourmilab dice:
El lector de tarjetas del motor no está obligado a procesar simplemente las tarjetas en cadena, una tras otra, de principio a fin. Además, puede, dirigido por las mismas cartas que lee y avisado por si la palanca de avance del Molino está activada, hacer avanzar la cadena de cartas hacia adelante, omitiendo las cartas intermedias, o hacia atrás, provocando que las cartas leídas previamente se procesen una vez. de nuevo.
Este emulador proporciona un conjunto de instrucciones simbólicas escritas, aunque ha sido construido por sus autores en lugar de basarse en las obras originales de Babbage. Por ejemplo, un programa factorial se escribiría como:
N0 6N1 1N2 1×L1L0T1–L0L2S0L2L0CB?11
donde el CB es la instrucción de rama condicional o "tarjeta combinada" utilizada para hacer que el flujo de control salte, en este caso hacia atrás en 11 tarjetas.
Babbage entendió que la existencia de una computadora automática despertaría el interés en el campo ahora conocido como eficiencia algorítmica , escribiendo en sus Pasajes de la vida de un filósofo : "Tan pronto como exista una máquina analítica, necesariamente guiará el curso futuro de la Siempre que se busque algún resultado con su ayuda, surgirá la pregunta: ¿mediante qué proceso de cálculo puede la máquina llegar a estos resultados en el menor tiempo ? [38]
Desde 1872, Henry continuó diligentemente con el trabajo de su padre y luego, de forma intermitente, se jubiló en 1875. [39]
Percy Ludgate escribió sobre el motor en 1914 [40] y publicó su propio diseño para un motor analítico en 1909. [41] [42] Fue elaborado en detalle, pero nunca construido, y los dibujos nunca se han encontrado. El motor de Ludgate sería mucho más pequeño (alrededor de 8 pies cúbicos (230 L ), lo que corresponde a un cubo con una longitud de lado de 2 pies (61 cm)) que el de Babbage, e hipotéticamente sería capaz de multiplicar dos números de 20 dígitos decimales en aproximadamente seis. segundos. [43]
En su obra Ensayos sobre automática (1914) Leonardo Torres Quevedo , inspirado en Babbage, diseñó una máquina calculadora electromecánica teórica que debía ser controlada por un programa de sólo lectura. El artículo también contiene la idea de la aritmética de punto flotante . [44] [45] [46] En 1920, para celebrar el centenario de la invención del aritmómetro , Torres presentó en París el aritmómetro electromecánico , que consistía en una unidad aritmética conectada a una máquina de escribir (posiblemente remota), en la que se ordenaban se podía escribir y los resultados se imprimían automáticamente.[47] [48]
El artículo de Vannevar Bush Instrumental Analysis (1936) incluía varias referencias al trabajo de Babbage. Ese mismo año inició el proyecto Máquina aritmética rápida para investigar los problemas de construcción de una computadora digital electrónica. [49]
A pesar de este trabajo preliminar, el trabajo de Babbage cayó en la oscuridad histórica, y el motor analítico era desconocido para los constructores de máquinas informáticas electromecánicas y electrónicas en las décadas de 1930 y 1940 cuando comenzaron su trabajo, lo que generó la necesidad de reinventar muchas de las innovaciones arquitectónicas de Babbage. había propuesto. Howard Aiken , que construyó la calculadora electromecánica Harvard Mark I , que rápidamente quedó obsoleta, entre 1937 y 1945, elogió el trabajo de Babbage probablemente como una forma de mejorar su propia estatura, pero no sabía nada de la arquitectura del motor analítico durante la construcción de la Mark I. , y consideró su visita a la parte construida del motor analítico "la mayor decepción de mi vida". [50] El Mark I no mostró influencia del motor analítico y carecía de la característica arquitectónica más profética del motor analítico, la ramificación condicional . [50] J. Presper Eckert y John W. Mauchly tampoco conocían los detalles del trabajo del motor analítico de Babbage antes de completar su diseño para la primera computadora electrónica de propósito general, la ENIAC . [51] [52]
Si se hubiera construido el motor analítico, habría sido digital , programable y completo según Turing . Sin embargo, habría sido muy lento. Luigi Federico Menabrea informó en Sketch of the Analytical Engine : "El señor Babbage cree que puede, con su máquina, formar el producto de dos números, cada uno de veinte cifras, en tres minutos". [53] En comparación, el Harvard Mark I podía realizar la misma tarea en sólo seis segundos. Una CPU moderna podría hacer lo mismo en menos de una milmillonésima de segundo.