Mentes geniales. La vida y obra de 12 grandes informáticos

Text
0
Kritiken
Leseprobe
Als gelesen kennzeichnen
Wie Sie das Buch nach dem Kauf lesen
Mentes geniales. La vida y obra de 12 grandes informáticos
Schriftart:Kleiner AaGrößer Aa



Mentes geniales. La vida y obra de 12 grandes informáticos

Primera edición, 2021

© 2021 Camilo Chacón Sartori

© 2021 MARCOMBO, S. L.

www.marcombo.com

Diseño de la cubierta: ENEDENÚ DISEÑO GRÁFICO

Corrección: Manel Fernández y Beatriz García

Maquetación: D. Márquez

Directora de producción: M.ª Rosa Castillo

«Cualquier forma de reproducción, distribución, comunicación publica o transformación de esta obra solo puede ser realizada con la autorización de sus titulares, salvo excepción prevista por la ley. Diríjase a CEDRO (Centro Español de Derechos Reprográficos, www.cedro.org) si necesita fotocopiar o escanear algún fragmento de esta obra».

ISBN: 978-84-267-3391-7

Producción del ePub: booqlab

A mi madre, Nuri Sartori, le dedico esta obra como agradecimiento por enseñarme, a través de su ejemplo, a mantener la alegría en momentos difíciles.

ÍNDICE

PRÓLOGO

INTRODUCCIÓN

Justificaciones previas

Nota para los lectores

1. ALAN MATHISON TURING (1912-1954)

1.1 Primeros años

1.2 El problema de la decisión

1.3 Sobre lo que es computable

1.4 Inteligencia artificial

1.5 El juego de la imitación

1.6 Muerte y legado

1.7 Conclusión

1.8 Obras recomendadas

1.9 Trabajos sobre Turing

2. JOHN MCCARTHY (1927-2011)

2.1 Primeros años

2.2 El advenimiento de un nuevo término: inteligencia artificial

2.3 Lisp

2.4 Tiempo compartido

2.5 Técnicas de programación y el ajedrez

2.6 SAIL (Stanford Artificial Intelligence Laboratory)

2.7 Filosofía

2.8 Conclusión

2.9 Obras recomendadas

3. EDSGER WYBE DIJKSTRA (1930-2002)

3.1 Primeros años

3.2 Decisiones difíciles

3.3 Su vida como programador

3.4 ALGOL-60 y THE

3.5 GOTO

3.6 La programación como una disciplina matemática

3.7 EWD

3.8 Conclusión

3.9 Obras recomendadas

4. CHARLES ANTONY RICHARD HOARE (TONY HOARE) (1934-)

4.1 Primeros años

4.2 Quicksort

4.3 ALGOL

4.4 La invención de la referencia nula (NULL)

4.5 Axiomatizar la programación (lógica de Hoare)

4.6 Comunicando procesos secuenciales

4.7 Teoría unificada de la programación

4.8 Conclusión

4.9 Obras recomendadas

5. NIKLAUS EMIL WIRTH (1934-)

5.1 Primeros años

5.2 ALGOL

5.3 Pascal

5.4 Programación sistemática

5.5 Algoritmos + Estructuras de datos = Programas

5.6 Modula

5.7 Proyecto Oberon

5.8 Conclusión

5.9 Obras recomendadas

6. RICHARD MANNING KARP (1935-)

6.1 Primeros años

6.2 Optimización, heurísticas y problemas combinatorios

6.3 Los 21 problemas NP-completos

6.4 Aleatoriedad y probabilidades para diseñar algoritmos eficientes

6.5 Biología computacional

6.6 Conclusión

6.7 Obras recomendadas

7. MANUEL BLUM (1938-)

7.1 Primeros años

7.2 Complejidad computacional

7.3 Criptografía

7.4 Generadores de números pseudoaleatorios

7.5 Prueba de conocimiento cero

7.6 CAPTCHA

7.7 Consejos a los nuevos estudiantes de posgrado

7.8 Conclusión

7.9 Obras recomendadas

8. DONALD ERVIN KNUTH (1938-)

8.1 Primeros años

8.2 ALGOL

8.3 Programación estructurada

8.4 El debate sobre GOTO

8.5 El arte de la programación

8.6 TeX y METAFONT

8.7 Análisis de algoritmos

8.8 Conclusión

8.9 Obras recomendadas

9. BARBARA LISKOV (1939-)

 

9.1 Primeros años

9.2 Diseño de sistemas

9.3 Una crítica a ALGOL

9.4 CLU y el tipo abstracto de dato (TDA)

9.5 Argus y los sistemas distribuidos

9.6 Tolerancia a fallos

9.7 Subtipos (la sustitución de Liskov)

9.8 Conclusión

9.9 Obras recomendadas

10. LESLIE LAMPORT (1941-)

10.1 Primeros años

10.2 Su inicio en la industria

10.3 El algoritmo de la panadería

10.4 Su trabajo más popular

10.5 El problema de los generales bizantinos

10.6 LaTeX

10.7 Paxos

10.8 TLA+

10.9 La distinción entre algoritmo y programa

10.10 Conclusión

10.11 Obras recomendadas

11. MICHAEL STONEBRAKER (1943-)

11.1 Primeros años

11.2 INGRES

11.3 Postgres

11.4 Nuevos tipos de bases de datos

11.5 Bases de datos relacionales y no relacionales

11.6 Big data

11.7 Conclusión

11.8 Obras recomendadas

12. TIMOTHY «TIM» JOHN BERNERS-LEE (1955-)

12.1 Primeros años

12.2 La invención de la World Wide Web (WWW)

12.3 El ecosistema de la web

12.4 El consorcio W3C

12.5 Web semántica

12.6 Noticias falsas (fake news) y Solid

12.7 Conclusión

12.8 Obras recomendadas

EPÍLOGO: SOBRE LA GENIALIDAD Y ALGUNAS LECTURAS RECOMENDADAS

AGRADECIMIENTOS

REFERENCIAS

PRÓLOGO

La informática se ha extendido en el siglo xxi. Se aprecia, con cierta nostalgia, en los grandes logros del siglo pasado. Las personas, sus obras y cómo todas ellas en conjunto dieron forma a lo que conocemos en la actualidad: artefactos computacionales construidos con una delicada armonía entre el software y el hardware. Ya no solo contamos con ordenadores clásicos, también podemos acceder a ordenadores cuánticos que nos ayudan a resolver problemas específicos. Pero todo ello se lo debemos a una persona.

Por este motivo es que, en mi afamado libro anterior «El más grande informático de la primera mitad del siglo xxi» (2049), que nunca escribí y que tampoco fue afamado, traté la vida y obra del más relevante informático de la actualidad. La persona que dio un giro de 360° a todo el campo. Sin embargo, posteriormente a su publicación he recibido un sinnúmero de e-mails de lectores molestos conmigo por haber tenido la osadía y el descaro de omitir a los informáticos que lo precedieron, quienes, con justa razón, fueron la piedra angular de su obra. No mencioné a quién leyó y por quién fue influenciado. En cambio, solo me dediqué a describir sus logros como si la informática hubiera nacido con él. Grave error. Pues bien, este libro es una forma de redimirme con mis lectores. Viajaré, pues, al siglo xx, cuando la informática nació, y conoceremos a algunos de los grandes personajes que influyeron, inspiraron y dieron forma al área1.

Antes bien, debo confesarle algo, y es que, hace muchos años, me di cuenta de que para profundizar en la informática, debía aprender sobre la historia de esta. Porque es necesario un contexto previo. Para ello hay al menos dos caminos. Uno es simplemente leer los libros de historiadores que se dedican a estos menesteres; y otro es a través de la vida de las personas que la crearon. Cualquiera de las dos maneras es respetable. Así, en este libro he querido seguir el segundo camino porque he advertido que no existe nada similar en español.

Ha sido un trabajo grato; es más, he conocido con mayor profundidad a personas de las que solo sabía sus nombres por el uso de la herramienta que crearon. Saber sus anécdotas, dificultades y cómo se gestó su obra fue maravilloso e inspirador.

Recuerdo que en mi primer libro —publicado casi tres décadas atrás, en el año 2021— titulado Computación y programación funcional2, reparé en esta falencia. Por ello, en él quise dar un contexto histórico sobre los aspectos técnicos que se enseñan. Sin esto, un profesional carece de profundidad para entender por qué y cómo evoluciona su área de estudio. Es, en definitiva, esta obra una forma de continuar la senda trazada en ese libro. Espero disfrute la lectura.

Camilo Chacón Sartori

En alguna cafetería de Barcelona, España.

Junio del 2050

________

1. Con esto espero ya no tener que mover ningún otro e-mail a mi carpeta spam.

2. Publicado por Marcombo, enero del 2021. https://www.marcombo.com/computacion-y-programacion-funcional-9788426732439/

INTRODUCCIÓN

¿Quién acuñó por primera vez el término inteligencia artificial? ¿Quién fue el legendario informático que se negó a usar un ordenador al final de su vida? ¿Quién escribió uno de los artículos más populares de la historia de la informática a través de una metáfora? ¿Quién diseñó uno de los sistemas informáticos que usamos cada día en el móvil? ¿Quién fue la mujer que logró el más alto reconocimiento por sus aportes al desarrollo de software? Esta y muchas otras preguntas responde este libro. Un viaje hacia el núcleo de la informática, las ideas, las contribuciones, las personas que dieron origen a gran parte de lo que conocemos en tecnología.

