Aprender inteligencia artificial prácticamente es un sinónimo de aprender a programar en Python. Python, se ha convertido en el lenguaje de programación más usado hoy en día en proyectos de inteligencia artificial, sobre todo en el campo del ‘machine learning‘.
Aunado a ello, además de su popularidad como lenguaje de programación generalista (y también en campos relacionados, como el análisis de datos) que todas las grandes bibliotecas de IA (Keras, TensorFlow, SciPy, Pandas, Scikit-learn, etc) estén diseñadas para trabajar con Python.
Pero los conocedores aceptaran que la inteligencia artificial es mucho más antigua que Python, existieron otros lenguajes de programación que sobresalieron en esta área durante muchos años antes de ser suplidos. Veamos cuáles eran:
IPL
El Information Processing Language (IPL) es un lenguaje de bajo nivel (casi tanto como el ensamblador) creado en 1956 con el objetivo de demostrar que los teoremas expresados en el ‘Principia Mathematica‘ por los matemáticos y filósofos Bertrand Russell y Alfred North Whitehead podían ser probados recurriendo a la computación.
IPL introdujo en la programación características que hoy siguen plenamente vigentes como los símbolos, la recursividad o el uso de listas. Este último, un tipo de dato tan flexible que permitía a su vez introducir una lista como elemento de otra lista (que a su vez podía introducir otra lista como elemento, etc.) resultó fundamental a la hora de usarlo para desarrollar los primeros programas de IA, como Logic Theorist (1956) o el programa de ajedrez NSS (1958).
Pese a su importancia en la historia de la IA, varios factores (el primero de ellos, lo complejo de su sintaxis) hizo que fuera rápidamente sustituido por el siguiente lenguaje de la lista.
LISP
LISP es el más antiguo de los lenguajes de programación dedicados a la inteligencia artificial entre aquellos que aún siguen en uso; y también es el segundo lenguaje de programación de alto nivel de la historia: fue creado en 1958 (un año después que FORTRAN y uno antes que COBOL) por John McCarthy, quien dos años antes ya había sido responsable de acuñar el término ‘inteligencia artificial‘.
McCarthy había desarrollado poco antes un lenguaje denominado FLPL (FORTRAN List Processing Language) una extensión de FORTRAN, y decidió recopilar en un mismo lenguaje la naturaleza de alto nivel de FLPL, todas las novedades aportadas por IPL, y el sistema formal conocido como cálculo lambda. El resultado fue bautizado como LISP (de ‘LISt Processor’).
Al mismo tiempo que desarrollaba FLPL, McCarthy también formulaba la llamada ‘poda alfa-beta’, una técnica de búsqueda que reduce el número de nodos evaluados en un árbol de juego. Y, para implementarla, introdujo un elemento tan fundamental en la programación como son las estructuras if-then-else.
Rápidamente, los programadores se enamoraron de la libertad que les ofrecía la flexibilidad de este lenguaje, y de su faceta como herramienta de prototipado. Así, durante el siguiente cuarto de siglo, LISP se convirtió en el lenguaje de referencia en el ámbito de la IA. Con el tiempo, LISP se fragmentó en toda una serie de ‘dialectos’ aún vigentes en varios ámbitos de la computación, como Common LISP, EMACS LISP, Clojure, Scheme o Racket.
PROLOG
El lenguaje PROLOG (del francés ‘programmation en logique‘), nació en un momento duro para el desarrollo de la inteligencia artificial, a las puertas del primer ‘Invierno de la IA’, cuando el furor inicial por las aplicaciones de esta tecnología se estrellaron contra el escepticismo provocado por la ausencia de avances, lo que generó desinversión pública y privada en su desarrollo.
Concretamente, fue creado en 1972 por el profesor de ingeniería informática francés Alain Colmeraurer, con el objetivo de introducir en el desarrollo de software el uso de las cláusulas de Horn, una fórmula de la lógica proposicional. Aunque globalmente nunca llegó a ser tan usado como LISP, sí se convirtió en el principal lenguaje de desarrollo de IA en su continente de origen (así como en Japón).
Al ser un lenguaje basado en el paradigma de programación declarativa —como LISP, por otra parte—, su sintaxis es muy diferente de la de los típicos lenguajes de programación imperativa como Python, Java o C++.
La facilidad que PROLOG proporciona a la hora de gestionar métodos recursivos y las coincidencias de patrones provocaron que IBM apostara por implementar PROLOG en su IBM Watson para tareas de procesamiento de lenguaje natural.