lunes, 27 de octubre de 2008

Algo interesante sobre jess . . .

El lenguaje JESS

JESS (Java ExpertSystem Shell) es un lenguaje de programación basado en CLIPS. Fue creado por Ernest Friedman-Hill de Sandia National Laboratories en Livermore, CA. Su funcionamiento se basa en reglas y usa el algoritmo Rete.


Se puede usar de dos modos:

Por un lado se puede usar como un Sistema Experto (Sistema Basado en Conocimiento). Un Sistema Experto es un programa que emula al razonamiento humano, de manera que ejecuta ciertas reglas (definidas por el programador) sobre el conocimiento que se tiene.
Este uso se aplica a los agentes inteligentes, por lo que es donde profundizaremos más.

Por otro lado, JESS se ha escrito en JAVA y se puede integrar perfectamente en él accediendo directamente en sus clases y librerías para conseguir un desarrollo más rápido de las aplicaciones.


JESS también puede tener otros usos como incluirse en navegadores o en applets (con la clase jess.ConsoleApplet), pero no es aconsejable porque suele ocupar bastante, es mejor dejarlo en el servidor.



JESS vs. Prolog

JESS y Prolog son lenguajes declarativos, es decir, basados en las matemáticas y en la lógica, en oposición a otros tipos de lenguajes más comprensibles para el razonamiento humano.

Por ser del mismo tipo, el hecho de conocer uno de estos lenguajes te puede ayudar mucho a la hora de empezar a estudiar el otro. Aún así difieren en ciertas características que sería interesante tener en cuenta:

En Prolog prevalece el uso de menos espacio en memoria que la rapidez, al contrario de JESS.

Prolog se centra en responder preguntas, mientras que JESS actúa en respuesta a entradas.

En Prolog, si se quiere saber de nuevo un resultado, se debe volver a calcular. Mientras, en JESS los resultados (hechos que se obtienen) quedan almacenados.

La diferencia más importante y que tiene bastante que ver con las anteriores es que Prolog se basa en el encadenamiento hacia atrás, mientras que JESS usa el encadenamiento hacia adelante.

El encadenamiento hacia atrás (backwards chaining) parte de una hipótesis inicial y luego intenta demostrarla con la información que se tiene.
El encadenamiento hacia delante (forwards chaining) consiste en aplicar al conocimiento base otro conocimiento (las reglas) para obtener nuevos resultados.
En realidad JESS usa el algoritmo Rete de un modo distinto a otros sistemas, pues también incluye un tipo de encadenamiento hacia atrás.

En este apartado podrás ver cómo instalar y ejecutar JESS. También sus Elementos básicos, como las variables, las funciones y las estructuras de programación, como el bucle for.

No hay comentarios: