Kitabı oku: «Mentes geniales. La vida y obra de 12 grandes informáticos»

Yazı tipi:



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.

ALAN MATHISON TURING
(1912-1954)
Uno de los padres de la computación

Alan Mathison Turing es, sin duda, uno de los padres de la ciencia de la computación4. Y no solo eso, por su impacto en el futuro, puede ser considerado sin problema como uno de los grandes científicos del siglo xx. El modelo matemático que representa la computación sería él quien lo haría conocido, pero desgraciadamente no en vida, ya que tuvo diversos problemas que truncaron una carrera que pudo dar mucho más. Aun cuanto todo lo que logró es enorme, mantengo una cierta tristeza por no saber todas las otras cosas que pudo haber logrado. Sin embargo, el nombre de Turing brilla en lo alto de la computación, pues fue él el que dio respuesta a una de las preguntas más fundamentales: «¿Qué es computable?». Tras responder a esa pregunta, nació todo lo demás.

1.1 PRIMEROS AÑOS

Nació en Maida Vale, Londres (Reino Unido), en 1912. Su padre, Julius Mathison Turing, fue miembro del servicio civil indio, y su madre, Ethel Sara Stoney, fue hija de un ingeniero de ferrocarriles de Madras5; la pareja se casaró en la India.

Turing estudió parte de su primaria, entre sus 10 y 13 años, en la escuela Hazelhurst Preparatory School, en el condado de Frant Sussex (hoy, East Sussex). Allí y a temprana edad mostró un interés por seguir sus propias ideas, así lo atestiguan algunos de sus biógrafos: «Parecía ser un alumno “medio o bueno” en la mayoría de las asignaturas, pero estaba muy ocupado en seguir sus propias ideas». Tuvo algunas incursiones en el ajedrez y en la sociedad de debate. Luego, a sus 13 años, haría un examen (Common Entrance Examination)6 para entrar a la escuela de Sherborne School.

Una anécdota es que, allá por 1926, había una huelga general que obligaba a Turing a correr 95 kilómetros de su casa a la escuela. Algo que para él no era tan difícil, pues era un gran atleta al que le apasionaba correr grandes distancias. En su nueva escuela tuvo problemas para adaptarse, y además fue muy criticado por su caligrafía en inglés. Pero muchos de los problemas surgieron porque Turing siempre fue un pensador libre, independiente, que buscaba sus propias soluciones a los problemas; es más, por ejemplo, en sus clases de matemáticas tuvo problemas con sus profesores porque no seguía los métodos que les enseñaban, él prefería inventar sus propias maneras para afrontar sus problemas.

A pesar de ello, en su escuela Sherborne School ganó casi todos los premios en matemáticas. Tales fueron su impulso, voluntad y obstinación que ya por aquellos años —antes incluso de tener 18 años— se había adentrado en las matemáticas avanzadas. Como atestigua uno de sus biógrafos, «leyó los trabajos de Einstein sobre la relatividad y también leyó sobre la mecánica cuántica en la obra de Eddington, La naturaleza del mundo físico» (O’Connor y Robertson, 2003). (Se podría inferir entonces que le hubieran parecido muy interesantes los avances en la computación cuántica, que comenzaron a ser un tema de investigación en la década de 1980 [y que hoy se mantiene más vigente que nunca y cambia por completo la forma de operar de la computación clásica propuesta por Turing]).

Turing, desde pequeño, fue solitario y retraído a sus propias ideas, a su propia creatividad. Años más tarde, por 1928, Turing tendría al que sería su único amigo de infancia, Christopher Morcom (un alumno de un año más que él), con el cual podía compartir su pasión por las matemáticas y las ciencias. Turing sentía una enorme estima por él, ya que habían conectado intelectualmente. Sin embargo, por desgracia Morcom murió en 1930 y, como muchos de sus biógrafos señalan, este hecho lo marcó para el resto de su vida.

En 1931 entró a estudiar matemáticas en el King’s College, en Cambridge (estaría aquí hasta 1934). Allí pudo sentirse mucho más a gusto que en sus anteriores escuelas, pues Cambridge es un lugar donde no es extraño encontrar a personas poco «convencionales» o, para decirlo de otra manera, personas con un gran deseo creativo y con una personalidad más introvertida. Ya en 1933 había tenido la oportunidad de leer a Bertrand Russell, su libro Introduction to mathematical philosophy; no obstante, no sabemos hasta qué punto este libro lo influyó. Lo cierto es que se podría suponer que sí, pues más adelante tuvo inclinaciones a escribir textos con una óptica filosófica. Algo donde Russell destacó.

Más o menos por esos mismos años, Turing también leyó a Von Neumann, y su trabajo sobre mecánica cuántica (un tema que también le apasionaba). Asimismo, comenzó a tener su primera aproximación a la lógica matemática, un área que gozaba de un fuerte desarrollo por esos años. Uno de sus biógrafos, Andrew Hodges, autor de una de las mejores biografías de Turing hasta la fecha, mencionó el interés de Turing por las matemáticas y la lógica, y demostró que una visión puramente logística era errónea (Hodges, 1997).

Por otro lado, era la época en que el partido nazi de Hitler había llegado al poder en Alemania, lo que puso en alerta a muchas naciones de Europa, y, como sabemos, más tarde vendrían tiempos de gran agitación. Por ello, ya en el Reino Unido había grupos que estaban en contra de una posible guerra, «Turing se unió al movimiento antibélico, pero no derivó hacia el marxismo, ni hacia el pacifismo, como ocurrió con muchos» (O’Connor y Robertson, 2003). Su labor, en cambio, consistió siempre más bien en apoyar a su país con su conocimiento teórico, principalmente en temas de criptografía, como veremos brevemente en las páginas que siguen.

1.2 EL PROBLEMA DE LA DECISIÓN

Graduado en 1934, Turing tuvo contacto con el trabajo de Kurt Gödel7 (teorema de incompletitud) y el problema propuesto por David Hilbert8 (conocido en alemán como Entscheidungsproblem, en español, problema de la decisión) sobre la decibilidad, el cual reza: «Dada una proposición matemática, ¿existe un algoritmo que pueda dar una respuesta a si la proposición es verdadera o falsa?». Turing comenzó a trabajar en este problema, que luego sería él que daría la respuesta a lo que es computable o no. Inició una nueva era.

En ese mismo periodo, 1935, fue elegido compañero (Fellow) de la King’s College, en Cambridge, por su trabajo de tesis llamado On the Gaussian error function, el cual probó resultados fundamentales en el área de la teoría de las probabilidades. A tal contribución se la conoce como el teorema del límite central. Por ello, en 1936 ganó el Premio Smith.

Volviendo al desafío propuesto por Hilbert, Turing, más tarde, haría una demostración negativa, es decir, expondría que tal algoritmo no existe, con lo que echaría por tierra la idea de Hilbert de demostrar la decibilidad de cualquier proposición matemática.

1.3 SOBRE LO QUE ES COMPUTABLE

1936 sería un año mágico para Turing —aunque probablemente él nunca alcanzó a vislumbrarlo—, ya que publicaría uno de los artículos más influyentes en la historia de la informática. Titulado On Computable Numbers, with an application to the Entscheidungsproblem, efectivamente marcaría el inicio de una nueva área del conocimiento. En él, Turing presentaría una máquina abstracta, un modelo matemático que representa el concepto de computar. En el artículo, Turing llama a este modelo a-machine (automatic machine), en la actualidad lo conocemos simplemente bajo el nombre de máquina de Turing.

Además, y para evitar confusiones, Turing no inventó el ordenador, más bien fue el artífice del modelo matemático de cómo se realiza la computación, esto es, su aporte fue teórico. Fue un lógico-matemático, no un ingeniero. Turing trabajó más con lápiz y papel que con aparatos físicos. Luego, otros grandes pensadores, a saber, Von Neumann, llevarían sus ideas a algo aplicado, a algo real, a algo concreto, ¿a qué? A la primera arquitectura del ordenador digital.

La máquina de Turing consiste en una cinta (infinita) compuesta de celdas, con un cabezal que puede ir escribiendo o borrando un símbolo en cualquier celda. Turing escribió:

