Плэнер


Плэнер (Planner) — функционально-логический язык программирования, схожий по своему синтаксису с Лиспом. Разработан в Лаборатории искусственного интеллекта Массачусетского технологического института Карлом Хьюттом (англ. Carl Hewitt) в 1967—1971 годы, первая публикация с описанием языка появилась в 1969 году.

Изначально позиционировался автором как язык для автоматического планирования и диспетчеризации в робототехнике, в дальнейшем получил признание специалистов по искусственному интеллекту как язык, обладающий наиболее адекватным набором выразительных средств для такого рода задач (считалось, что для этого требуются гибкие возможности символьной обработки). Несмотря на то, что язык так и не был реализован в полном объёме, его влияние на исследования, связанные с искусственным интеллектом 1970-х годов, оказалось, во многом, определяющим.

Функциональная часть языка содержала фактически целиком Лисп в качестве подмножества, другие части — средства сопоставления с образцом, поиск с возвратами, вызов процедур по образцу, дедуктивные механизмы в духе логического программирования.

В том виде, как был изначально описан автором, язык реализован так и не был как по причине громоздкости, так и схематичности описания. Первые реализации — Micro-planner и Pico-planner содержали достаточно ограниченное подмножество языка. Более полные варианты были реализованы в системе Popler и ряде её производных — QA-4, Conniver, QLISP, Ether. В 1970-х годах в СССР язык был реализован в системе ПЛЭНЕР-БЭСМ, разработанной для БЭСМ-6.

Хотя язык фактически целиком содержит Лисп как свою часть, его встроенные возможности по символьной обработке значительно шире. К примеру, функции ELEM и REST обобщают функции CAR и CDR, позволяя выделять и отбрасывать из списка произвольные элементы: [ELEM 1 L] = = A, [REST 2 L] = (С (D Е F) (G Н)). Кроме того, введение в запись нескольких типов скобок (в Лиспе допускаются только круглые скобки, что весьма затрудняет чтение программ) сделало программы гораздо понятнее.

Одна из наиболее примечательных возможностей языка — поиск и анализ данных по образцу (впервые реализованный в Сноболе и значительно развитый в Плэнере).