miércoles, 15 de junio de 2022

Los que definieron la ciencia de la Informática (I)


Índices: Historia de la Informática

La cibernética es la ciencia que estudia los sistemas reguladores, y es la base del estudio de los ordenadores, hoy día esa palabra no se usa, se prefiere denominar a la ciencia directamente Informática, y a su aplicación Ingeniería Informática. Al ser una ciencia que nació con los ordenadores, es por tanto muy joven y fue definida por una serie de personas que son poco conocidas por desgracia, a Jobs y Gates los conoce todo el mundo, pero ellos no definieron la ciencia, Tesla es hoy día idolatrado por gente que no sabe realmente lo que hizo, pero la historia de la informática la definieron otras personas que merecen un reconocimiento, estas entradas hablarán de las que yo considero más importantes.

Alan Turing

Alan Turing (Fuente: biografiasyvidas.com)

Alan Mathison Turing nació en Londres en 1912, y falleció en 1954. Estudió matemáticas en Inglaterra y en Estados Unidos. En un momento en que no existía ningún ordenador definió teóricamente en 1936 una formalización de los conceptos de algoritmo y de computación en un artículo titulado "Acerca de los números computables", para lo que creó un artificio, una máquina universal teórica denominada máquina de Turing, gracias a este artificio junto a Alonzo Church demostraron que no se puede dar una solución universal al problema de la parada (esto es un tema muy técnico que no voy a explicar aquí). Hoy día se sigue usando la máquina de Turing en el estudio de los autómatas de proceso de lenguajes.

Como matemático teórico, estudió muchos conceptos relacionados con los algoritmos y con la idea de su automatización, y tuvo mucho interés en los códigos cifrados con varios estudios sobre la máquina de cifrado Enigma, la que usaban los alemanes para comunicaciones secretas entre las unidades combatientes y por la marina, que se emitían por telegrafía, por tanto era posible interceptarlas pero no descifrarlas.

Máquina enigma en uso, se precian los 3 rotores pero no se ve el panel frontal (fuente: Wikipedia)
 

En 1939, al poco de iniciarse la segunda guerra mundial, fue llevado a una instalación de la inteligencia militar británica ubicada en Bletchley Park (si se va por la zona visita obligada a la exposición existente). Allí trabajó en el descifrado de mensajes de la máquina Enigma, por lo que junto a su equipo comenzó a intentarlo manualmente, encontraron pautas en los mensajes que aportaron pequeños triunfos, pero muy lejos de un sistema realmente operativo. Ante eso decidió combatir el fuego con el fuego, y diseñó una máquina que pudiera luchar contra la máquina Enigma. 