Todos ellos ganadores del «nobel de la informática», el Premio Turing (entregado por ACM)3. Excepto uno, el que lleva el nombre del premio: Alan Turing. Historias de creatividad, voluntad y perseverancia. Sus vidas, sus anécdotas y sus principales contribuciones intelectuales son presentadas en este libro en un lenguaje ameno, sin caer en excesivos tecnicismos.

Nadie había reparado en tratar el tema de los grandes informáticos de la historia en nuestra lengua. Quizá por ser un área aún nueva, quizá porque muchos de los personajes hicieron su obra en inglés o quizá, simplemente, no se había dado la oportunidad. Aparte de los motivos, era algo que hacía falta, pues un área que omite a las personas que la forjaron es similar a renunciar a su propia historia, no es admisible, ya que, para ser mejores profesionales, debemos conocer la historia de nuestro campo. Esa es la premisa de este libro.

Esta obra trata sobre una historia de la informática o computación contada a través de grandes personajes que la dieron forma, en particular de las personas que hicieron sus aportes luego de la aparición de los primeros ordenadores digitales; a través de sus ideas, creatividad, voluntad, perseverancia y, por qué no decirlo, también de su suerte. Entre ellos hay creadores de lenguajes de programación, una pieza que es fundamental para entender la informática. Por otro lado, tenemos personas que inventaron algoritmos, algunos muy sofisticados, otros muy simples, pero no por ello menos efectivos. Además, tenemos algunas personas que trabajaron en componentes complejos, a saber, de inteligencia artificial, sistemas distribuidos, gestores de bases de datos y criptografía.

Cada uno con una historia, en algunos casos se entrelazan ya sea por tiempo o espacio, pues todos ellos son personas que hicieron su carrera durante el siglo xx (en concreto en la segunda mitad), en su mayoría en EE. UU., e incluso, en algunos casos, llegaron a colaborar. Sin embargo, debo señalar que en cualquier parte pueden surgir grandes voluntades; solo se deben dar las condiciones necesarias.

A continuación, doy una breve reseña de cada uno de los personajes que están presentes en este libro, con el fin de que usted pueda observar el camino de lo que encontrará en los siguientes capítulos:

1. Alan Turing. Uno de los padres de la informática. Creador del modelo matemático que explica lo que es computable, y uno de los primeros en describir cómo podría funcionar un programa inteligente.

2. John McCarthy. Impulsor de la inteligencia artificial, y la persona que acuñó dicho término. Además, hizo valiosas contribuciones a los lenguajes de programación al crear Lisp.

3. Edsger Dijkstra. Creador de uno de los algoritmos más populares: el camino más corto. Asimismo, escribió innumerables documentos reflexionando sobre la actividad de programar y de la informática, sobre la necesidad del rigor. Fue una persona apasionada de la escritura y de las matemáticas. Buscó hacer de la programación un área científica.

4. Tony Hoare. Uno de los creadores de la verificación formal, cuando presentó la —hoy llamada—lógica de Hoare. Esta permite comprobar, a priori, el comportamiento de los programas, verificando sus resultados, lo cual es muy útil al diseñar algoritmos específicos. Y fue además el creador de «null».

5. Niklaus Wirth. Una persona que ha dedicado su vida al diseño de lenguajes de programación; que procura que sean sencillos, fáciles de usar y, en general, elegantes. Algunas de sus creaciones fueron Pascal, Modula y Oberon.

6. Richard Karp. Trabajó en problemas de combinatoria y aspectos teóricos de la computación. A él le debemos uno de los trabajos más influyentes de su área, el que permitió comprobar, a través de un marco de trabajo, qué problemas son NP-completos.

7. Manuel Blum. Creador de varios avances en la criptografía y la computación teórica. A su vez, fue inventor del CAPTCHA y, además, fue un excelente supervisor doctoral, que dejó una estela de grandes alumnos, todos ellos destacados profesionales en sus respectivos campos. Incluso se ha adentrado en el problema de la conciencia.

 

8. Donald Knuth. Una de las personas que escribió una opera magna de la computación. Extremadamente prolífico. Inventor de múltiples algoritmos y padre del área llamada «análisis de algoritmos».

9. Barbara Liskov. Una de las mujeres que más ha aportado al desarrollo de software, al tratar temas como los tipos abstractos de datos. Algo fundamental para comprender el buen diseño de programas, sobre todo si hablamos de la orientación a objetos.

10. Leslie Lamport. Destacado por sus aportes a los sistemas distribuidos. Fue artífice de algunos de los algoritmos más interesantes que existen, que, a través de bellas metáforas, pudo reducir la complejidad de la explicación usando la simplicidad. Un gran defensor del uso de las matemáticas en la programación.

11. Michael Stonebraker. Investigador y empresario que ha creado gestores de bases de datos novedosos e interesantes; para dar respuesta a los problemas de analizar y manipular grandes cantidades de datos. Algunas de sus obras fueron Postgres y H-Store.

