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

Tekst
0
Recenzje
Przeczytaj fragment
Oznacz jako przeczytane
Czcionka:Mniejsze АаWiększe Aa

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.

 
To koniec darmowego fragmentu. Czy chcesz czytać dalej?