Джесс (язык программирования)

Джесс
Разработчик(и)Национальные лаборатории Сандия
Первоначальный выпуск1995 ; 30 лет назад ( 1995 )
Стабильный релиз
7.1p2 / 5 ноября 2008 г. ; 16 лет назад ( 2008-11-05 )
Написано вЯва
ПлатформаЯва
ЛицензияЗапатентованная , общественная собственность
Веб-сайтwww.jessrules.com

Jess — это механизм правил для вычислительной платформы Java , написанный на языке программирования Java . Он был разработан Эрнестом Фридманом-Хиллом из Sandia National Laboratories . [1] Это надмножество языка CLIPS . [1] Впервые он был написан в конце 1995 года . [1] Язык обеспечивает программирование на основе правил для автоматизации экспертной системы и часто называется оболочкой экспертной системы . [1] В последние годы также были разработаны интеллектуальные агентские системы, которые зависят от аналогичной способности.

Вместо процедурной парадигмы , где одна программа имеет цикл , который активируется только один раз, декларативная парадигма, используемая Jess, применяет набор правил к набору фактов непрерывно с помощью процесса, называемого сопоставлением с образцом . Правила могут изменять набор фактов или выполнять любой код Java. Для выполнения правил используется алгоритм Rete [1] .

Лицензия

Лицензирование Jess является бесплатным программным обеспечением для образования и государственного использования, и является проприетарным программным обеспечением , требующим лицензии, для коммерческого использования. В отличие от этого, CLIPS, который является основой и начальным кодом для Jess, является бесплатным и открытым программным обеспечением .

Примеры кода

Примеры кода:

; это комментарий( связать ?x 100 )  ; х = 100( deffunction max ( ?a ​​?b ) ( if ( > ?a ?b ) then ?a else ?b ))           ( дефакты моя комната ( мебель стул ) ( мебель стол ) ( мебель кровать ) )        ( deftemplate car ( слот цвет ) ( слот пробег ) ( слот стоимость ) )        ( assert ( автомобиль ( цвет красный ) ( пробег 10000 ) ( стоимость 400 )))       

Пример кода:

( clear ) ( deftemplate blood-donor ( slot name ) ( slot type )) ( deffacts blood-bank ; поместить имена и их типы в [[рабочую память]] ( blood-donor ( name "Alice" )( type "A" )) ( blood-donor ( name "Agatha" )( type "A" )) ( blood-donor ( name "Bob" )( type "B" )) ( blood-donor ( name "Barbara" )( type "B" )) ( blood-donor ( name "Jess" )( type "AB" )) ( blood-donor ( name "Karen" )( type "AB" )) ( blood-donor ( name "Onan" )( type "O" )) ( blood-donor ( name "Osbert" )( type "O" )) ) ( defrule can-give-to-same-type-but-not-self ; обрабатывает A > A, B > B, O > O, AB > AB, но не N1 > N1 ( донор крови ( имя ? имя )( тип ? тип )) ( донор крови ( имя ? имя2 )( тип ? тип2 &: ( eq ? тип ? тип2 ) &: ( neq ? имя ? имя2 ) )) => ( распечатка t ? имя " может сдать кровь " ? имя2 crlf ) ) ( defrule O-дает-другим-но-не-себе ; O to O охватывается в правиле выше ( донор крови ( имя ? имя )( тип ? тип &:( eq ?type "O" ))) ( донор-крови ( имя ?name2 )( тип ?type2 &: ( neq ?type ?type2 )                                                                                    &: ( neq ?name ?name2 ) )) => ( printout t ?name " может сдать кровь " ?name2 crlf ) ) ( defrule A-or-B-gets-to-AB ; случай O дает AB, а AB дает AB уже рассмотрен ( blood-donor ( name ?name )( type ?type &: ( or ( eq ?type "A" ) ( eq ?type "B" )))) ( blood-donor ( name ?name2 )( type ?type2 &: ( eq ?type2 "AB" ) &: ( neq ?name ?name2 ) )) => ( printout t ?name " может сдать кровь " ?name2 crlf ) ) ;( watch all) ( reset ) ( run )                                               

Смотрите также

Ссылки

  1. ^ abcde Хеммер, Маркус К. (2008). Экспертные системы в химических исследованиях. CRC Press. С.  47–48 . ISBN 9781420053241. Получено 30 марта 2012 г. . ISBN  978-1-4200-5323-4

Дополнительные источники

  • Фридман-Хилл, Эрнест (2003). Джесс в действии: системы на основе правил в Java. Manning Publications. ISBN 9781930110892. Получено 30 марта 2012 г. . ISBN  1-930110-89-8
  • Официальный сайт
Взято с "https://en.wikipedia.org/w/index.php?title=Jess_(язык_программирования)&oldid=1229764834"