12. Tim Berners-Lee. Creador de la web y un gran defensor de la privacidad de las personas en la red.

JUSTIFICACIONES PREVIAS

No es menos importante mencionar que verme en la tarea de escoger a los 12 personajes sobre los que trata este libro fue una tarea ingrata. ¿Por qué? Pues una elección trae consigo dejar fuera a otros. Hay muchas más mentes que han hecho posible la informática tal y como la conocemos. Por ello, me veo en la obligación de presentar mis excusas, que al menos me sirvan de justificación con usted, pues no es de extrañar que vea con desazón que falten algunos de los personajes que admira. Pero tenga en cuenta que mi elección ha sido honesta y se funda en fuertes motivos, aunque eso no significa que esté libre de sesgos.

Así, los criterios para la elección de los personajes de este libro fueron los siguientes:

1. Información disponible. En la búsqueda de personajes destacados me encontré con el dilema de que muchos de ellos no tenían muchas entrevistas ni tampoco se contaba con información más allá de su obra. Por este motivo, y como es de esperar, irremediablemente tuve que escoger a las personas sobre las que hubiera más datos disponibles, no tan solo de su obra, sino de su vida.

2. Afinidad. Para mí, los lenguajes de programación y los algoritmos son el corazón de la informática. Así pues, no es de extrañar un cierto sesgo por mi parte a favor de personas que hayan creado o investigado en algo relacionado. Sin embargo, hay excepciones, por ejemplo: Michael Stonebraker y Tim Berners-Lee, ambos fueron creadores de sistemas, es decir, múltiples programas que colaboran entre sí para crear un ecosistema de software.

3. Prioridad a la investigación. He querido dedicar un libro a las personas que investigaron y con su trabajo influyeron en la industria. Por este motivo, este no es un libro sobre grandes programadores, aunque todos ellos programaban, sus ideas residen más bien en cuestiones abstractas, teóricas, especialmente relacionadas con la aplicabilidad.

4. Ganadores del Premio Turing. En la actualidad se le conoce como el premio más importante en la informática, creado por la ACM. Y se entrega a las personas que hayan hecho un aporte sobresaliente al área.

5. Importancia. Cuando se ve el nombre de Alan Turing en un libro de grandes informáticos, me parece que no es preciso, pues él no fue un informático, fue más bien un lógico-matemático. Aunque no por elección, sino porque él estaba creando, indirectamente, la informática. Por este motivo es difícil explicar la historia de la informática sin Turing.

6. Límite de espacio. Cuando se comienza un libro, hay una restricción de páginas que no puedo superar. Ante tal situación me he visto en la necesidad de ser selectivo.

Creo que con estos motivos he retrasado mi sentencia y tengo más posibilidades de que me conceda su perdón.

NOTA PARA LOS LECTORES

El libro se divide en 12 capítulos —cada uno representa un personaje—, ordenados por la fecha de nacimiento de la persona (menor a mayor). Se puede leer cada uno de manera independiente, es decir, no es necesario que lea un capítulo tras otro.


También es importante añadir que algunos capítulos tienen una breve parte técnica que explica algo específico de la obra de la persona, usted puede identificarlo, pues el texto tiene un marco y fondo gris. Por ende, en caso de no estar interesado en ello, lo puede saltar.

La estructura de cada capítulo es cronológica; así, por ejemplo, el capítulo dedicado a Alan Turing comienza desde sus primeros años, cómo se formó intelectualmente, cuáles fueron sus trabajos más importantes, hasta llegar al final del capítulo, donde le recomiendo algunas de sus obras más influyentes que, naturalmente, usted podría leer. Esta estructura se repite para cada uno de los personajes.

Tenga presente que la vida de una persona, y más cuando ha sido prolífica en su vida, no puede ser sintetizada en pocas páginas. Justo por eso, he decidido presentar lo que yo considero más interesante. Por este motivo es que, al final de cada capítulo, entrego algunas recomendaciones que, según mi punto de vista, pueden ser de utilidad para usted, pues, en ellas, usted podrá comprender mejor la obra de cada personaje. Profundizar en su trabajo.

Por otro lado, hay una cuestión que debo aclarar: los términos «informática», «ciencia de la computación» y «computación» los uso como sinónimos en este libro. Solo elijo una u otra palabra en función del personaje que estoy tratando: si es más cercano a la teoría, privilegiaré las dos últimas; en cambio, si su trabajo se centra en algo más aplicado, usaré la primera.

Finalmente, también le pido que no omita las notas que aparecen, con cierto empeño, en este libro, pues en ellas hay mucha información relevante, varias aclaraciones, información adicional y sugerencias de libros.

Para más información, puede visitar mi sitio web:

www.camilochacon.com

________

3. Association for Computing Machinery.