Planificador (lenguaje de programación) - Enciclopedia

Planner (a menudo visto en publicaciones como "PLANNER", aunque no es un acrónimo) es un lenguaje de programación diseñado por Carl Hewitt en el MIT y publicado por primera vez en 1969. Primero, se implementaron subconjuntos como Micro-Planner y Pico-Planner, y luego esencialmente todo el lenguaje se implementó como Popler por Julian Davies en la Universidad de Edimburgo en el lenguaje de programación POP-2. Derivaciones como QA4, Conniver, QLISP y Ether (ver metáfora de la comunidad científica) fueron herramientas importantes en la investigación en inteligencia artificial en la década de 1970, lo que influenció el desarrollo comercial como el Entorno de Ingeniería del Conocimiento (KEE) y la Herramienta de Razonamiento Automatizado (ART).

Enfoque procedimental versus enfoque lógico
Los dos principales paradigmas para construir sistemas de software semánticos fueron el procedimental y el lógico. El paradigma procedimental fue representado por Lisp, que presentaba procedimientos recursivos que operaban en estructuras de lista.

El paradigma lógico fue representado por resolvers de derivación basados en procedimientos de prueba uniformes. Según el paradigma lógico, era “trampa” incorporar conocimiento procedimental.

Inserción procedimental del conocimiento
Planner fue inventado con el propósito de la inserción procedimental del conocimiento y fue un rechazo del paradigma de procedimiento de prueba uniforme, que

Convertía todo a forma clausal. Convertir toda la información a forma clausal es problemático porque oculta la estructura subyacente de la información. Luego, se utilizó la resolución para intentar obtener una prueba por contradicción añadiendo la forma clausal de la negación del teorema que se debía probar. Utilizar únicamente la resolución como regla de inferencia es problemático porque oculta la estructura subyacente de las pruebas. Además, usar la prueba por contradicción es problemático porque las axiomatizaciones de todos los dominios prácticos del conocimiento son inconsistentes en la práctica. Planner fue una especie de híbrido entre los paradigmas procedimental y lógico porque combinaba programabilidad con razonamiento lógico. Planner presentaba una interpretación procedimental de frases lógicas donde una implicación de la forma (P implica Q) puede ser interpretada procedimentalmente de la siguiente manera utilizando invocación dirigida por patrones:

Enlazamiento hacia adelante (antecedente):
Si afirmar P, afirmar Q
Si afirmar no Q, afirmar no P
Enlazamiento hacia atrás (consecuencia)
Si objetivo Q, objetivo P
Si objetivo no P, objetivo no Q
En este aspecto, el desarrollo de Planner fue influenciado por sistemas lógicos deductivos naturales (especialmente el de Frederic Fitch [1952]).

Implementación de Micro-Planner
Un subconjunto llamado Micro-Planner fue implementado por Gerry Sussman, Eugene Charniak y Terry Winograd y se utilizó en el programa de comprensión de lenguaje natural de Winograd SHRDLU, el trabajo de comprensión de historias de Eugene Charniak, el trabajo en razonamiento legal de Thorne McCarty y otros proyectos. Esto generó una gran cantidad de entusiasmo en el campo de la inteligencia artificial. También generó controversia porque propuso una alternativa al enfoque lógico que había sido uno de los paradigmas principales para la IA.

En SRI International, Jeff Rulifson, Jan Derksen y Richard Waldinger desarrollaron QA4, que se basó en las construcciones de Planner e introdujo un mecanismo de contexto para proporcionar modularidad para las expresiones en la base de datos. Earl Sacerdoti y Rene Reboh desarrollaron QLISP, una extensión de QA4 integrada en INTERLISP, proporcionando un razonamiento similar al de Planner en un lenguaje procedimental y desarrollado en su rico entorno de programación. QLISP fue utilizado por Richard Waldinger y Karl Levitt para verificación de programas, por Earl Sacerdoti para planificación y monitoreo de ejecución, por Jean-Claude Latombe para diseño asistido por computadora, por Nachum Dershowitz para síntesis de programas, por Richard Fikes para recuperación deductiva y por Steven Coles para un sistema experto temprano que guio el uso de un modelo econométrico.

Las computadoras eran caras. Tenían solo un procesador lento y sus memorias eran muy pequeñas en comparación con hoy en día. Por lo tanto, Planner adoptó algunas medidas de eficiencia, incluyendo las siguientes:

Se adoptó el retroceso para economizar en el uso del tiempo y el almacenamiento, trabajando y almacenando solo una posibilidad a la vez al explorar alternativas.
Se adoptó la asunción de nombres únicos para ahorrar espacio y tiempo, asumiendo que diferentes nombres se referían a diferentes objetos. Por ejemplo, nombres como Pekín (antiguo nombre capital de la RPC) y Beijing (transliteración actual de la RPC) se asumían como diferentes objetos.
Se podía implementar una asunción de mundo cerrado mediante la prueba condicional de si un intento de probar un objetivo exhaustivamente fallaba. Más tarde, esta capacidad recibió el nombre engañoso de "negación como fracaso" porque para un objetivo G, era posible decir: "si el intento de alcanzar G exhaustivamente falla, afirmar (No G)".

Orígenes de Prolog
Gerry Sussman, Eugene Charniak, Seymour Papert y Terry Winograd visitaron la Universidad de Edimburgo en 1971, difundiendo las noticias sobre Micro-Planner y SHRDLU y cuestionando el enfoque de procedimiento de prueba uniforme que había sido la columna vertebral de los lógico de Edimburgo. En la Universidad de Edimburgo, Bruce Anderson implementó un subconjunto de Micro-Planner llamado PICO-PLANNER, y Julian Davies (1973) implementó esencialmente todo el Planner.

