<$BlogRSDUrl$>

Pro·Log·[IR]

Programación Lógica y Recuperación de Información

«Algorithm = Logic + Control» Robert Kowalski (1979)

¡Importante! esta página hace uso de estilos recogidos en la especificación CSS2, no soportados por el navegador que está utilizando. Por favor, lea esta recomendación al respecto.

Archivo

Guardado por meses.

Enlaces

Los siguientes listados son una referencia a partir de la cual ampliar la búsqueda de sitios relacionados (i).

Bitácoras en castellano

Bitácoras en inglés

Directorios, metablogs

Programación lógica, Inteligencia Artificial, Recuperación de Información

Usabilidad, Arquitectura de la Información

Listas, foros, wikis

Matemáticas, ciencias

Miscelánea

Búsquedas

Búsqueda simple en varios de los motores más conocidos. Para mayor precisión, entrar en la página correspondiente e ir al apartado de búsqueda avanzada.

Búsqueda con Google
 

Búsqueda con Yahoo!
 

Búsqueda con AlltheWeb

Varios

Esta página traducida:

Traducción al catalán, internostrum; traducción al portugués, universia.

Reciba un aviso de nuevos comentarios (por Bloglet).


Agregue este sitio a su lector de "feeds" (sindicación mediante el sistema Atom).

Sobre este sitio

Espacio dedicado a la programación lógica y la recuperación de información, con una atención especial al lenguaje Prolog y otros lenguajes afines, pertenecientes al paradigma lógico y declarativo. También se tratará de hablar de estos temas desde la perspectiva de la Biblioteconomía y la Documentación.

En esta página

17.11.03

The Prolog Dictionary y otras referencias terminológicas

Como su propio nombre indica, "The Prolog Dictionary" es un diccionario elaborado por Bill Wilson (profesor del Grupo de Inteligencia Artificial, UNSW), en el que se recogen términos, conceptos y definiciones relacionadas con este lenguaje de programación lógica. Los conceptos analizados (aridad, recursión, corte, cláusula, backtracking, etc.), si bien no son muchos, vienen acompañados de una breve pero clarificadora explicación, perfecta para entender, de forma esquemática, los principios esenciales que le sirven de fundamento. Sería interesante retomar esta iniciativa, realizando una traducción al castellano, con entradas adicionales, no referidas únicamente a Prolog, sino en general a la programación lógica y sus lenguajes, en aquellos aspectos comunes con aquel. Por ejemplo, se podrían añadir, entre otros muchos, los siguientes términos y conceptos:

boundary condition
Condición límite; se refiere al establecimiento de un mecanismo de parada en la implementación de algoritmos recursivos, de forma que estos no entren en un bucle infinito en un punto determinado de su proceso de ejecución.
DCG
Definitive Clause Grammar o Gramática de Cláusulas Definidas. Tipo de notación especial, extensión sintáctica de la sintáxis ordinaria de Prolog, cuyo objeto es la creación de gramáticas formales en forma abreviada, y en consecuencia simplificar y hacer más legibles los analizadores sintácticos. Por ejemplo, la siguiente regla gramatical:
oracion(S0,S):- sintagma_nominal(S0,S1), sintagma_verbal(S1,S).

se escribiría, atendiendo a este tipo de notación, como sigue:

oracion --> sintagma_nominal, sintagma_verbal.
fact
Hecho de la base de datos (o "base de conocimientos"), e.g.
es_de_color(cielo,azul).
autor(nombre(robert), apellidos([kowalski])).
to fail
Fracaso de un objetivo. El predicado predefinido (built-in predicate) "fail/0" hace fracasar siempre un objetivo, y se utiliza en combinación con el predicado "repeat/0" para forzar procesos recursivos en tanto no se cumpla determinada condición.
infix operator
Operador en posición infija, e.g. "\=" en "X \= Y". El operador "\=" comprueba si dos variables X e Y cualesquiera son números distintos, fallando en caso contrario, es decir, si son iguales; para realizar la comparación entre cadenas de caracteres alfanuméricos o "átomos", se utilizan los operadores "==" y "\==".
leashed event
Evento con sujección; esta expresión se refiere a las cuatro clases de eventos que permiten describir la ejecución de programas en Prolog en modo de traza: CALL (llamada), EXIT (salida), REDO (reevaluación) y FAIL (fracaso), cuando están asociados a puntos de sujección mediante puntos espía (spy points) decididos previamente por el programador. Cuando se cumple un evento con sujección, el intérprete permite modificar la ejecución posterior del proceso de depuración del programa cuyo funcionamiento está siendo analizado.

