- Planner
-
Planner (иногда записывается большими буквами как PLANNER, в советской литературе также использовалось транслитерированное Плэнер) — функционально-логический язык программирования, схожий по своему синтаксису с Лиспом.
Был разработан Карлом Хьюитом в Лаборатории Искусственного Интеллекта Массачусетского Технологического Института. Первая публикация с описанием языка появилась в 1969 г.
Несмотря на то, что язык так и не был, по всей видимости, реализован в полном объёме, его влияние на исследования, связанные с искусственным интеллектом, оказалось, во многом, определяющим.
Реализации и производные системы
Первые реализации — 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) избавляет программиста от необходимости самому реализовывать такой перебор.
Категории:- Функциональные языки программирования
- Языки логического программирования
- Языки программирования для искусственного интеллекта
Wikimedia Foundation. 2010.