Jess (lenguaje de programación)

Compartir Imprimir Citar

Jess es un motor de reglas para la plataforma Java que fue desarrollado por Ernest Friedman-Hill de Sandia National Labs. Es un superconjunto del lenguaje de programación CLIPS. Fue escrito por primera vez a fines de 1995. El lenguaje proporciona programación basada en reglas para la automatización de un sistema experto, y con frecuencia se lo denomina shell de sistema experto. En los últimos años también se han desarrollado sistemas de agentes inteligentes, que dependen de una capacidad similar.

En lugar de un paradigma procedimental, donde un solo programa tiene un bucle que se activa solo una vez, el paradigma declarativo utilizado por Jess aplica continuamente una colección de reglas a una colección de hechos mediante un proceso llamado coincidencia de patrones< /i>. Las reglas pueden modificar la colección de hechos o pueden ejecutar cualquier código Java. Utiliza el algoritmo Rete para ejecutar reglas.

Licencia

Si bien CLIPS tiene licencia de código abierto, Jess no es de código abierto. JESS es gratuito para uso educativo y gubernamental, pero se requiere una licencia para usar JESS para sistemas comerciales.

Ejemplos de código

Ejemplos de código:

; es un comentario()Bind ?x 100); x = 100()disfunción max ()?a ? b) ()si () ?a ? b) entonces ?a más ? b)()Deffacts mi habitación ()muebles silla) ()muebles cuadro) ()muebles cama) )()deftemplate coche ()ranura color) ()ranura kilometraje) ()ranura valor) )()afirmación ()coche ()color rojo) ()kilometraje 10000) ()valor 400))

Código de muestra:

()clara)()deftemplate Donante de sangre ()ranura Nombre) ()ranura Tipo)()Deffacts banco de sangre ; poner nombres " sus tipos en [[la memoria de trabajo]] ()Donante de sangre ()Nombre "Alice")Tipo "A") ()Donante de sangre ()Nombre "Agatha")Tipo "A") ()Donante de sangre ()Nombre "Bob")Tipo "B") ()Donante de sangre ()Nombre "Barbara")Tipo "B") ()Donante de sangre ()Nombre "Jess")Tipo "AB") ()Donante de sangre ()Nombre "Karen")Tipo "AB") ()Donante de sangre ()Nombre "Onan")Tipo "O") ()Donante de sangre ()Nombre "Osbert")Tipo "O") )()defrule puede-dar-a-samo-tipo-pero-no-self ; mangos A, B > B, O > O, AB > AB, pero no N1 ()Donante de sangre ()Nombre ? Nombre)Tipo ? Tipo) ()Donante de sangre ()Nombre ?name2)Tipo ? Tipo2 "()eq ? Tipo ? Tipo2) " ()neq ? Nombre ?name2) ) = ()impresión t ? Nombre "puede darle sangre a " ?name2 crlf) )()defrule O-gives-to-others-but-not-itself ; O to O cover in above rule ()Donante de sangre ()Nombre ? Nombre)Tipo ? Tipo "()eq ? Tipo "O")) ()Donante de sangre ()Nombre ?name2)Tipo ? Tipo2 " ()neq ? Tipo ? Tipo2) " ()neq ? Nombre ?name2) ) = ()impresión t ? Nombre "puede darle sangre a " ?name2 crlf) )()defrule A-o-B-gives-to-AB ; caso O da a AB y AB da a AB ya tratado con ()Donante de sangre ()Nombre ? Nombre)Tipo ? Tipo "()o ()eq ? Tipo "A") ()eq ? Tipo "B" ))) ()Donante de sangre ()Nombre ?name2)Tipo ? Tipo2 " ()eq ? Tipo2 "AB") " ()neq ? Nombre ?name2) ) = ()impresión t ? Nombre "puede darle sangre a " ?name2 crlf) ); (ver todos)()reseteo)()Corre)