Por otra parte, la asociación de los eventos con objetivos, en este proceso, se realiza asociando a estos últimos un número entero que funciona como identificador unívoco. El funcionamiento por defecto del proceso de seguimiento de la ejecución de objetivos, muestra en pantalla la sucesión de los eventos sin sujección alguna, y por tanto sin posibilidad de modificación de dicho proceso.

to match
Hacer coincidir, corresponder con; este significado se contextualiza en los procesos de unificación de variables y consecución de objetivos en las consultas.
parser, parsing
Analizador sintáctico, análisis sintáctico; un analizador sintáctico se encarga de la construcción de árboles de análisis de las oraciones de una lengua, capaces de representar la estructura sintagmática de las mismas, e.g. para la oración "John likes Mary":
s(np(john),vp(v(likes),np(mary)))

Mediante el programa adecuado, es posible visualizar esta estructura gramatical en forma de árbol descendente:

               s
               |
      +-------------+
      np            vp
      |             |
      |        +-------+
      |        v       np
      |        |       |
      |        |       |
     john    likes    mary
pattern matching:
Mecanismo de comparación de patrones; tiene lugar cuando un objetivo coincide con la cabeza de una regla, que es la parte que se sitúa antes del operador infijo ":-".
postfix operator
Operador en posición sufija, aquel que se coloca después de su argumento. Se entiende por tanto, en contraposición, que el operador prefijo (prefix operator) se sitúa delante del argumento. Así por ejemplo, el operador infijo "+" puede también funcionar en Prolog como operador prefijo, ya que "2+9" es equivalente a "+(2,9)".
satisfaction flow
Flujo de resolución; representación gráfica de la resolución de objetivos mediante cajas distribuidas de arriba a abajo, unidas mediante flechas descendentes cuando los objetivos parciales representados por esas cajas ya han sido satisfechos.
shared variables
Variables compartidas; dos variables, sin instanciar, están compartidas cuando se hacen coincidir una con otra, de forma que cuanto una de ellas queda instanciada, también lo hace la otra.
to sort, sorting
Ordenar, ordenación; la ordenación se lleva a cabo mediante diversos procedimientos algorítmicos: Bubble Sort, Selection Sort, Insertion Sort, Quicksort, Tree Sort, Merge Sort, etc. Estos procedimientos tratan de resolver el problema planteado por la búsqueda de los caminos más cortos (es decir, más eficientes en términos de tiempo y recursos de computación) entre los nodos de un grafo.
sorted-tree
Árbol (de búsqueda) ordenado. Los árboles de búsqueda o decisión adoptan la estructura gráfica de un grafo (dirigido o no), y son una representación de los procesos inherentes a las tareas de clasificación de datos.
spy point
Punto espía; referido a los procesos de depuración (debugging) del código.
trace, tracing
Seguir, seguimiento; hace referencia a un modo de ejecución en el que se visualiza gráficamente la traza o forma en que se resuelven los objetivos y se computan internamente las consultas por parte del intérprete. Una vez que se lanza la orden "trace/0", el resto de la resolución de objetivos sigue este modo gráfico de ejecución, en tanto no se detenga con el predicado "notrace/0".

Parte de esta lista de conceptos se ha tomado de la obra de C.S. Clocksin y W.F. Mellish, ya mencionada en otras ocasiones, "Programming in Prolog" (Springer-Verlag, 1981), y por supuesto son una mínima parte de los que podrían ser añadidos a una versión ampliada del diccionario que venimos comentando.

Por otro lado, "The Prolog Dictionary" forma parte de una serie formada por otros tres diccionarios del mismo autor, referidos a la IA en general y a dos de sus áreas particulares de aplicación:

