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) избавляет программиста от необходимости самому реализовывать такой перебор.