Llamó a su máquina "Bombe" o bomba lógica (una máquina de uso específico para un solo propósito, por tanto no es realmente una computadora), lo abordó usando lo se denomina un algoritmo de fuerza bruta, probar combinaciones hasta acertar. Lo que hacía era a partir de un texto cifrado con la enigma, probar combinaciones de los rotores hasta encontrar un mensaje con sentido, probar combinaciones es rápido, pero había millones de combinaciones posibles (con n rotores diferentes hay (26n.n!) posibilidades, con los habituales 5 rotores nos da 1'4 millones de posibilidades, pero había más elementos para complicar el tema por lo que podía llegar a la asombrosa cifra de 158.962.555.217.826.360.000 posibilidades) por lo que su primer logro fue encontrar una forma de reducir las combinaciones, pero detectar cuando el mensaje tiene sentido era la parte más importante y la más complicada que tuvo que resolver. El primer prototipo estuvo funcionando el 14 de marzo de 1940, y en unos meses estaban funcionando hasta 200 máquinas. Como este trabajo estaba clasificado como secreto militar no se ha conocido hasta hace relativamente poco.

Bomba lógica expuesta en el museo de Bletchley Park (fuente: Wikipedia)

 

Nota: En Bletchley Park había otro equipo diferente que diseñó otra máquina denominada Colossus, diseñada para descifrar los mensajes cifrados usando otra máquina alemana, la Lorenz SZ40/42 que era usada para los mensajes de alto nivel y se transmitían por Teletipo. Diseñada por Tommy Flowers, estuvo operativo en febrero de 1944. Posteriormente la mejoró en la Colossus Mark II que empezó a operar en junio de 1944. Se llegaron a construir diez Colossus.

Tras la guerra Turing continuó con la investigación en computación, diseñó uno de los primeros computadores electrónicos programables digitales en el Laboratorio Nacional de Física del Reino Unido y poco tiempo después construyó otra de las primeras máquinas en la Universidad de Mánchester. Además, fue pionero en temas de Inteligencia Artificial, su idea más conocida es la prueba de Turing, definida en 1950, una forma de análisis del grado de "inteligencia" de un programa de ordenador, cosa inexistente en ese momento.

Aunque su contribución al descifrado de Enigma se dice que acortó la guerra en dos años, ahorrando miles de vidas, pero la sociedad inglesa del momento no era tan avanzada como pensamos. La homosexualidad era delito en ese momento, por lo que en 1952 fue procesado por ese delito, lo que le llevó a una crisis importante, a partir de ese momento publicó muy poco, y acabó suicidándose (aunque hay alguna duda sobre esto) dos años más tarde. En el año 2009 Gordon Brown, primer ministro británico, tras presiones populares se disculpó públicamente en nombre del gobierno británico por «la forma espantosa en que [Turing] había sido tratado». La reina Isabel II le otorgó un indulto póstumo en 2013.

Filmografía recomendada: Hay dos películas que se deben ver sobre el tema, "Enigma" de 2001, que trata sobre el equipo de descifrado de códigos de Bletchley Park, en esta se ven las dificultades que afrontaron aunque no se menciona a Turing y no pretende ser fiel a la historia completamente. La película que si trata sobre Turing es "The imitation Game" (El juego de imitación), que en España fué "Descifrando Enigma" y en Hispanoamérica "El código Enigma" de 2014, habla sobre su vida y su trabajo en Bletchley Park, aunque es un poco exagerada la forma de presentar a Turing y pasa de puntillas por el tema del suicidio. De manera accesoria en "Das Boot" (el submarino) de 1981 se ve de refilón la máquina, y en "U-571" del 2000 deben capturar una máquina Enigma de un submarino alemán junto al libro de claves. En "Una mente maravillosa" de 2001 se habla de descifrado de códigos, aunque no tiene que ver con Turing ni con la Enigma.

Konrad Zuse

Konrad Zuse manejando una de sus Z (fuente: zib.de)

Konrad Zuse nació en Berlín en 1910 y falleció en 1995, aunque estudió ingeniería es el primero en construir un ordenador moderno. Al final de la segunda guerra mundial los americanos y los rusos estaban en una dura pugna por ser los primeros en llegar a Berlín, y aunque es menos conocido peleaban por ser los que se llevaran a los mejores científicos alemanes. Así a Wernher von Braun se lo llevaron los americanos y a pesar de ser nazi convencido acabó dirigiendo la NASA, pero los rusos se llevaron a sus ingenieros y se adelantaron en la carrera espacial. Al no ser la informática una ciencia conocida, Zuse pasó de puntillas por los libros de historia, y hasta hace muy poco ni se le mencionaba.

Tras sus estudios de ingenieria pasa por la Ford donde destacó como dibujante y diseñador, para acabar trabajando como ingeniero en la Henschel en el diseño de aviones, la tarea más laboriosa era calcular el perfil alar, había que repetir los cálculos una y otra vez para calcular el perfil a lo largo del ala. En esa época solo se disponían del principio de los logaritmos, ya que \displaystyle \log_{a}{(x \cdot y)} = \log_{a}{x} + \log_{a}{y}, usando tablas de logaritmos y reglas de cálculo (que usaban este principio) se realizaban las multiplicaciones, cansado de esta monótona tarea dejó la empresa y se dedicó a diseñar y construir el primer computador de la historia. 

El resultado fue el Z1 que finalizó en 1938. Era una máquina mecánica movida por electricidad, una calculadora con capacidad de programación, que internamente usaba el sistema binario, se programaba usando una unidad de cinta de papel, operaba con datos en memoria y proporcionaba el resultado. Podía sumar, restar, multiplicar y dividir, más hacer una comparación, a un régimen de una operación cada 3 a 6 segundos, pero no llegó a funcionar perfectamente ya que las limitaciones del sistema mecánico lo hacían poco operativo.

 

Z1 en el salón de la casa de sus padres (fuente: assets.sutori.com)

No se desalentó, comenzó a trabajar en una versión mejorada denominada Z2, y solicitó fondos al estado para continuar sus investigaciones, pero al no ser del partido Nazi ni ver los dirigentes la utilidad real de la máquina, apenas consiguió financiación, pero siguió adelante. Abandonó su idea inicial de una máquina mecánica que le daba muchos problemas y comenzó a utilizar relés, dejó a medias la Z2 desarrollando la Z3 en 1941, versión ya operativa de la Z1 que funcionaba perfectamente. Lamentablemente los bombardeos de Berlín destruyeron tanto las máquinas como los planos, por lo que tras la guerra tuvo que empezar de cero.

Fundó la primera empresa dedicada a fabricar ordenadores en 1946, la Zuse KG, donde construyó la Z4, que se convirtió en 1950 en la primera computadora en ser comercializada, nuevamente en los libros se habla del Ferranti Mark I y del Univac I como los primeros vendidos, pero el se adelantó medio año vendiendo la máquina a la universidad de Zúrich en Suiza. Se puede ver hoy día una réplica en el museo de Múnich. La máquina era una calculadora binaria que pesaba una tonelada, usaba 2200 relés, disponía de una memoria de 500 palabras 32 bits, disponía de una unidad lectora y grabadora de tarjetas perforadas, pudiendo realizar 11 multiplicaciones por segundo. Se mantuvo en uso hasta 1959.

Le siguieron la Z5 y la Z11 de relés, y en 1955 la Z22 funcionando a válvulas y con memoria de núcleos magnéticos. La Universidad de Ciencias Aplicadas de Karlsruhe (Alemania) tiene una Z22 operativa. La Z23 de 1961 trabajaba ya con transistores.

Z22 expuesta en la universidad de Karlsruhe (fuente: Wikipedia)

 

En 1967, la empresa Zuse KG había construido un total de 251 computadoras. Ese mismo año Zuse sugirió que el universo en sí mismo es una retícula de computadoras (lo que se denomina Física computacional), publicando esta hipótesis en su libro Rechnender Raum. Por problemas financieros vendió la empresa a la Siemens y se retiró, dedicándose a su otra afición que era la pintura.

Las programadoras del ENIAC

En la segunda guerra mundial los cañones, obuses y morteros se disparaban según la distancia de tiro, el peso del proyectil, la altura donde querías que explotara y el ángulo de llegada, usando un libro con unas tablas se seleccionaban la cantidad pólvora a emplear, el ángulo de elevación y si la espoleta era de tiempo el tiempo de vuelo. Como los hombres estaban ocupados en la guerra, las mujeres calculaban estas tablas en la base militar de Aberdeen Proving Grounds en Pensilvania. El cálculo se hacía a mano, cada libro contenía unas 3.000 entradas, cada una requería hasta 750 pasos de cálculo (sencillos, sumar, restar multiplicar o dividir cantidades), por lo que compilar un libro requería millones de cálculos. Por esto a las mujeres que se dedicaban a esto se las llamaba Computers, y las reclutaban en la escuela de ingeniería de la Universidad de Pensilvania, donde existían ya máquinas auxiliares para realizar los cálculos.
 
Vista general del ENIAC (fuente: i0.wp.com)

En 1943 el ejercito financió la construcción del Electronic Numerical Integrator And Computer o ENIAC (integrador y computador numérico electrónico), diseñado por John W. Mauchly y John Presper Eckert y montado en la universidad de Pensilvania, completada en diciembre de 1945, estuvo operativa en febrero del 1946. Era un ordenador de base decimal de 27 toneladas de peso con 17.500 lámparas y 90.000 componentes adicionales, que requirió de aproximadamente cinco millones de conexiones. Podía ejecutar 5.000 sumas o 360 multiplicaciones por segundo.

Sufrió continuas modificaciones a lo largo de su vida. En 1947 fue trasladado a la base militar de Aberdeen, donde se usó en secreto hasta 1955 para calcular las trayectorias de los misiles nucleares.

La máquina estaba compuesta de una memoria principal y una serie de unidades de cálculo, cada unidad podía efectuar unas operaciones, pero había varias unidades de cada tipo. Para programarla se disponía de unos paneles con agujeros, similares a los de las centrales telefónicas de la época, mediante hilos se conectaban las memorias con las entradas y salidas de las unidades, cableando un circuito (posteriormente se reconfiguró para usar programación en memoria).

 

Programando el ENIAC (Fuente: s3.amazonaws.com)

Pondré un sencillo ejemplo. Si deseábamos ejecutar la operación consistente en multiplicar las posiciones de memoria 1 y 2, luego dividir el resultado con la posición de memoria 3, guardando el resultado en la posición de memoria 4, lo que hoy día sería M4 = (M1 + M2) / M3. Para realizarlo usaremos estas dos unidades:

  • Unidad de multiplicación A: Con las entradas 1 y 2 y una salida
  • Unidad de división B: con dos entradas para dividendo y divisor, y salidas para Cociente y Resto

Se cableaba así:

  • Memoria 1 a la entrada 1 del multiplicador A
  • Memoria 2 a la entrada 2 del multiplicador A
  • Salida del multiplicador A a la entrada dividendo del divisor B
  • Memoria 3 a la entrada divisor del divisor B
  • Salida de cociente del divisor B a la memoria 4 

Pero además hay que considerar que hasta que no ha concluido la operación anterior el resultado no aparece en su salida, por lo que hay que sincronizar las unidades para que las operaciones se ejecuten en orden, y evitar temas como la división por cero, control de desbordamientos, manejo de decimales, unos cuantos detalles, y pensar que no planteo más que un pequeño programa, sin considerar temas como saltos condicionales o bucles. Además, solo si tenías suerte no se fundía ninguna lámpara a mitad por lo que el control de errores era crítico. En la siguiente imagen se ve un programa real, tiene un aire similar a la programación ladder o por escalera de los PLC modernos.


Programa real para el ENIAC (fuente: computerhistory.org)

Para manejar todo esto se creó un equipo de 6 mujeres, las denominadas "Programadoras del ENIAC", que aparecen en las fotografías de la época. No eran modelos para las fotografías, eras matemáticas e ingenieras que se dedicaban a programar y atender la máquina. Como el nivel de secretismo era muy alto, el acceso al ordenador estaba muy limitado, por lo que primero preparaban los programas teóricos, luego preparaban los paneles, y cuando tenían el acceso los llevaban a la máquina, que ponían a ejecutar el programa, se verificaba que el "programa" era correcto, y se lanzaba el cálculo programado, que podía tardar unos minutos o varias horas.

Las chicas del ENIAC desarrollaron las bases de la programación de los ordenadores, pues no solo programaron, sino que crearon la primera biblioteca de rutinas y las primeras aplicaciones de software, incluso he leído que una de ellas diseñó la primera rutina de ordenación (aunque esto no lo tengo confirmado, y como sus programas eran secretos militares no hay demasiada información). 

Cuatro de las seis programadoras originales del ENIAC. Sostienen el mismo circuito en sus manos, la versión inicial a lámparas se redujo de tamaño en dos versiones manteniendo las lámparas, hasta llegar a la versión final con transistores (fuente: naftic.com/)
 
Las 6 programadoras fueron (figura nombre, apellido de soltera y apellido de casada):

  • Betty Snyder Holberton (1917-2001) Tras el ENIAC participó después en el UNIVAC I junto a Grace Hopper (que tendrá su propia entrada). Contribuyó en el lenguaje C-10 y participó en el desarrollo de los primeros estándares para COBOL y FORTRAN. Escribió el primer paquete de análisis estadístico que fue utilizado en el censo de los EE.UU. En 1997 recibió el premio Ada Lovelace. 
  • Betty Jean Jennings Bartik (1924-2011) formó parte del equipo que transformó el ENIAC en un ordenador con programas almacenados. Después de trabajar con BINAC y UNIVAC I, se convirtió en editora para Publicaciones Auerbach, pionera en tecnologías de la información. En 1981 ingresó en Data Decisions. En 2008 le fue concedido el premio del Computer History Museum. La Northwest Missouri State University tiene un museo dedicado a ella.
  • Ruth Lichterman Teitelbaum (1924-1986) se trasladó en 1947 a Aberdeen junto al ENIAC, donde enseñó a la siguiente generación de programadoras. 
  • Kathleen McNulty Mauchly Antonelli (1921-2006) se trasladó en 1947 con el ENIAC a la base militar de Aberdeen. En 1948 se casó con John W. Mauchly.
  • Frances Bilas Spence (1922-2012) se casó en 1947 con un ingeniero electrónico de la armada que trabajó en el ENIAC. Dejó su puesto para cuidar a su familia.
  • Marlyn Wescoff Meltzer (1922-2008)​ renunció a su puesto antes del traslado del ENIAC a Aberdeen para contraer matrimonio.

No hay comentarios:

Publicar un comentario