Algunos de los símbolos anotados formarán la secuencia de cifras que es el decimal del número real que se está calculando. Los demás son solo notas aproximadas para «ayudar a la memoria». Solo estas notas aproximadas serán susceptibles de ser borradas.

[…] la máquina de cálculo es una máquina que puede hacer el trabajo de cualquier máquina de propósito especial, es decir, realizar cualquier trabajo de cálculo, si se le inserta una cinta con las «instrucciones» adecuadas. (Newman, 1955)

En el párrafo previo (en negrita) se puede ver que Turing demostró la existencia de una máquina universal, pues la idea de «inserta una cinta de instrucción» es similar a copiar el código de un programa en otro ordenador, compilarlo y ejecutarlo. En efecto, Turing daría los primeros bosquejos de lo que sería no tan solo el funcionamiento de un ordenador, sino también de lo que conocemos como lenguajes de programación9. (Cabe señalar que, cuando en su artículo Turing hablaba de máquina, se refería a una persona; por aquel entonces a una persona que hacía una tarea rutinaria para resolver un problema se la llamaba «computer» [que vendría siendo «computador» u «ordenador»]).

Algo notable y que inspiró la película Código Enigma10 es la labor secreta de Turing en la lucha contra la Alemania nazi en la Segunda Guerra Mundial. Cada bando debe tener un sistema de mensajería para comunicar las órdenes que se dan de un lugar a otro; por eso mismo, y para evitar que esos mensajes caigan en manos enemigas, es necesario un sistema de encriptado. Para ello, los nazis tenían la máquina Enigma, y por aquellos años dicho aparato parecía intratable, «las máquinas Enigma de la armada alemana eran mucho más difíciles de descifrar, pero este era el tipo de desafío con el que Turing disfrutaba», así pues, el trabajo de Turing fue decisivo en el triunfo de los aliados en el combate, pues consiguió, junto a otras personas, desencriptar los mensajes de Enigma.

Así, junto a otro matemático, William Gordon Welchman, Turing desarrolló la Bombe (véase la figura 1), una máquina que tomaba lo mejor de los trabajos que venían realizando los matemáticos polacos desde finales de 1940 (descifrando los códigos de Enigma de la Luftwaffe [fuerza área]). Con esta nueva máquina Turing incorporó métodos estadísticos que permitieron descifrar los códigos de la marina alemana en su estadía en Bletchley (O’Connor y Robertson, 2003).


Figura 1. Máquina electromecánica Bombe11.

Al término de la guerra, Turing fue invitado al National Physical Laboratory de Londres, para construir un nuevo ordenador, conocido como ACE (Automatic Computing Engine; véase la figura 2). En 1946, Turing presentó el primer informe de dicho ordenador, bastante original y con la arquitectura de un ordenador moderno, «el tamaño de almacenamiento que planeó [Turing] para el ACE fue considerado por la mayoría de los que leyeron el informe como irremediablemente demasiado ambicioso y hubo retrasos en la aprobación del proyecto». No obstante, el informe publicado un año antes (1945) por Von Neumann (First Draft of a Report on the EDVAC) tendría más influencia y se convertiría en la arquitectura de ordenadores modernos; asimismo, varios ordenadores fueron construidos, de manera exitosa usando el diseño de ACE.

Aunque Von Neumann no cita explícitamente a Turing en su informe, varios especialistas dicen que estaba al tanto del trabajo de Turing y que le habría influenciado. (Aquí menciono el EDVAC y ACE, no obstante, la historia del primer ordenador no es algo tan simple de dilucidar. En diferentes partes del mundo se estaba trabajando en paralelo en distintos ordenadores, por ejemplo, el Z3 creado por Konrad Zuse12, años antes, en 1941. Sin embargo, hay un consenso a la hora de mencionar cuál tuvo más influencia e impacto en el futuro del desarrollo de los ordenadores digitales modernos, y fue EDVAC [a diferencia de ENIAC, este tenía un sistema binario y no decimal, además de ser el primero en contener un programa para ser almacenado]. No siempre lo primero es lo que causa mayor impacto para la posteridad).

En 1948, Maxwell Newman13 le ofreció un puesto en la Victoria University of Manchester (Reino Unido), el a lo cual Turing aceptó y renunció así al National Physical Laboratory. Y es que en esta universidad se estaba preparando el diseño de un nuevo ordenador (Manchester Mark 1)14 y el conocimiento de Turing era fundamental. Newman más adelante explicó que se esperaba que Turing dirigiera la parte matemática, primero construyendo la lógica detrás de las subrutinas que permiten desarrollar los programas, hasta llegar a cuestiones más generales de análisis numérico (Newman, 1955).


Figura 2. Ordenador ACE15.

Fue aquí donde comenzó a tener interés en la matemática biológica, y donde realizó algunos trabajos muy interesantes sobre la morfogénesis (proceso biológico que permite a un organismo desarrollar su forma). Cabe señalar que Turing nunca fue reconocido durante su vida en su país, pues muchos de sus logros fueron mantenidos en secreto por tema de seguridad. Principalmente, sus trabajos que involucraron desencriptar los códigos de Enigma durante la Segunda Guerra Mundial).

En consecuencia, es en este momento cuando Turing comenzó a interesarse por un área que en la actualidad ha cobrado una enorme fuerza, pero que, sin embargo, por aquel entonces no tenía ese nombre: la inteligencia artificial.

1.4 INTELIGENCIA ARTIFICIAL

Turing no solo fue un gran lógico-matemático. Tuvo inclinaciones filosóficas, producto, probablemente, de sus lecturas de diferentes textos que tocaban temas filosóficos en la adolescencia. Asimismo, él ya avizoraba lo que podrían hacer las máquinas automáticas (ordenadores digitales), primero automatizando tareas rutinarias que hacían las personas. Pero ¿podrían algún día estos ordenadores simular el cerebro humano? Pues es sabido que el cerebro es la «máquina» más compleja que conocemos.

Si bien es cierto que en la actualidad ha habido muchos avances gracias a la neurociencia cognitiva, todavía hay muchas preguntas por responder. ¿Será, acaso, el ordenador la respuesta? ¿La que pueda desvelar los grandes misterios del cerebro? Aún no lo sabemos. Lo que sí sabemos es que el uso de ordenadores ha sido una pieza decisiva en todos los avances de las demás ciencias e ingenierías. La velocidad de computación ha sido un aspecto fundamental a la hora de acelerar muchos experimentos, lo que, llevado a otras áreas, se traduce en nuevos logros.

En 1950, Turing publicó un artículo titulado «Computing machinery and intelligence» (en español, «¿Puede pensar una máquina?») en la revista Mind que hasta el día de hoy tiene una enorme influencia. En él se puede ver a un hombre preocupado por su tiempo y por lo que los ordenadores podrían lograr en el futuro. Menciona —de manera informal— cómo podríamos saber que un ordenador ha alcanzado la inteligencia humana. Para ello, idea un experimento que se conoce como el juego de la imitación o simplemente como prueba de Turing.

En este legendario artículo, Turing termina diciendo algo premonitorio, pues muchas de las cosas que nombra ya han sido logradas en algunos casos. Primero, Turing hace referencia a que las máquinas competirán en todos los campos puramente intelectuales del hombre, a saber, cuestiones específicas, por ejemplo, jugar al ajedrez y otras actividades lógicas. Segundo, avanza que las máquinas podrán comenzar a entender el lenguaje natural. Y finalmente, apunta a que un día las máquinas adquirirán la capacidad de detectar objetos al igual que lo hace un niño que va descubriendo el mundo (Turing, «¿Puede pensar una máquina?», 1950).

Que los ordenadores puedan jugar al ajedrez es algo que ya se ha alcanzado hace varias décadas, tanto es así que en la actualidad se ha logrado, con éxito, diseñar algoritmos de aprendizaje profundo que puedan jugar al go (juego de tablero), un juego cuya complejidad es mucho mayor a la del ajedrez16. Lo mismo podemos decir de los sistemas que pueden simular la voz del lenguaje natural. A pesar de ello, todavía estamos lejos de pasar de realizar tareas específicas (como Turing apuntaba) a realizar tareas muy generales, creativas, que nos permitan hablar de una «inteligencia» que se asimile a la humana.

1.5 EL JUEGO DE LA IMITACIÓN

El juego de la imitación presentado por Turing (véase la figura 3) se puede describir así: supongamos que existen tres personas, A, B y C. La primera (A) es un hombre; B, una mujer; y C es un interrogador de cualquier sexo. Entonces C permanece en una habitación separada de ambos. El objetivo del interrogador es determinar cuál de los dos es hombre y cuál es mujer. Así, podría decir el interrogador: «X es A, Y es B» o a la inversa: «Y es A, X es B». Turing nos da un ejemplo:

Dice C: ¿Podría X decirme la longitud de su pelo? Supongamos que X es en realidad A, entonces A debe responder. El objetivo de A en el juego es intentar que C se equivoque en la identificación. Por lo tanto, su respuesta podría ser:

«Mi pelo es ondulado y los mechones más largos miden unos 20 centímetros».

Para que los tonos de voz no ayuden al interrogador, las respuestas deben ser escritas. Lo ideal es disponer de un ordenador que comunique las dos salas. Como alternativa, un intermediario puede repetir la pregunta y las respuestas. El objetivo del juego para el tercer jugador (B) es ayudar al interrogador. La mejor estrategia para ella es probablemente dar respuestas sinceras. Puede añadir a sus respuestas cosas como «yo soy la mujer, no le hagas caso», pero no servirá de nada, ya que el hombre puede hacer comentarios similares.

Ahora nos preguntamos: «¿Qué pasará cuando una máquina tome el papel de A en este juego?» ¿Fallará el interrogador con la misma frecuencia cuando el juego se desarrolle como el ejemplo del hombre y la mujer? Estas preguntas sustituyen a la original, «¿pueden pensar las máquinas?» (Turing A., ¿Puede pensar una máquina?, 1950, págs. 23-25).

Dicho en otras palabras: ¿puede una persona detectar a través de una conversación por chat cuándo se encuentra hablando con un humano o con una máquina?, ¿puede una máquina engañarlo?, ¿qué preguntas debería hacer la persona para detectar que está conversando con un humano? Todas estas cuestiones plantean un reto al juego de la imitación. Un interesante experimento mental que, hasta nuestros días, se mantiene en discusión por las repercusiones que puede tener en la filosofía de la mente y en la inteligencia artificial.


Figura 3. Representación visual del juego de la imitación17.

Ahora bien, esta prueba ideada por Turing presenta varias debilidades, pues no sabemos realmente qué preguntas nos pueden ayudar a discriminar si la entidad con la cual chateamos es una persona o una máquina. Más bien, los ejemplos que da Turing son muy generales y podrían interpretarse de muchas formas. Por ello, no es extraño ver cada cierto tiempo personas que dicen haber «pasado la prueba de Turing», pero, por la misma definición (no formal) que dio Turing, parece improbable que sea cierto. Se mantiene la duda, pues, ¿en qué momento podemos estar seguros de que hablamos con un humano y no con una máquina? Es una pregunta abierta.

Sin embargo, desde su publicación han surgido variadas mejoras a esta prueba e, incluso, otros tipos de pruebas que buscan rebatir la prueba de Turing intentando demostrar que el pensamiento humano no puede ser computarizado (a saber, «la habitación china» de John Searle).

1.6 MUERTE Y LEGADO

Turing fue arrestado en 1952 luego de informar a la Policía de una relación homosexual. Y es que por aquellos años en el Reino Unido tener una relación homosexual estaba penado por ley. Así lo explican algunos de sus biógrafos: «Acudió a la Policía [Turing] porque lo habían amenazado con un chantaje. Fue juzgado como homosexual el 31 de marzo de 1952, sin ofrecer ninguna defensa. Declarado culpable, se le dio la alternativa de ir a la cárcel o recibir inyecciones de estrógenos durante un año. Aceptó esta última y volvió a dedicarse a una amplia gama de actividades académicas» (O’Connor y Robertson, 2003).

Esas actividades académicas consistían en sus trabajos sobre reacciones químicas, las cuales también lo habían entusiasmado; era de esperar que nunca lo pudiese superar, pues dos años después murió por un envenenamiento por cianuro de potasio mientras trabajaba en algunos experimentos de electrólisis. Como se indica: «El cianuro se encontró en una manzana a medio comer a su lado. Una investigación concluyó que se lo había autoadministrado, pero su madre siempre mantuvo que fue un accidente» (O’Connor y Robertson, 2003).

Su muerte siempre se ha mantenido en un manto de dudas. Por ejemplo, su madre, Sara Turing, en su libro Alan M. Turing, más que un enigma sobre la vida de su hijo, siempre mantuvo la posición de que fue un accidente y no un suicidio. Por otro lado, en el mismo libro y en una versión posterior, se añadió una memoria del hermano mayor, John Turing, el cual relata algunas excentricidades18 de su hermano menor y deja entrever que, si tanto él como sus padres lo hubieran comprendido desde joven, Turing hubiera vivido (Turing S. , 2018, pág. 293).

La relación de su familia hacia Alan Turing no fue fácil, pues, para ellos, él era muy distinto y le costaba aceptar las normas sociales. John Turing, al contrario de su madre, parece convencido de que fue un suicidio (según él producto de su largo estrés en su periodo de trabajo en Bletchley), y relata que la hipótesis de su madre es infundada (Turing S. , 2018).

Sea cual fuera la situación, la vida de Turing, aunque corta, fue fructífera, creativa, innovadora en todos los sentidos de la palabra. Una mente brillante que pudo crear todo un nuevo campo de estudio, que, si no hubiera sido por él, habría tardado muchos años más en surgir. Sin contar las innumerables vidas que salvó gracias a sus trabajos para desencriptar Enigma.

En suma: el legado de Turing es indiscutible.

Primero, fue artífice del modelo conceptual de cómo funciona la computación o, para decirlo con otras palabras, describió matemáticamente cómo funciona un algoritmo para resolver un problema. Esas ideas permitieron a otras grandes mentes crear el primer ordenador digital y, después de ello, el nacimiento de los lenguajes de programación (en particular, los del paradigma imperativo19, que son los que se acercan más a sus ideas). Cuando usamos un ordenador, implícitamente, estamos usando las ideas de Turing. Por ello, no es de extrañar que el premio más importante de la informática o computación en la actualidad lleve su nombre.

Segundo, propuso diferentes ideas sobre lo que podrían hacer las máquinas para simular el cerebro humano, lo que hoy conocemos como inteligencia artificial. Su experimento mental (el juego de la imitación), que busca responder si un programa de ordenador puede hacerse pasar por un humano, aún hoy trae de cabeza a ingenieros, científicos y filósofos. Sigue siendo una pregunta abierta.

Tercero, se adentró en temas de matemática biológica y operaciones de reacciones químicas, campo en el que publicó algunos artículos, y se interesó por cómo se comportaban los seres vivos.

Y no menos importante fue su participación en la Segunda Guerra Mundial trabajando en el desencriptado de mensajes de la máquina Enigma. (Una misión que se mantuvo oculta durante varias décadas). Junto a un equipo multidisciplinar, pudo aportar, con sus conocimientos teóricos, nuevos métodos para acelerar la operación (o computación) del desencriptado. Así que no solo hizo aportes a la teoría de la computación o la inteligencia artificial, sino también a la criptografía.

No obstante, fue víctima de la sociedad de su tiempo, que, atrasada en ideas absurdas, truncó lo que podría haber sido un futuro aún más grande.

1.7 CONCLUSIÓN

Es triste saber que, no hace mucho, el nombre de Turing no decía nada a muchas personas, pasaba totalmente desapercibido, incluso en su propio país. ¡Hasta entre los propios informáticos! Creo que eso ha ido cambiando con el paso del tiempo, aunque paulatinamente.

El desconocimiento en los informáticos se puede explicar porque, en la actualidad, muchos de ellos no saben casi nada de teoría20. En general, ellos están dentro de una prisión en la cual no ven nada más allá de las herramientas. Y las ideas de Turing son principalmente teóricas. Esa debilidad (también mencionada por Dijkstra más adelante, y por Lamport hoy en día) es una cuestión que crea en los actuales ingenieros una debilidad en sus razonamientos, impregnados, en su mayoría, solo en el aprendizaje de herramientas (tecnologías), más que en pensar en la resolución de problemas complejos.

Una debilidad de, lo que algunos autores llaman, pensamiento computacional. Ese pensamiento se funda en la lógica y en las matemáticas, y, aunque es verdad que la informática actual va más allá de la lógica, más allá de las matemáticas, por su propio dinamismo los cimientos no pueden ser omitidos.

1.8 OBRAS RECOMENDADAS

• 1936. On Computable Numbers, with an Application to the Entscheidungsproblem. La obra maestra de Turing, un deber para cualquiera que pretenda aspirar a ser un informático.

• 1950. «Computing machinery and intelligence». Un excelente artículo donde Turing despliega todas sus ideas de si podrá una máquina algún día pensar como un ser humano. Recomendado.

1.9 TRABAJOS SOBRE TURING

• 1997. Turing: A natural philosopher, por Andrew Hodges. Una excelente biografía que reivindica el papel de Turing en la sociedad tecnológica.

• 2013. Alan Turing: His Work and Impact, editado por S. Barry Cooper y J. van Leeuwen. Es una recopilación de muchos de los trabajos de Turing, una obra maravillosa que, además, incluye una biografía y una serie de artículos de otros especialistas que analizan la obra de Turing. Una obra monumental y muy recomendada.

• 2018. Alan M. Turing: Más que un enigma, por Sara Turing, editorial Tecnos. Libro escrito por la madre de Turing, con una memoria de su hermano mayor, John Turing. Altamente recomendado para conocer detalles de su infancia y adolescencia. Y presenta las dificultades que tuvieron como familia para comprenderlo.

• 2020. Alan Turing: El pionero de la era de la información, editorial Turner. Esta es una biografía escrita por Jack Copeland, un filósofo que ha dedicado gran parte de su vida a estudiar el legado de Turing y sus implicaciones en la era moderna. Un libro muy recomendado.

________

4. En esta breve biografía trataré los aspectos que conciernen a sus aportes a la informática, mas omitiré sus relevantes aportes al Reino Unido durante la Segunda Guerra Mundial, en particular, su trabajo para descifrar los mensajes de la máquina Enigma.

5. Una ciudad de la India, capital de Tamil Nadu.

6. Es un examen común en el Reino Unido que evalúa diferentes aspectos cognitivos y se realiza a niños de 13 años que quieren acceder a una escuela secundaria.

7. Considerado uno de los más grandes lógicos de todos los tiempos. Para ahondar más en su vida le recomiendo leer la biografía de Rebecca Goldstein, Gödel: Paradoja y vida.

8. Se le ha reconocido como uno de los más grandes matemáticos del siglo xx.

9. Para una revisión más exhaustiva de los inicios de la computación, le recomiendo el libro de Martin Davis, La computadora universal.

10. Nombre original de la película: The Imitation Game, estrenada en 2014. Recomendable, aunque tiene algunas imprecisiones.

11. Imagen extraída de https://en.wikipedia.org/wiki/Bombe.

12. Fue un pionero de la ciencia de la computación de origen alemán. Considerado el primero en crear un ordenador programable (Z3) en 1941.

13. Se le considera un destacado matemático británico. Hizo grandes aportes a la computación, en particular al descifrado de códigos durante la Segunda Guerra Mundial.

14. Fue uno de los primeros ordenadores que soportaban programas almacenados; diseñado a partir de otro ordenador, el Manchester Baby (o Small-Scale Experimental Machine).

15. Imagen extraída de: https://en.wikipedia.org/wiki/Automatic_Computing_Engine. Autor: Antoine Taveneaux.

16. En 2016, Google presento AlphaGo, un programa que derrotó al campeón mundial de go. Según sus desarrolladores, el go es mucho más complejo que el ajedrez. https://deepmind.com/research/case-studies/alphago-the-story-so-far [Revisado en junio de 2021].

17. Imagen extraída de: https://es.wikipedia.org/wiki/Prueba_de_Turing.

18. En el libro su hermano relata múltiples eventos sobre Alan Turing, por ejemplo, al invitarlo a una comida familiar, este llegó (Alan) y estuvo un breve periodo de tiempo y se fue sin despedirse, sin pedir disculpas; también señaló que Alan siempre iba mal vestido y que era de no preocuparse por su higiene personal (Turing S., 2018, págs. 259-294). Después de leer ese texto, llegué a la conclusión de que él nunca llegó a comprender a su hermano.

19. Los diversos lenguajes de programación se pueden agrupar en «paradigmas», donde cada uno de ellos se funda de una forma diferente de realizar la computación. El imperativo es uno de ellos. Cabe señalar que la palabra «paradigma» no me gusta porque es demasiado amplia y ambigua. Quizá se podría usar la palabra «modelo» o «estrategia», para indicar una distinta representación de la computación, con otros principios, con otros métodos, haciendo uso de una nueva sintaxis y semántica del lenguaje de programación propuesto.

20. Esto se puede entender porque la informática o computación se ha expandido en diferentes carreras universitarias (por su misma complejidad). Algunas, por ejemplo, relacionadas más con la electrónica y el hardware, otras más con el software, y otras más con los aspectos teóricos de la computación. Sin contar todas las interconexiones con otras áreas del conocimiento, a saber, bioinformática, química computacional, neurociencia computacional, etc.

JOHN MCCARTHY
(1927-2011)
La inteligencia artificial «entre paréntesis»21

¿Quién fue el primero en acuñar el término inteligencia artificial? Y ¿quién diseñó uno de los primeros lenguajes de programación de alto nivel y el primero funcional? Estas preguntas y muchas más están estrechamente relacionadas con John McCarthy, uno de los padres de la inteligencia artificial. Creador de Lisp, el segundo lenguaje de programación (después de FORTRAN) en ser considerado de alto nivel, y el primero en ser funcional. Fue uno de los grandes personajes de la ciencia de la computación de la primera mitad del siglo xx. El sueño de hacer los sistemas computacionales más inteligentes, más útiles a los humanos, se lo debemos en cierta medida a McCarthy. Quizá podamos resumir su búsqueda intelectual durante su vida con el título de uno de sus populares artículos: «Programas con sentido común».

2.1 PRIMEROS AÑOS

Nació en Boston, Massachusetts (EE. UU.), en 1927. Hijo de padres inmigrantes. Su padre, John Patrick McCarthy, fue un católico irlandés que trabajó como gerente de negocios en el periódico Daily Worker (de propiedad del partido comunista de EE. UU.). Su madre, Ida Glatt, fue una inmigrante judía lituana que también trabajó en el Daily Worker, y luego fue trabajadora social. Es decir, sus padres fueron personas que se mantuvieron, de una u otra forma cercanas a los temas sociales de su tiempo.

En una entrevista realizada por Nils J. Nilsson22, McCarthy le revelaría que, «antes de ir al instituto, se interesó por la ciencia leyendo una traducción de un libro ruso de divulgación científica para niños, titulado 100.000 porqués». De niño ya mostraba un interés por temas científicos.

Fue aceptado en la Universidad de Caltech para estudiar el grado de matemáticas, y se graduará en 1948; en este mismo año ocurriría algo que, sin duda, marcaría su carrera: asistió al «Simposio de Hixon sobre los mecanismos cerebrales del comportamiento» en septiembre de 1948. Ahí se reunieron muchos científicos de distintas áreas de estudios que trabajaban en cuestiones que interceptaban temas tan diversos como psicología, matemáticas y computación. En este evento McCarthy se interesaría en la idea de si es posible que las máquinas puedan pensar como las personas lo hacen.

Luego obtuvo su doctorado, también en matemáticas, en Princeton (1951). El cambio de universidad se debería, en palabras del propio McCarthy, a que Princeton era el mejor lugar para estudiar matemáticas. (Von Neumann se encontraba en Princeton por esos años; más tarde tendría una conversación con él donde intercambiaron ideas sobre la inteligencia artificial).

Durante su tesis doctoral en Princeton, Solomon Lefschetz23, director del departamento y, a su vez, supervisor doctoral de McCarthy, le dijo: «¿Sobre qué vas a hacer tu tesis?», a lo que respondió: «No lo sé. Voy a pensarlo». Así, McCarthy logro una cierta fama en la facultad, pues tuvo la iniciativa de buscar un tema para su tesis doctoral de manera autónoma; ya que lo habitual es que el supervisor le asigne un tema al doctorando (Nilsson, 2007, pág. 4).

Pues ya lo sabe, si quiere comenzar una tesis doctoral, podría imitar a McCarthy, quizá logre algo de popularidad o, al menos, demostrar iniciativa (siempre es bien recibida), ¿por qué no? (Aunque, para ser del todo honesto, depende mucho de su supervisor, en cualquiera de los casos).

2.2 EL ADVENIMIENTO DE UN NUEVO TÉRMINO: INTELIGENCIA ARTIFICIAL

Un término que hoy en día es tan difundido y aparece por todos lados es el de inteligencia artificial (IA). McCarthy fue el primero en acuñar este término «entre paréntesis»; ¿entre paréntesis? Pues él fue el padre de Lisp, un lenguaje de programación que se caracteriza, entre muchas cosas, por el uso de paréntesis para construir la computación. Además de ser un lenguaje que, principalmente en sus inicios, fue fundamental para el estudio de la inteligencia artificial.

Durante febrero de 1955, McCarthy aceptó la plaza como profesor asistente de matemáticas en Darmouth College, en Hannover. Aquí sería su primer acercamiento «experimental», por así decirlo, ya que programaría por primera vez en un ordenador, un IBM 704. En ese tiempo McCarthy era el representante de la Darmouth, por ello, fue invitado por Nathaniel Rochester24 a pasar el verano del mismo año en IBM. Presumiblemente aquí surgió la idea para desarrollar el mítico taller donde se iniciaría esta nueva área de estudio, la inteligencia artificial.

Algo que mencionó Nilsson fue que «ese verano en IBM, McCarthy y Rochester convencieron a Claude Shannon y a Marvin Minsky, entonces becario de Harvard en matemáticas y neurología, para que se unieran a ellos y propusieran un taller que se celebraría en Dartmouth durante el verano siguiente».

Así, llegamos al verano de 1956. McCarthy propuso el nombre de inteligencia artificial para el taller que iba a realizarse en Darmouth College. Luego él mismo diría que lo llamó así, aunque tuvo la vaga sensación de haber oído esa frase antes, pero que nunca pudo recordar dónde (Nilsson, 2007, pág. 6).

Tuvo una gran repercusión porque a este taller asistieron los principales investigadores en computación (de aquel momento). Dicen que, para que una idea tenga impacto, debes estar en el lugar y tiempo adecuado, pues eso parece que ocurrió aquí.

¿Cómo sucedió? Antes de dicho taller, McCarthy había publicado un libro titulado Automata series (series de autómatas). Por lo visto, su obra no fue tomada muy en cuenta por la comunidad científica. El nombre parece que fue visto como algo aburrido, sin relevancia. Así que probó cambiando el nombre del tema de su investigación a algo que sonara mejor, así surgió: inteligencia artificial. Un gran cambio, ¿no cree? Para alguien que hizo un trabajo técnico tan sobresaliente es sorprendente que uno de sus aportes sea también en el área del marketing, al elegir tan buen nombre. (Dicho sea de paso, nos hacen faltan informáticos así; o quizás ocurre lo contrario, hay demasiados nombres geniales en producto con poco o nada respaldo técnico).

Nilsson añadió que «el taller de Dartmouth se considera generalmente como el primer trabajo serio en este campo [IA] al que McCarthy dedicó su carrera científica».

McCarthy fue precursor de uno de los movimientos (approach en inglés) de la inteligencia artificial, en particular el llamado logicista. A continuación, definiremos tres: simbólico, logicista y soft computing.

1. Realiza un énfasis en que la inteligencia humana puede reducirse a la manipulación de símbolos (este movimiento se llamó simbólico o GOFAI [good old fashioned AI]).

2. Otro enfoque es el logicista, que trata de lo siguiente: más que buscar la simulación de la inteligencia humana, es mejor centrarse en la esencia subyacente del razonamiento de la resolución de problemas (este movimiento lo inició McCarthy).

3. En la actualidad, un movimiento que ha tomado fuerza es el de las redes neuronales y los algoritmos de aproximación, haciendo uso de estas técnicas se pretende dejar de lado los sistemas lógico-exactos por métodos de aproximación, para cuando se tiene información incompleta o con alta incertidumbre (a menudo lo llaman soft computing).

Existen otros más, pero creo que con estos usted ya puede formarse una idea. McCarthy fue uno de los fundadores del movimiento logicista, el cual hace uso de métodos exactos que nos entrega la lógica formal. Para llevar a cabo sus ideas, crearía Lisp, un lenguaje de programación que, hasta el día de hoy, algunos de sus derivados son utilizados en áreas de investigación y en la industria.

2.3 LISP

McCarthy, en 1958, obtuvo una beca para ir al MIT, donde había disponibles ordenadores IBM, lo cual era importante para seguir trabajando en sus proyectos. Además, estaba cerca de donde se encontraba Marvin Minsky, quien estaba en Harvard. Precisamente con él intercambió múltiples ideas.

En ese momento comienza a trabajar en un nuevo lenguaje de programación, Lisp. ¿Cómo nació la idea de crear Lisp? Según Nilsson, «McCarthy dijo que la idea del procesamiento de listas [de Lisp] se la dieron Allen Newell y Herber Simon25 en el taller de Dartmouth de 1956, pero que no le gustaba el lenguaje IPL que utilizaban». Esto no es de extrañar, muchas nuevas herramientas surgen por una incomodidad con lo actual, de hecho, es así como avanza la tecnología.

Este lenguaje da comienzo a una familia de lenguajes de programación funcionales, o sea, se transformaría en un dialecto. Su primera versión apareció en 1958 y su nombre proviene de LISt Processor (procesamiento de listas). Con una similitud al cálculo lambda, fue el primer lenguaje de programación en ser usado para tareas sobre inteligencia artificial26.

A modo de anécdota: el cálculo lambda es un modelo de computación creado por Alonzo Church, basado en el uso de funciones para realizar la computación, que vio la luz durante la década de 1930. A pesar de que McCarthy negó que hubiera sido influenciado por el cálculo lambda para diseñar Lisp, mencionó lo siguiente:

Lisp [...] no fue un intento de llevar a la práctica el cálculo lambda, aunque si alguien hubiera empezado con esa intención, podría haber terminado con algo como Lisp. (Wexelblat, 1981, pág. 190).

A pesar de tener (Lisp) una sintaxis que podría parecer extraña para los programadores de hoy en día, fue un lenguaje que provocó una gran influencia en la comunidad de investigadores —de su tiempo y aún en los actuales—. Y ha sobrevivido al paso del tiempo en diversos dialectos de Lisp, por ejemplo, algunos conocidos: Scheme, Clojure y Racket. Pero existen muchos más.

La representación de la computación en Lisp lo hace ser muy útil para diseñar nuevos lenguajes de programación. Lisp es un lenguaje con homoiconicidad. ¿Qué significa? Que cada primitiva del lenguaje es en sí misma una estructura de datos. Una utilidad a la que, hasta nuestros días, los investigadores de la teoría de los lenguajes programación le sacan provecho. Ello se debe a que se abstrae de cuestiones que son irrelevantes, como el manejo de memoria y la asignación de variables; esto último tan popular en lenguajes imperativos (a saber, C, Python, etc.). Ya volveremos a esto brevemente.

El mismo Alan Kay27 tiene una cita muy divertida sobre Lisp:

Un notable grupo de excepciones a todos los sistemas anteriores fueron LISP [...] y TRAC. Ambos son lenguajes funcionales (uno de lista, otro de cadena de texto), ambos se comunican con el usuario con un solo lenguaje, y ambos son «homoicónicos» en el sentido de que sus representaciones, internas y externas, son esencialmente las mismas. Ambos tienen la capacidad de crear dinámicamente nuevas funciones que pueden ser elaboradas a gusto del usuario.

Su único gran inconveniente es que los programas escritos en ellos se parecen a la carta del rey Burniburiach a los sumerios realizada en cuneiforme babilónico28. […] (Alan C. Kay, Tesis doctoral de la University of Utah, 1969).

¡Lo mismo piensan muchos programadores sobre la sintaxis de Lisp! Pero veamos el lado positivo: la composición de expresiones puede verse muy claramente, muy notoriamente, muy explícitamente, con el uso de paréntesis; es útil porque cada expresión puede ser vista con una estructura similar a una creada dinámicamente (más abajo, en el ejemplo técnico se puede apreciar), es decir, los programas escritos en Lisp son visto como datos que pueden ser utilizados por otro programa29; si se hiciera usando una sintaxis estilo C —esto es, usando llaves de apertura y cierre y punto y coma—, no sería tan fácil de lograr ni ver dicho resultado.

En 1960, McCarthy describió por primera vez Lisp en el artículo «Recursive Functions of Symbolic Expressions and Their Computation by Machine», publicado en Communications of the ACM. Hayes y Morgenstern dirían: «Muchos de los ejemplos utilizados en los libros de texto sobre Lisp proceden directamente de este artículo». Lo que lo hizo ser un documento muy importante. Sobre todo, y esto lo digo desde la experiencia propia, siempre es grato y fundamental leer al autor de un lenguaje (o de cualquier herramienta) explicar su creación. Nadie tendrá —aunque sea un experto en ello la capacidad de ver en todas las direcciones posibles, con sus múltiples ángulos y perspectivas, los entresijos que guarda.


Un breve tutorial sobre Lisp

En este apartado explicaré un poco el lenguaje Lisp, en particular, su dialecto más robusto (Common Lisp)30. Por tanto, no es la misma versión creada por McCarthy, aunque las ideas que subyacen a su origen, naturalmente, se mantienen.

Comenzaré con lo básico, el famoso «Hola, mundo»:

(format t “Hola, mundo”)

Aquí vemos que la sintaxis se construye con paréntesis, «( expresión )», técnicamente esta sintaxis se llama expresión-S (o sexp)31; el «format» sería el nombre de la función que invocar, la cual cuenta con dos argumentos, «t» es el valor que se refiere al tipo de salida (en este caso en la terminal) y el valor que imprimir en pantalla «Hola, mundo».

Por ejemplo, las operaciones aritméticas en esta sintaxis se representan visualmente de la siguiente manera. Supongamos que tenemos la operación: 5 * (1 + 2), en la notación expresión-S sería: (* 5 (+ 1 2)).


Figura 4. Representación visual de la sintaxis expresión-S, utilizada en Lisp.

En la figura 4 superior se puede ver cómo la computación se ejecuta desde los nodos inferiores hasta los superiores. Así, es posible detectar el operador que usar en una operación binaria (suma o multiplicación, pues solo requiere de dos valores) sin problema.

La función de Fibonacci se define matemáticamente de la siguiente manera:

F0 = 0,F1 = 1

Fn = Fn–1 + Fn–2

Y en Lisp, la implementación se podría definir con el siguiente código:

(defun fib (n)

“Retorna el enésimo número de Fibonacci.”

(if (< n 2)

n

(+ (fib (- n 1))

(fib (- n 2)))))

La palabra «defun» define una nueva función; luego «fib» es el nombre de la función a definir junto, entre paréntesis, sus argumentos, en este caso solo uno: n. Luego, lo interesante comienza con la expresión «if», pues, si n>2 (véase que en esta sintaxis el operador es una función, por ello comienza al principio, así y 2 son los argumentos), entonces retornará n, en cambio, si n>=2, se aplicará una suma de manera recursiva. Donde se invoca la función «fib» restando uno y otra restando dos (según la definición matemática de Fibonacci). La descripción o comentario de la función se define entre comillas «”», como se puede ver en el ejemplo.

Aunque pueda parecer a primera vista confusa, la sintaxis es, sin duda, una excelente manera para pensar de manera recursiva y compacta. Funcional, después de todo. Que difiere del paradigma imperativo. Pues obliga al programador a crear pequeños «bloques», compactos, donde la mutabilidad de las variables es reducida.

Para aprender un lenguaje moderno que hace uso de esta sintaxis, y que a su vez es de la familia de Lisp, le recomiendo aprender Racket32.

2.4 TIEMPO COMPARTIDO

En 1961 se hizo la primera demostración del Compatible Time-Sharing System (CTSS), el primer sistema operativo que permitía ser usado simultáneamente por más de un usuario (algo que es natural hoy en día, por aquel tiempo no lo era). Fue desarrollado por un equipo del MIT33, donde se encontraba McCarthy y tenía un rol fundamental, ya que la idea del tiempo compartido fue dada por él —escribió un memorando sobre ello— años antes.

Puede imaginarse lo ineficiente que era que un mismo ordenador no pudiera ser usado al mismo tiempo por múltiples usuarios; gracias a ello no tenemos que turnarnos entre distintos usuarios para acceder al mismo servidor que tenemos en la nube... Sin duda, ¡fue un gran aporte!

Indirectamente se puede decir que McCarthy aportó a que la computación pueda ser vista como un servicio. Sistemas como Amazon AWS y Microsoft Azure (por decir algunos) nos permiten ocupar servidores a un bajo coste, cuántos recursos ocupas es lo que pagas, similar a lo que hacemos con servicios básicos como el agua y la energía. Después de todo, software como servicio.

2.5 TÉCNICAS DE PROGRAMACIÓN Y EL AJEDREZ

Además de su aporte con la creación de Lisp, McCarthy creó —en 1959— algo que es muy conocido por cualquier programador en la actualidad: el recolector de basura (garbage collector). Este permite liberar espacios de memoria de código que no está siendo utilizado en el programa. A diferencia de lenguajes como C, donde esa responsabilidad recae exclusivamente en el programador. En la actualidad es usado en lenguajes de programación fundamentales como Java, C#, Python, y muchos más.

Está técnica fue incluida en Lisp. Por otro lado, y también por aquellos años, hizo contribuciones a las versiones ALGOL 58 y 60.

McCarthy, junto a un grupo de estudiantes en el MIT, diseñaron lo que sería uno de los primeros programas para jugar al ajedrez. Este programa usaba una heurística llamada alpha-beta (muy popular en el área de la inteligencia artificial); la idea subyacente es reducir el espacio de búsqueda para anticiparse a los posibles movimientos del rival hacia el futuro, para, así, tomar la mejor opción posible (Nilsson, 2007, pág. 11).

Sobre esta heurística, McCarthy ya había propuesto algo similar, años antes, en su artículo —muy influyente—, «Programs with Commonsense» (programas con sentido común), escrito en 1959; presentó el sistema llamado Advice Taker (asesoramiento), un conjunto de reglas heurísticas que hacen uso de premisas para llegar a una conclusión. Un sistema lógico deductivo, para ser más específico: lógica de primer orden. Demostró que es posible crear programas utilizando la lógica como cimiento. Es considerado un artículo fundamental, y el primero en tratar la capacidad de razonamiento de sentido común en programas, como la pieza central en la IA.

2.6 SAIL (STANFORD ARTIFICIAL INTELLIGENCE LABORATORY)

Después de su breve paso por el MIT, McCarthy fue fundador del laboratorio de inteligencia artificial de la Universidad de Stanford (Stanford Artificial Intelligence Laboratory [SAIL, por sus siglas en inglés]), en 1962. Este laboratorio todavía existe. Y es un lugar donde se realizan diversas investigaciones sobre inteligencia artificial pioneras en el mundo.

Pues ahí, McCarthy desarrolló el primer sistema operativo basado en una pantalla, Thor34, para el ordenador PDP-1, que incluía ocho terminales de tubos de rayos catódicos (CRT, por sus siglas en inglés); muchas de las propuestas en Thor las encontramos en los ordenadores actuales.

Posteriormente, el laboratorio SAIL se abocó a la investigación en robótica, por ejemplo, al reconocimiento de objetos desde la captura en una cámara, lo que conocemos como visión por computadora. Lo que quiso lograr McCarthy y su equipo era que un robot fuera capaz no solo de discriminar diferentes objetos, sino, más bien, de describirlos, buscar que puedan «entender» su propio entorno. McCarthy ya por aquel entonces pensaba en robots capaces de discriminar objetos, pues, si quería que el robot recogiera e interactuara con objetos, debía ser capaz de detectarlos de manera independiente, representar su forma, y una buena manera de conseguirlo es a través de la robótica (Nilsson, 2007, pág. 17).

Es decir, si tenemos un robot que va grabando un vídeo y entra en una habitación, no solo debe detectar que no es el baño o la cocina, por el contrario, se necesita ir a los detalles: debe ser capaz de detectar cuáles son los objetos que se encuentran en la habitación, por ejemplo, la cama, la almohada, la lámpara, etc. Cabe decir que hoy en día esto ya es algo posible. Pero resulta extraordinario pensar que fue planteado en la década de 1960.

McCarthy tuvo prudencia sobre los avances de la IA; en 1973, se publicó un artículo que presentaba un resumen sobre el estado del arte del área (IA) hasta aquel momento, el autor fue Sir James Lighthill35. Sobre este trabajo McCarthy hizo una reseña que terminaba así:

La investigación en inteligencia artificial ha tenido, hasta ahora, un éxito parcial; su ritmo de progreso es quizá mayor que el de la mayoría de las ciencias sociales y menor que el de muchas ciencias físicas. Esto es quizá lo que cabía esperar, teniendo en cuenta la dificultad del problema. (Akman, 1990, pág. 367).

En el artículo publicado en la celebración de su cumpleaños número 80, en 2007, Patrick Hayes y Leora Morgenstern expresaron sobre McCarthy que «durante sus años en Stanford, John McCarthy fue supervisor de más de 30 estudiantes de doctorado; en la Mathematics Geneaology Database figura con 175 descendientes académicos». Es decir, no solo fue un gran investigador y pionero en diversas áreas, sino que, además, pudo influenciar a muchas nuevas generaciones de estudiantes, guiándolos en la senda de la investigación. Y no todos tienen dicha capacidad. A veces, grandes personajes de la historia —como hemos visto en este libro—se encierran tanto en sí mismos que no tienen interés —o tiempo— para trabajar en equipo. ¿Qué camino es mejor? Todos. Pues, como todas las cosas en la vida, cada persona es distinta, con distintas habilidades técnicas y personales; algunos no es que no quisieran trabajar con otros, simplemente se dieron cuenta de que no eran buenos en ello. De todas formas, si una persona tiene habilidades de liderazgo, creo que sería un error no usarlas para el bien de su propio campo. Lo principal es conocerse bien, saber cuáles son tus fortalezas y debilidades, y entonces elegir dónde puedes lograr un mayor impacto positivo.

2.7 FILOSOFÍA

McCarthy tuvo siempre interés por los problemas filosóficos que podía plantear la IA. Durante su última etapa de investigación publicó varios artículos sobre este tema. A continuación, mencionamos algunos.

En 1969, McCarthy, junto a Patrick Hayes, publicó el artículo «Some Philosophical Problems from the Standpoint of Artificial Intelligence» (algunos problemas filosóficos desde el punto de vista de la inteligencia artificial). La idea central de este trabajo fue que, para poder desarrollar exitosos sistemas de IA (programas que puedan razonar de forma inteligente), no podemos escapar de los problemas filosóficos que entrañan; describe distintas categorías de problemas filosóficos (metafísica y epistemología) que incumben a la IA. Por ejemplo, el libre albedrío en un universo determinista y las sentencias condicionales contrafactuales.

Más tarde profundizó sobre estos temas en su artículo «Epistemological Problems of Artificial Intelligence» (problemas epistemológicos de la inteligencia artificial), publicado en 1977. El enfoque de este artículo fue describir los problemas filosóficos de la representación del conocimiento. Además, incluye un sistema formal que extiende la lógica de primer orden llamada circunscripción, que se refiere a que, después de llegar a ciertas conclusiones, es posible que existan retractaciones de algunas de ellas (corrección). Su función es dar mayor variabilidad y flexibilidad a las conclusiones, evitando así la monotonía.

2.8 CONCLUSIÓN

Como dato anecdótico, McCarthy viajó muchas veces a Rusia (cuando aún era la Unión Soviética) desde 1965, de hecho, aprendió ruso y tuvo estrechos lazos con investigadores de aquel país. Cooperó con muchas causas benéficas. De trato fácil, fue una persona que inspiró a muchas personas con las cuales trabajó. Más allá de ser alguien prominente en la computación, todos los que lo conocieron dicen que fue un buen tipo, quizá por eso lo llamaban el «tío McCarthy».

McCarthy se retiró oficialmente el 1 de enero del 2001. Ganó tantos premios que nos faltaría espacio en esta página para enumerarlos todos, pero podemos decir que, sin temor a equivocarnos, el más famoso e importante fue el Premio Turing logrado en 1971. Falleció el 24 de octubre del 2011, a la edad de 84 años.

Algo sorprendente de McCarthy fue su amplitud y visión holística de la computación. Pudo trabajar y aportar en muchas áreas que, a primera vista, parecían estar dirigidas a distintas direcciones, no obstante, todas convergieron en la IA. Investigación en lenguajes de programación, sistemas deductivos para crear programas de IA, heurísticas para crear programas que jueguen al ajedrez, trabajo en sistemas operativos e incluso cuestiones alrededor de la robótica. Y no se limitó solo a ello, también tuvo interés por la ciencia cognitiva y la filosofía, es de suponer que por su afinidad con la IA. Conocer los límites de las máquinas, ya sean técnicos o filosóficos, es un tema en desarrollo. ¡Debemos continuar su camino!

2.9 OBRAS RECOMENDADAS

• 1959. «Programs With Common Sense». Un pionero artículo que presenta el concepto de conocimiento del sentido común y razonamiento.

• 1960. «Recursive Functions of Symbolic Expressions and Their Computation by Machine». El artículo donde se presenta Lisp. Totalmente recomendado para entender aspectos históricos del lenguaje.

• 1963. «Situations, Actions, and Causal Laws». Es el primer artículo que menciona implícitamente el cálculo de situación.

• 1969. «Some Philosophical Problems from the Standpoint of Artificial Intelligence». Excelente artículo para entender las ideas filosóficas sobre la inteligencia artificial.

• 1977. «Epistemological Problems of Artificial Intelligence». Trata varios problemas sobre la representación del conocimiento en sistemas de inteligencia artificial. Tiene una perspectiva filosófica.

• 1980. «Circumscription: A Form of Nonmonotonic Reasoning». Trata con mayor detalle la extensión de la lógica de primer orden, circunscripción. Ya tratada en el artículo de 1977.

________

21. El «entre paréntesis» es un juego de palabras que hace referencia a Lisp, el lenguaje de programación que creó McCarthy, el cual hace un extenso uso de paréntesis en su sintaxis.

22. Científico de la computación estadunidense. Fue unos de los primeros investigadores en lo que hoy se conoce como inteligencia artificial, junto a McCarthy.

23. Matemático estadounidense. Hizo trabajos fundamentales en topología algebraica.

24. Encargado del área de investigación de información en IBM de la ciudad de Poughkeepsie, Nueva York.

25. Allen Newell y Herber Simon son dos leyendas de la computación. Fueron galardonados —durante el mismo año— con el Premio Turing en 1975, por sus contribuciones a la inteligencia artificial y al procesamiento de listas. Ambos trabajaron en la creación del lenguaje de programación IPL (Information Processing Language). Simon publicaría un influyente libro sobre de qué trata la computación, titulado: The Sciences of the Artificial. Existe una tercera edición (1996) de la editorial MIT Press. Totalmente recomendado.

26. Para una introducción a la programación funcional y al cálculo lambda, puede dirigirse a mi libro: Computación y programación funcional, publicado por la editorial Marcombo, 2021.

27. Ganador del Premio Turing en 2003, por sus aportes a los fundamentos de la programación orientada a objetos.

28. Me acabo de dar cuenta de que mi anterior libro, Computación y programación funcional, en el cual uso Racket (un dialecto de Lisp), es más difícil de leer que una escritura cuneiforme. ¡Quizá debí de escribir un libro de criptografía!

29. Esto también se conoce como reflexión computacional (reflection), es la capacidad que tiene un programa de observar y cambiar su propio funcionamiento en tiempo de ejecución.