Destacan por la gran cantidad de conceptos definidos, y la inclusión de numerosas referencias cruzadas entre términos, que sin duda enriquecen su utilidad práctica. Desafortunadamente parecen llevar un cierto tiempo sin ser actualizados. En cualquier caso contienen un bagaje de conceptos que hace más que recomendable su consulta, y por otra parte, al menos en lo que se refiere al lenguaje Prolog, se trata de una iniciativa poco frecuente, la elaboración de un glosario electrónico unificado de términos referidos a este lenguaje, salvo indicación contraria por parte de algún lector que tenga conocimiento de otro trabajo de similares fines y características. Así por ejemplo, FOLDOC, siendo un diccionario de temática muy relacionada, tiene sin embargo un carácter más introductorio y genérico (no se incluye código explicativo, como si encontramos en "The Prolog Dictionary"). En todo caso se trata de una referencia de consulta también más que recomendable:

"[...] is a searchable dictionary of acronyms, jargon, programming languages, tools, architecture, operating systems, networking, theory, conventions, standards, mathematics, telecoms, electronics, institutions, companies, projects, products, history, in fact anything to do with computing."

La iniciativa está abierta a la colaboración de cualquier usuario, mediante la aportación de definiciones no recogidas en el índice, o la ampliación de aquellas no suficientemente aclaradas o extensas. Además, el conjunto del diccionario se puede descargar comprimido en un único archivo.

Sin pretensión alguna de exhaustividad, se pueden mencionar otros diccionarios, glosarios y recopilaciones terminológicas referidas al área de la computación, la programación, la RI, etc., a saber:

En castellano:

Un proyecto bastante más ambicioso, en tanto que pretende convertirse en una encliclopedia general del conocimiento humano, fundamentada sobre la base de una filosofía abierta, es la Wikipedia: la versión original, y más completa, está en inglés; también existe una versión en castellano, entre otros idiomas. La entrada de la versión inglesa dedicada al lenguaje Prolog es bastante decente. Todas las referencias proporcionadas son en cualquier caso un limitado reflejo de lo que seguramente se puede localizar buscando con un poco de paciencia.

Volviendo al comentario de los diccionarios elaborados por Bill Wilson, en la sección "Lecture Notes" -otras ubicaciones: [1] [2]- enlazada desde los mismos, correspondiente a uno de los cursos impartidos por dicho profesor, se localizan una serie de notas de curso e introducciones relacionadas con la representación del conocimiento, el aprendizaje de máquina (machine learning), el procesamiento del lenguaje natural (NLP), la visión computerizada (computer vision) y la programación en Prolog, destacando, en este último caso, como referencia de consulta, el "iProlog Programmer's Manual". Si bien referido a una implementación particular de Prolog (iProlog, que incluye extensiones del lenguaje orientadas fundamentalmente hacia procesos de data mining), el manual contiene varias partes introductorias dedicadas a los fundamentos básicos de este lenguaje, bajo el epígrafe "Introduction to Prolog Programming".

Nótese que el enlace al "iProlog Programmer's Manual" desde "The Prolog Dictionary" es incorrecto, y que las figuras de algunas partes del manual aparecen deformadas, seguramente por algún problema a la hora de trasladar el formato del documento original a HTML. Las figuras correctas se pueden ver en una ubicación alternativa del manual (si bien no incluye la parte referida a las extensiones de iProlog). Las siguientes introducciones están basadas en partes del mismo: [1] [2] [3].

Algunas de las disertaciones o "lecture notes" a las que hacíamos referencia, están en formato PS. Por otro lado, muchas de ellas contienen en su cabecera o parte inicial un campo de palabras clave que remiten, mediante hiperenlaces, a definiciones del diccionario correspondiente, según la materia tratada.

PD: Demian, en GuebEstudio, ha venido publicando desde hace bastantes días un bloque de anotaciones referidas a la IA (ver la categoría Introducción a la informática), en el que podemos encontrar apuntes sobre generalidades de este área de la ciencia cognitiva y computacional, sistemas expertos y representación del conocimiento, RNA, principales lenguajes de programación de aplicación específica a la IA (Lisp, Prolog, Smalltalk, ...), etc. No dejen de leerlos.

[0] comentarios | # | lista |


Pro·Log·[IR],

Publicación: Blogger | Estadísticas: eXTReMe Tracking

Se recomienda ver este sitio con Mozilla 1+, Firefox 0.8+ ó Netscape 7+. Si no queda más remedio, con IE 6+. Si lo desea, comunique cualquier problema al respecto. También será bien recibida cualquier sugerencia sobre el contenido. La fuente de letra preferente es Georgia. Se prohibe la utilización del diseño de la página salvo autorización expresa del autor. Los contenidos escritos son de uso libre, siempre que se cite la fuente.