Ada Lovelace y la computación hoy y en un futuro

Se cumple el bicentenario del nacimiento de Ada Lovelace, para muchos la primera programadora de ordenadores. Es un momento para conmemorarla y para revisar si la computación va por buen camino.

Valenttin

El 10 de diciembre de 1815, hace doscientos años, nació Ada Lovelace (1815-1852). Fue una matemática y escritora inglesa, hija de Lord Byron, que trabajó sobre los diseños que Charles Babbage realizó para construir un ordenador mecánico. Las notas que Ada escribió incluyen instrucciones para ser procesadas por un ordenador mecánico y están consideras como el primer algoritmo. Ada Lovelace es considerada por este trabajo como la primera programadora de ordenadores del mundo.

Sirva este artículo para ensalzar y reconocer la labor de Ada Lovelace, muy avanzada para las convenciones sociales y el nivel tecnológico de su época. Creo que tras doscientos años es un buen momento para hacer un pequeño recorrido por el mundo de la informática hasta hoy y destacar las voces críticas que consideran que el modelo de computación imperante actualmente está agotado.

Ada no sólo trabajó en los diseños del ordenador mecánico que ideó Charles Babbage sino que con sus conocimientos matemáticos quiso ir más allá. Comentó a un amigo su deseo de crear un modelo matemático sobre el funcionamiento del cerebro y el sistema nervioso, algo que nunca hizo, pero que probablemente sea la primera muestra del deseo de una persona por aplicar las matemáticas a la creación de inteligencia artificial, algo que más de cien años después se está intentando a través de los distintos modelos de redes neuronales artificiales, aprendizaje automático y el llamado ‘deep learning‘.

La lista de personas que contribuyeron al desarrollo de la informática moderna daría para escribir un libro. Quiero destacar sólo unas pocas para llegar a la persona que sentó las bases de la arquitectura que utilizan los ordenadores que utilizamos hoy habitualmente. Charles Babbage diseñó, pero nunca llegó a construir, la ‘Máquina analítica‘. Sin embargo las ideas plasmadas en su diseño fueron utilizadas posteriormente para el diseño de los primeros ordenadores. Otra figura importante fue George Boole, el padre del álgebra de Boole tan presente en la informática y que fue publicada en 1854; En 1936 Alan Turing estudia y define formalmente los algoritmos y describe la máquina que lleva su nombre. Es considerado como uno de los padres de la computación y la informática. En 1945 John von Neumann y otros colaboradores presentaron el diseño de una computadora cuya arquitectura, la arquitectura de von Neumann seguimos utilizando actualmente con algunas variaciones.

Es aquí donde deseo detenerme. La arquitectura de von Neumann define la construcción de un ordenador utilizando una unidad de control y una unidad aritmético-lógica (ambos formarían lo que hoy conocemos como microprocesador), una memoria para el almacenamiento de datos e instrucciones (programas) y los mecanismos de entrada y salida de información. Han pasado los años y los microprocesadores son cada vez mayores, más veloces y potentes, se les ha añadido memoria caché para solucionar cuellos de botella en la comunicación con la memoria RAM, la cantidad de memoria RAM se ha multiplicado millones de veces, pero en lo esencial seguimos utilizando esta arquitectura.

Fue el propio von Neumann quien avisó de las limitaciones de esta arquitectura, pero le hemos ignorado. Tal como explica en esta conferencia en YouTube el profesor de ciencias de la computación en la Universidad de Nuevo México David Ackley, John von Neumann declaró en 1948 que su arquitectura debería ser modificada en un futuro para tener en cuenta dos aspectos:

  • Deberá considerarse la longitud de la cadena de instrucciones ejecutadas.
  • Las operaciones lógicas deberán se tratadas por procedimientos que permitan las excepciones (mal funcionamiento) con una probabilidad baja pero superior a cero.

Respecto al primer punto, los actuales programas requieren la ejecución de cientos de millones de operaciones y si una sola falla el resultado puede ser fatal e impredecible. Cuantas más instrucciones a ejecutar más problemas pueden surgir en esta arquitectura.

El segundo punto se refiere a la capacidad de los sistemas informáticos (hardware y software) para ser resistentes a los fallos. Actualmente no es así. Se espera que todo funcione a la perfección. Es más, la ejecución de un paso confía en que el paso anterior no falle, que todo sea predecible, y si falla se presenta el caos, no hay plan B. ¿Recordamos ver nuestro ordenador bloqueado con un pantalla azul?

Quiero destacar dos hechos de los últimos meses:

  • iOS 9  fue lanzado el 16 de septiembre de 2015 y para muchas personas ha sido la peor actualización de iOS por los enormes problemas y fallos que han sufrido sus usuarios. Apple tuvo que lanzar una corrección (iOS 9.0.1) una semana después y como todavía daba problemas su nuevo sistema lanzó la versión iOS 9.0.2 la semana siguiente.
  • El 12 de noviembre de 2015 Microsoft lanzó la primera actualización importante de Windows 10 desde su lanzamiento. El día 21 de noviembre la tuvo que retirar y dejar únicamente la actualización original del lanzamiento de Windows 10 porque estaba generando muchos problemas a los usuarios que la querían instalar. El día 24 de noviembre, después de realizar modificaciones, relanzó la actualización prevista para el 12 de noviembre.

Estoy convencido de que tanto Apple como Microsoft tienen como empleados a algunos de los mejores profesionales de la informática del mundo. También estoy convencido de que prueban sus productos antes de lanzarlos y estoy seguro de que son enormemente rigurosos con sus controles de calidad. Sin embargo nos encontramos con fallos tan descomunales como los descritos anteriormente. Tampoco son los únicos. Otro ejemplo es la inmensidad de problemas de seguridad que presentan actualmente hardware y software. Estamos llegando a unas magnitudes tan grandes en los sistemas informáticos utilizando la arquitectura de von Neumann que resultan incontrolables.

Algunos especialistas en computación, por ejemplo el anteriormente mencionado profesor David Ackley, consideran que la actual arquitectura de computación está agotada y él propone una arquitectura que denomina ‘Robust-first computing‘, es decir, una informática construida teniendo en cuenta en primer lugar la robustez. Esta arquitectura estaría relacionada con el desarrollo de vida artificial. Se debe aclarar que se trata de una idea en sus albores y que realmente no tenemos alternativas, pero es importante empezar a plantearse alternativas a la actual arquitectura, que está agotada y cada vez presenta situaciones más caóticas.

Si observamos la naturaleza vemos que la vida se ha desarrollado teniendo en cuenta la robustez, teniendo en cuenta que pueden existir errores y fallos. Ejemplos son la capacidad que tiene los seres vivos para corregir daños en las moléculas de ADN o la plasticidad del cerebro que permite, hasta cierto punto, recrear una funcionalidad perdida construyendo nuevas conexiones neuronales. Quizás ese sea el modelo a seguir, el de la vida. Quizás en algún momento confirmaremos que el camino más adecuado hacia una computación robusta reside en la idea de Ada Lovelace de crear un modelo matemático del funcionamiento del cerebro y el sistema nervioso. Ada, feliz cumpleaños y gracias.

¿Necesitas una aplicación web a medida?

Damos solución a tus necesidades de gestión, procesos de trabajo o comunicación.

PWA: Aplicaciones Web Progresivas

El presente y futuro del desarrollo web, en 8 lecciones

Otros contenidos de Desarrollo y programación

Comentarios

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

  He leído y acepto la política de privacidad de la web *

No hay comentarios