Planner | |
---|---|
Парадигма | Логічне програмування |
Дата появи | 1969 |
Творці | Карл Хьюїт[en] |
Діалекти | Ether |
Вплинула на | QA-4,Popler,Conniver іQLISP |
Planner (іноді записується великими літерами якPLANNER, врадянській літературі також застосовувалосятранслітерованеПле́нер) —функційно-логічнамова програмування, схожа за своїм синтаксисом зЛіспом.
Була розробленаКарлом Хьюїтом[en] в ЛабораторіїШтучного ІнтелектуМассачусетського Технологічного Інституту. Перша публікація з описом мови з'явилася 1969 року (Hewitt, 1969).
Planner — перша мова логічного програмування, в якій було закладено можливість автоматичного виведення результату з даних і заданих правил перебору варіантів (сукупність яких називаласяпланом). Planner застосовувалася для того, щоби знизити вимоги до обчислювальних ресурсів (за допомогою методупошуку з вертанням) і забезпечити можливість виведення фактів, без активного застосуваннястека. Потім було розроблено мовуProlog, яка не вимагала плану перебору варіантів, і була в цьому сенсі спрощенням мови Planner. Зараз Planner дуже нагадує єдинорога: ми багато про неї знаємо, але вона ніколи не існувала. Інакше кажучи, мова програмування Planner ще ніде ніколи не використовувалася. Тим не менше, ідеї, покладені в основу мови Planner, виявились дуже продуктивними, і було створено й випробувано декілька варіантів і фрагментів цієї мови. Одним з найвідоміших виявився MICRO-PLANNER.
Незважаючи на те, що мову так і не було, судячи з усього, реалізовано в повному обсязі, її вплив на дослідження, пов'язані зіштучним інтелектом, виявився багато в чому визначним.
Перші реалізації, Micro-planner та Pico-planner, містили досить обмежені підмножини мови. Практично повні варіанти Planner було реалізовано в системіPopler і ряді похідних —QA-4,Conniver,QLISP,Ether.
ВСРСР цю мову було реалізовано в системі пленер-БЕСМ, розробленій для БЕСМ-6 в кінці 1970-х років.
LISP таProlog — дві найпопулярніші мови символьної обробки. Однак цікаві ідеї пропонувалися і творцями інших мов, які не отримали широкої популярності. Одна з таких мов — Planner. Свою назву (що перекладається як «планувальник») вона отримала завдяки тому, що була здебільшого призначена для створення систем планування дійроботів. Planner була розроблена Карлом Х'юїттом зМассачусетського технологічного інституту 1971 року, і стала серйозним етапом у розвитку ідей обробки символьної інформації.
Planner має всі можливості мовиLISP, тобто, фактично, LISP є її підмножиною. Але набір вбудованих функцій в мові Planner набагато ширший, а самі вони зазвичай набагато могутніші відповідних функцій мови LISP. Наприклад, функції ELEM і REST узагальнюють функції CAR і CDR, дозволяючи виділяти й відкидати зі списку довільні елементи:[ELEM 1 L] = = A, [REST 2 L] = (С (D Е F) (G Н))
. Крім того, введення в запис декількох типів дужок (в мові LISP допускаються лише круглі дужки, що дуже ускладнює читанняпрограм) зробило програми набагато зрозумілішими. Але найголовніше, мову було збагачено додатковими можливостями.
Перша з них — пошук і аналіз даних за зразком. Подібний механізм був успішно випробуваний в мовіSnobol і широко застосовується зараз, наприклад, коли вNorton Commander задається пошук всіх файлів виду*.doc
, то виконується саме ця дія.
Друга додаткова можливість дозволяє досить ефективно застосовувати Planner при створенні системштучного інтелекту: можна будувати і змінювати опис середовища, в якому розв'язується завдання. Опис середовища називаєтьсябазою даних, і містить окремі твердження (факти), істинні в даному середовищі. Крімфактів, що містяться в базі даних, в програмі потрібно задавати логічні відносини між використовуваними в завдані поняттями, а також опису дій, які дозволено проводити. Такі описи називаютьсятеоремами. Кожна теорема має список умов (передумов), які повинно бути виконано, перш ніж стане можливим її застосування. В результаті застосування теореми деякі факти з бази даних перестають бути істинними і повинні бути з неї вилучені, а інші, навпаки, стають істинними, і повинні її поповнити. Списки фактів обох видів також містяться в описах теорем.
Найважливішим нововведенням мови Planner став режим повернень. Він дозволяє під час роботи програми відмовлятися від ухвалених раніше рішень, якщо виявляється, що вони не призведуть до мети. Для штучного інтелекту взагалі характерне застосування перебору варіантів під час розв'язання завдань, вбудований в мову Planner режим повернень (його ще називають механізмомпошуку з поверненням,англ.backtracking) звільняє програміста від необхідності самому реалізовувати такий перебір.
Двома основними парадигмами для побудови семантичних системпрограмного забезпечення булифункційна ілогічна. Функційну парадигму було втіленоЛіспом (McCarthy та ін., 1962), яка характеризуєтьсярекурсивними процедурами, які оперують списками структур.
Логічну парадигму було втілено в процедури за допомогоюправила резолюцій (Robinson, 1965). Згідно з логічною парадигмою це був «обман», щоби включити функційні знання (Green, 1969).
Одначе, Planner змогла умістити в собі такі переваги логічного і функційного програмування, як: