Camilo Chacón Sartori

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


Скачать книгу

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.

      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.

      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.

      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.

Illustration

      Un breve tutorial sobre Lisp

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

      (format t “Hola, mundo”)

      Por ejemplo, las operaciones