De Blaise Pascal a Maurice Wilkes
ALBERTO PRIETO ESPINOSA
En la conmemoración del centenario
del nacimiento de Alan Turing, muy merecidamente se han destacado las dotes de
este extraordinario personaje. Me mueve a escribir estas líneas pensar
que muchas personas erróneamente crean que la contribución europea al
desarrollo de las primeras máquinas de calcular y computadores se circunscribe
al loable trabajo de Turing; cuando ha habido otros pioneros, algunos coetáneos
a él, que también destacaron por su inteligencia e imaginación en este campo. Voy a referirme básicamente a
aspectos de ingeniería, a máquinas en sí, no a aspectos teóricos.
La historia reconoce que las primeras máquinas
de calcular, basadas fundamentalmente en ruedas dentadas y engranajes, fueron
desarrolladas en Europa, destacando las siguientes contribuciones:
- Blaise Pascal (1624) ideó y construyó la primera calculadora mecánica para sumar y restar (Pascalina). La desarrolló para ayudar a su padre que era recaudador de impuestos de la alta Normandia, nombrado por el cardenal Richelieu.
- Gottfried W. Leibnitz
(Leipzig) en 1671 concluyó una máquina
que, mediante el uso de cilindros escalonados, incluía por primera vez el producto y la división. - Charles Xavier Thomas de Colmar (Francia)
patentó
el 18 de noviembre de 1820 el Aritmómetro, que fue la primera calculadora de sobremesa capaz de realizar las cuatro operaciones básicas de forma sencilla y sin errores con resultados de hasta 12 cifras.
Mención aparte merece Charles Babbage que
ideó en 1837 su Máquina Analítica, e
introdujo conceptos fundamentales como:
- La definición de una estructura funcional para las máquinas de calcular: almacén (lo que hoy denominamos “memoria”), taller (en la actualidad “unidad aritmético-lógica”), y unidades de entrada y salida.
- La noción de programabilidad de la máquina, por medio del
encadenamiento automático de secuencias por medios
mecánicos.
En
1982 la empresa alemana GNC (Grimme, Natalis & Co.) diseña la calculadora
mecánica de sobremesa “dupla” Brunsviga,
siendo de
las más utilizadas en el mundo desde 1885 hasta la década de los 1950. En 1955 la empresa ocupaba a
más de mil personas y hasta 1957 se fabricaron más de 500.000 de esas máquinas en
varios modelos.
Dentro
de los sistemas mecánicos de cálculo que se concibieron en aquella época
conviene hacer referencia a la contribución del español Leonardo Torres
Quevedo (1852-1936). En
la línea de Babbage trabajó en la construcción de máquinas automáticas de
cálculo analógico, siendo celebre su estudio sobre “máquinas algebraicas” que
presentó en las academias de ciencias española (1893) y francesa (1900). En
la Feria Mundial de Paris de 1914 presentó una máquina (El Ajedrecista) que jugaba automáticamente un final de rey y torre
contra el rey de un oponente humano.
Siempre ganaba, pero no en un número mínimo de movimientos. El 6 de
noviembre de 1915 en la revista Scientific American se citaba a este trabajo
como "Torres and His Remarkable Automatic Device“.
Sin
lugar a dudas dos de los europeos que más contribuyeron en el desarrollo de los
primeros computadores fueron el alemán Konrad Zuse (1910-1995) y el inglés
Maurice Wilkes (1913-2010). Zuse
trabajó en la Ford Motor Company y
en la Henschel Aircraft Factory ubicadas en Berlin-Schönefeld. Su trabajo requería
realizar muchos operaciones matemáticas a mano, lo que le llevó a proyectar
sistemas automáticos de cálculo. Así, en
mayo de 1941 concluyó el Z3 que es considerado como el primer computador
controlado por programa en funcionamiento. Este computador estaba proyectado
para realizar cálculos aeronáuticos y no era de uso general, y utilizaba en su
construcción relés de telefonía. Otro hecho notable es que era entre
4 y 5
veces más rápido que el computador Mark I, concluido 3 años más tarde por Howard T. Aiken en la Universidad de
Harvard con la colaboración de IBM.
De 1943 a 1945 definió
un lenguaje de programación de alto nivel que denominó Plankalkül (“Plan de Cálculo”). Posteriormente construyó el Z4 que se convirtió en 1950 en el primer
computador comercializado del mundo (un año antes que el UNIVAC I en Estados
Unidos).
Desde un punto de vista
conceptual, la contribución de Sir Maurice Wilkes (Universidad de Cambridge) a
la arquitectura de
computadores fue fundamental. En
el verano de 1946 Wilkes asiste a un curso de verano sobre
computadores electrónicos
impartido por Mauchly y Eckert en la Moore School (Filadelfia). Estos
investigadores acababan de concluir el ENIAC, que puede considerarse como el
primer computador electrónico del mundo. Durante
esta estancia cae en sus manos el documento First Draft of a Report on the
EDVAC donde John von Neuman proponía la idea de introducir los programas en
una memoria como si fuesen datos y junto a estos (programa almacenable en
memoria). Literalmente en una noche “devora” este documento (no había por entonces
fotocopiadoras) que tenía que devolver con premura.
A
su vuelta a Cambridge concibe el EDSAC que construye en tres años y, se adelanta al EDVAC,
ya que ejecuta su primer
programa el 6 de mayo de 1949. El EDSAC es considerado el primer computador operativo
de programa almacenado. Algunas aplicaciones del EDSAC fueron:
- 1950, resolución de ecuaciones diferenciales que modelan la frecuencia de generación de genes (primer uso del computador para resolver un problema en el campo de la biología)
- 1951, obtención de un número primo de 79 dígitos.
- 1952, desarrollo del primer videojuego del mundo: el tres en raya (OXO). La salida gráfica se obtiene en una pantalla de un osciloscopio (CRT).
- 1960, recopilación de una serie de evidencias numéricas sobre las soluciones de las ecuaciones elípticas.
En 1951 Wilkes publica con David J. Wheeler y Stanley Gill el
primer libro del mundo sobre programación de computadores “The
preparation of programs for an electronic digital computer”. Personalmente
opino que la contribución más notable a la arquitectura de computadores de
Wilkes, que tuvo también lugar en 1951, fue el concepto de unidad de control
microprogramada. Supuso una alternativa para el diseño de los computadores, y
que para poner de manifiesto su ingenio paso a describir a continuación.
Una
unidad de control tradicional o “cableada” (“hard-wired”) de un computador está
constituida por componentes electrónicos interconectados (mediante cables o
conductores) que generan las señales eléctricas de control para monitorizar el
funcionamiento de los distintos elementos del sistema. Obviamente, un modelo de
computador distinto a otro requiere de una unidad de control distinta con
diferentes circuitos e interconexiones. La ejecución de una instrucción lleva
consigo la generación por la unidad de control de una serie precisa y ordenada
en el tiempo de señales de control binarias. Pues bien, la genial idea de
Wilkes consiste en sustituir la unidad de control cableada por una memoria
especializada (de control) que tenga almacenados los valores de las señales de
control. El conjunto de valores de las señales de control correspondientes a la
ejecución de una instrucción se denomina “microprograma”, diciéndose por ello
que estas unidades de control son microprogramadas.
Una unidad de control
microprogramada es como si hubiese un computador de control dentro del
computador. Podemos pasar de un computador a otro sin más que cambiar los
microprogramas almacenados en su memoria de control. Las ventajas que se
obtienen son: facilidad de diseñar e implementar nuevos procesadores, posibilidad
de que con una misma estructura hardware
se puedan emular distintas arquitecturas, facilidad de migración dentro
de una serie de computadores, y computación reconfigurable. Hablando con rigor,
cuando decimos que una persona debe de “cambiar el chip” deberíamos decir “debe
de cambiar los microprogramas”, lo cual sería mucho más sencillo de realizar.
El
concepto de unidad de control microprogramada, ha sido ampliamente adoptado por
la industria desde sus orígenes hasta la actualidad. Una gran parte de los
procesadores de uso general actuales lo utilizan, así como sistemas más
especializados como es el caso del co-procesador Reality de la Nintendo 64 o las unidades
vectoriales VU0 and VU1 de la Sony PlayStation 2.
Me
gustaría no concluir estas líneas sin relacionar la vida de Maurice Wilkes con
la de Alan Turing. Los dos fueron coetáneos, es más, estudiaron un grado en
matemáticas en la misma clase en la Universidad de Cambridge obteniendo
exactamente las mismas calificaciones. Como confesó el propio Wilkes,
posteriormente sus encuentros fueron ocasionales, eran plenamente cordiales
aunque encontraba a Alan reservado en sus maneras, existiendo cierta rivalidad
entre ellos. Turing fue un pionero de la computación teórica describiendo un
computador sobre el papel, mientras que Wilkes construyó el primer computador
operativo de programa almacenado del mundo y desarrolló conceptos de
arquitectura y métodos de programación que aún hoy día se siguen utilizando.
Otro contraste notable entre ellos: mientras Alan Turing vivió sólo 42 años
(1954), Wilkes murió con 97 (2010). Curiosamente Maurice recibió el premio Alan
Turing (considerado el Nobel de la Informática), en su segunda edición (1967).
En
mi modesta opinión, el desarrollo de los computadores se ha producido, en gran
medida, por la conjunción de: 1) la inventiva europea, 2) los
medios y recursos de los Estados Unidos
y 3) el poder de “asimilación y reproducción” asiático.
La Academia de Ciencias Matemáticas, Físico-Químicas y Naturales
de Granada, en el centenario del nacimiento de Alan Turig organiza el
ciclo de conferencias De Alan Turing a nuevos retos científicos europeos en procesamiento de la información, en la ciudad de Granada durante el mes de mayo. Más información puede encontrarse aquí.
Alberto Prieto Espinosa es catedrático de la Universidad de Granada.
No hay comentarios:
Publicar un comentario