30. Visite https://lisp-lang.org/learn/getting-started/ para saber las instrucciones de instalación según su sistema operativo, y para profundizar más en el lenguaje.

31. https://es.wikipedia.org/wiki/Expresi%C3%B3n_S [Revisado en junio de 2021].

32. https://racket-lang.org/.

33. Entre ellos se encontraba Fernando J. Corbató, que fue el encargado de implementarlo. Ganador del Premio Turing en 1980 por sus aportes a los sistemas operativos. Es conocido por la ley que lleva su apellido, reza así: «El número de líneas de código que un programador puede escribir en un periodo de tiempo fijo es el mismo independientemente del lenguaje utilizado». También fue uno de los primeros en implementar la primera contraseña en un ordenador (véase https://www.wsj.com/articles/BL-DGB-35227 [Revisado en febrero del 2021]).

34. Fue presentado en el artículo «THOR a Display Based Time Sharing System» en 1967. Junto a Dan Brian, John Allen y Gary Feldman.

35. Fue un matemático británico. Pionero en el trabajo de aeroacústica, una rama que combina la acústica y la mecánica de fluidos, que estudia la generación de ruido producto de fuerzas aerodinámicas.

EDSGER WYBE DIJKSTRA
(1930-2002)
La búsqueda del rigor en la programación

Quizá no haya nadie más que luchara tanto por la formalización de la programación —como un área científica— que Dijkstra. Su deseo ferviente lo llevó a dejar sus estudios de física teórica para así trabajar en un área que por aquel entonces era desconocida, vista como algo menor por sus colegas físicos y que, en cambio, él encontró en ella la forma adecuada para expresar sus ideas. Esas ideas llenas de rigor que siempre buscó, cercanas a las matemáticas, las terminaría encontrando en la programación; porque, para Dijkstra, la programación es una rama de un gran árbol que se llama matemáticas. Esa concepción, tan profundamente arraigada, marcaría y sería la clave en toda su obra. Dijkstra fue una persona preocupada por su área, por su tiempo, reflexionó sobre cómo debería ser la ciencia de la computación (o informática), y ello es algo que destacar.

3.1 PRIMEROS AÑOS

Nació en 1930 en Rotterdam, Países Bajos. Su padre fue químico, y su madre, matemática. Su hogar hace prever que siempre estuvo inmerso en cuestiones científicas y que allí se le hacía hincapié en el valor del pensamiento matemático y científico.

Tempranamente destacó por su excelente rendimiento académico, tanto fue así que en sus estudios secundarios obtuvo en su examen final resultados extraordinarios. Logró, en su graduación en 1948, las calificaciones más altas en las asignaturas de matemáticas, física, química y biología. Su talento para las ciencias ya se vislumbraba; sus profesores y padres, por ello, lo incentivaron a seguir un camino ligado a la ciencia.

No obstante, la vida de grandes personas va ligada inseparablemente a las decisiones que ellos realizaron. Dijkstra por aquellos años tenía ciertas inquietudes idealistas que lo incentivaron a querer estudiar Derecho para representar a su país en las Naciones Unidas (ese era su sueño). Pronto, y después de realizar los exámenes de ingreso y comprobar los errores que había cometido, e incentivado por algunas personas, reflexionó sobre si debía privilegiar su habilidad sobre su idealismo. La decisión estaba tomada. La ciencia sería su camino. No siempre lo que se desea coincide con las capacidades.

Por ello, ingresó en la Universidad de Leiden (universidad más antigua de los Países Bajos) para estudiar en sus primeros años matemáticas y física. Luego, en los últimos años de estudio, se inclinaría hacia la física teórica, que era el área donde quería destacar y forjar su carrera.

3.2 DECISIONES DIFÍCILES

En 1951, sucedería lo que fue el primer acercamiento a la computación. Su padre había visto en la revista Nature (a la cual estaba suscrito) un anuncio sobre un curso intensivo de tres semanas sobre programación en Cambridge, Inglaterra. (Cabe señalar que por aquel momento acababa de llegar el ordenador EDSAC36 a la Universidad de Cambridge). Aún entusiasmado por la física teórica, Dijkstra vio los ordenadores como una herramienta que le podría ser muy útil para sus estudios, y, por ende, era indispensable asistir a dicho curso.

Su supervisor fue A. Haantjes, el cual conocía a Adriaan van Wijngaarden, que, a su vez, era el director del Computation Department at the Mathematical Center en Ámsterdam, lugar donde se dictaba el curso. Así fue como Dijkstra solicitó a Haantjes que se comunicara con Wijngaarden para incorporarlo al trabajo que estaba realizando. Un año después, Dijkstra sería oficialmente el primer «programador» de los Países Bajos (aunque dicha profesión no existía por aquellos años allí); todo esto gracias a la confianza que tuvieron, primero su supervisor A. Haantjes en recomendarlo, y luego Van Wijngaarden, por darle la oportunidad de trabajar con él en este nuevo campo que estaba surgiendo.

Es aquí donde Dijkstra comienza a tener un dilema que muchos profesionales se han planteado en su vida: el decidir si continuar en un área prometedora y respetable como la de ser un físico teórico, o, más bien, seguir por aquella otra área, desconocida por aquel entonces, llamada «programación de ordenadores», que le causaba cada día más interés. Todo esto sucedía mientras Dijkstra se veía inmerso trabajando con estos artefactos artificiales, de grandes dimensiones, que conocemos como ordenadores. Como él mismo dijo y revelaría más tarde:

Después de haber programado durante unos tres años, tuve una discusión con Van Wijngaarden, que era entonces mi jefe en el Centro Matemático de Ámsterdam, una discusión por la que le estaré agradecido mientras viva. El punto era que se suponía que debía estudiar física teórica en la Universidad de Leyden simultáneamente, y como encontraba las dos actividades cada vez más difíciles de combinar, tenía que decidirme, ya fuera dejar de programar y convertirme en un físico teórico real y respetable, o llevar mi estudio de la física a una finalización formal solamente, con un mínimo de esfuerzo, y convertirme en... sí, ¿qué?

¿Un programador? ¿Pero era una profesión respetable? Porque, después de todo, ¿qué era la programación? ¿Dónde estaba el sólido cuerpo de conocimiento que podía apoyarlo como una disciplina intelectualmente respetable? Recuerdo muy bien cómo envidiaba a mis colegas de hardware, quienes, cuando se les preguntaba por su competencia profesional, podían al menos señalar que lo sabían todo sobre tubos de vacío, amplificadores y demás, mientras que yo sentía que, ante esa pregunta, me quedaría con las manos vacías.

Lleno de temor llamé a la puerta del despacho de Van Wijngaarden, preguntándole si podía hablar con él un momento; cuando salí de su despacho unas horas más tarde, era otra persona. Porque, después de haber escuchado mis problemas pacientemente, él estuvo de acuerdo en que hasta ese momento no había una disciplina de programación, pero luego pasó a explicar en voz baja que los ordenadores automáticos estaban aquí para quedarse, que estábamos solo al principio y ¿no podría ser yo una de las personas llamadas a hacer de la programación una disciplina respetable en los años venideros? Este fue un punto de inflexión en mi vida y completé mi estudio de la física formalmente tan rápido como pude [haciendo su examen de doctorado en Leyden en marzo de 1956]. Una moraleja de la historia anterior es, por supuesto, que debemos ser muy cuidadosos cuando damos consejos a los jóvenes: ¡a veces los siguen! (Dijsktra, 1972)

Así fue como Dijkstra aceptó el desafío y consejo de Van Wijngaarden de transformar la programación en una disciplina respetable. ¿Rigurosa? También. Y es que para él una disciplina respetable es aquella que es formal, elegante, verificable y que se acerca lo máximo posible en su ímpetu a las matemáticas, las cual él tanto respetaba y disfrutaba. Es desde aquí en adelante que lo fundamental en su vida había comenzado.

Ücretsiz ön izlemeyi tamamladınız.

Türler ve etiketler

Yaş sınırı:
0+
Hacim:
250 s. 17 illüstrasyon
ISBN:
9788426733917
Yayıncı:
Telif hakkı:
Bookwire
İndirme biçimi:

Benzer kitaplar