Según Donald MacKenzie, Pat Hayes recordó el impacto de una visita de Papert a Edimburgo, que se había convertido en el "centro de la Inteligencia Artificial's Logicland", según el colega de Papert en el MIT, Carl Hewitt. Papert formuló su crítica al enfoque de resolución dominante en Edimburgo de manera elocuente: "...y al menos una persona se fue porque de Papert".

Los desarrollos anteriores generaron tensión entre los lógico de Edimburgo. Estas tensiones se agravaron cuando el Consejo de Investigación Científica del Reino Unido encargó a Sir James Lighthill que escribiera un informe sobre la situación de la investigación en IA en el Reino Unido. El informe resultante [Lighthill 1973; McCarthy 1973] fue muy crítico, aunque SHRDLU fue mencionado favorablemente.

Pat Hayes visitó Stanford donde se enteró de Planner. Cuando regresó a Edimburgo, intentó influir a su amigo Bob Kowalski para que tomara en cuenta Planner en su trabajo conjunto en la prueba automática de teoremas. "La prueba de teoremas por resolución se desvalorizó de un tema caliente a un relicto del pasado malgastado. Bob Kowalski se aferró a su fe en el potencial de la prueba de teoremas por resolución. Estudió a fondo Planner". Kowalski [1988] afirma: "Puedo recordar intentando convencer a Hewitt de que Planner era similar a SL-resolution". Pero Planner fue inventado con el propósito de la inserción procedimental del conocimiento y fue un rechazo del paradigma de procedimiento de prueba uniforme. Colmerauer y Roussel recordaron su reacción a enterarse de Planner de la siguiente manera:

"Mientras asistíamos a una convención de IJCAI en septiembre de 1971 con Jean Trudel, nos encontramos con Robert Kowalski de nuevo y escuchamos una conferencia de Terry Winograd sobre procesamiento de lenguaje natural. El hecho de que no usara una formalización unificada nos dejó perplejos. Fue en ese momento cuando nos enteramos de la existencia del lenguaje de programación de Carl Hewitt, Planner. La falta de formalización de este lenguaje, nuestra ignorancia de Lisp y, sobre todo, el hecho de que estábamos absolutamente dedicados a la lógica significaron que este trabajo tuvo poco influjo en nuestra investigación posterior".

En otoño de 1972, Philippe Roussel implementó un lenguaje llamado Prolog (una abreviatura de PROgrammation en LOGique – francés para "programación en lógica"). Los programas de Prolog son genéricamente de la siguiente forma (que es un caso especial del enlazamiento hacia atrás en Planner):

Cuando objetivo Q, objetivo P1 y ... y objetivo Pn

Prolog duplicó los siguientes aspectos de Micro-Planner:

Invocación dirigida por patrones de procedimientos desde objetivos (es decir, enlazamiento hacia atrás)
Una base de datos indexada de procedimientos dirigidos por patrones y frases concretas.
Abandonar el paradigma de completitud que había caracterizado el trabajo anterior sobre prueba de teoremas y reemplazarlo con el paradigma de inserción procedimental de conocimiento del lenguaje de programación.

Prolog también duplicó las siguientes capacidades de Micro-Planner que eran prácticamente útiles para las computadoras de la época porque ahorraban espacio y tiempo:

Estructura de control de retroceso
Asunción de nombres únicos, mediante la cual se asume que diferentes nombres se refieren a entidades distantes, por ejemplo, Pekín (antiguo nombre capital de la RPC) y Beijing (transliteración actual de la RPC) se asumen como diferentes entidades.
Reificación del fracaso. La manera en que Planner establecía que algo era probable era intentándolo como un objetivo y la manera en que establecía que algo no era probable era intentándolo como un objetivo y fallando explícitamente. Por supuesto, la otra posibilidad es que el intento de probar el objetivo se ejecute para siempre y nunca devuelva ningún valor. Planner también tenía una construcción de (no expresión) que tenía éxito si la expresión fallaba, lo que dio lugar al término "Negación como fracaso" en Planner.

El uso de la asunción de nombres únicos y la negación como fracaso se volvió más cuestionable cuando se prestó atención a los sistemas abiertos.

Las siguientes capacidades de Micro-Planner se omitieron de Prolog:

Invocación dirigida por patrones de planes procedimentales desde afirmaciones (es decir, enlazamiento hacia adelante)
Negación lógica, por ejemplo, (no (humano Socrates)).
Prolog no incluyó la negación en parte porque plantea problemas de implementación. Considere, por ejemplo, si se incluyera la negación en el siguiente programa de Prolog:

no Q.
Q :- P.

El programa anterior no podría probar no P a pesar de que sigue por las reglas de lógica matemática. Esto ilustra el hecho de que Prolog (como Planner) está destinado a ser un lenguaje de programación y, por lo tanto, no (por sí solo) prueba muchas de las consecuencias lógicas que siguen de una lectura declarativa de sus programas.

El trabajo en Prolog fue valioso en que era mucho más simple que Planner. Sin embargo, a medida que se necesitaba una mayor capacidad expresiva en el lenguaje, Prolog comenzó a incluir muchas de las capacidades de Planner que se dejaron de lado en la versión original de Prolog.

Referencias


= Bibliografía =


Enlaces externos
Cuenta de Alain Colmerauer y Philippe Roussel de 1992 sobre el nacimiento de Prolog en la Wayback Machine (archivado el 27 de julio de 2003)