0.7. Развитие языка пролог Развитие языка Пролог

В течение 70-х гг. Пролог прошел путь развития от интересующего лишь узких специалистов экспериментального языка, созданного европейскими учеными, до одного из ведущих языков программирования, широко используемого во всем мире. Можно отметить два важных аспекта, способствовавших совершенствованию языка Пролог в этот период. Во-первых, в результате работ по теории логического программирования был создан концептуальный аппарат, необходимый для эффективного применения языка. Во-вторых, разработка улучшенных стратегий реализации языка привела к появлению эффективно функционирующих версий Пролога.

Теория

Очень важную роль в развитии теории логического программирования сыграла работа Ковальски. Он первым предложил метод, в соответствии с которым логический язык можно было бы использовать как язык программирования (см. [54]). Совместно с ван Эмденом он предложил два альтернативных подхода к прочтению текстов логических программ — процедурный и декларативный подходы ([116], эта работа обсуждается далее в разд. 0. 8). С тех пор этот автор более подробно изложил свои научные взгляды по данной теме. Особое внимание привлекает его работа [55]. Его идеи во многом определили направление исследований по логическому программированию в течение последних нескольких лет. Важный вклад в теорию логического программирования внесли Эпт [3], Кларк (Clark [1977])*) и Боуэн [б].

Таблица 0. 14

Основные вехи эволюции Пролога

1879г.

Фреже публикует работу "Концептуальный язык"

1965 г.

Дж. Э. Робинсон "Машинно-ориентированная логика, основанная на принципе резолюции"

1968 г.

Лавленд "Автоматическое доказательство теорем путем устранения моделей"

1971г,

Ковальски и Куэнер "Линейный отбор при помощи функции резолюции"

1973г.

Кольмерор в Марселе написал первую версию интерпретатора Пролога, пользуясь языком Фортран [93]

1974г.

Ковальски "Логика предикатов как язык программирования"

1977г.

Уоррен и Перейра из Эдинбургского университета создали интерпретатор/компилятор языка Пролог для ЭВМ DEC-10

1980г.

В Империэл Колледже разработан интерпретатор языка микро-Пролог для персональных ЭВМ [20]

1981 г.

Проект создания ЭВМ пятого поколения, основанной на методах логического программирования - институт ICOT, Япония [74]

Реализация языка

Первая версия интерпретатора языка Пролог была написана Кольмерором и Русселем на Фортране и работала крайне медленно. В 1977 г. Уоррен и Перейра завершили работу над интерпретатором/компилятором языка Пролог для ЭВМ DEC-10. Они показали, что при решении крупных задач Пролог может быть столь же эффективен, как и Лисп [111]. Алгоритм", использованный при реализации языка Пролог на ЭВМ DEC-10, теперь известен как "машина Уоррена". Этот алгоритм послужил прототипом для многих последующих реализации Пролога [105]. В 1980 г. Кларк и Маккейб закончили работу по созданию версии языка Пролог для микрокомпьютеров. Теперь эта версия используется в качестве первоначального языка программирования в колледжах с неполным курсом обучения в Великобритании ([20], [32]). Перейра написал на языке Си интерпретатор языка Пролог для операционной системы UNIX, а теперь имеется и несколько других версий языка Пролог для системы UNIX [83]. Кан и ряд других специалистов реализовали версию языка Пролог на Лисп-машинах [48] • Различные версии языка Пролог, предлагаемые на рынке программных средств, детально обсуждаются в приложении IV.

ICOT

В 1981 г. Японское министерство международной торговли и промышленности объявило о создании специальной исследовательской организации - Института по разработке методов создания компьютеров нового поколения (ICOT), призванного вести работу над тем, что было названо методологией создания компьютеров пятого поколения [74]. К удивлению многих американских специалистов по искусственному интеллекту, в качестве основной методологии разработки программных средств для проекта ЭВМ пятого поколения было избрано логическое программирование. Целью данного проекта является создание систем обработки информации, базирующихся на знаниях. Предполагается, что будут разработаны системы, базирующиеся на знаниях, которые будут обладать возможностью общения с пользователями при помощи естественного языка или графических средств и которые будут помогать пользователям в решении некоторых классов задач высокого уровня, предоставляя им экспертные консультации. Полезный эффект от таких систем будет заключаться в том, что в распоряжение широких слоев общества будут предоставлены мощные вычислительные ресурсы и что возрастет производительность труда в ряде отраслей промышленности, в которых сейчас она традиционно низка.

Логические выводы в секунду

Проект создания аппаратных средств ЭВМ пятого поколения вызвал появление нового параметра, позволяющего измерять скорость работы различных версий Пролога, — числа логических выводов в секунду (лвс)*). Одной из целей ICOT является построение логически программируемых машин, работающих в диапазоне скоростей от 1000 до 10000К лвс. Пока наблюдается значительный разрыв по производительности между этой целью и нынешними версиями Пролога. Для сравнения можно привести следующие данные. Исходная версия компилятора языка Пролог для ЭВМ DEC-10 позволяла создавать программы, работающие со скоростью 10 К лвс. Улучшения, внесенные в этот компилятор, и применение аппаратных средств с более высоким быстродействием (DEC-2060) дали возможность довести скорость выполнения программы до 35-40 К лвс. Для сравнения отметим, что интерпретатор микро-Пролога работает со скоростью около 200 лвс на ЭВМ с микропроцессором Z-80, а интерпретатор СиПролога работает на ЭВМ VAX 11/780 со скоростью 1, 5 К лвс. Персональная машина последовательного вывода, созданная в ICOT, — это компьютер со специализированным процессором, архитектура которого оптимизирована в соответствии с требованиями языка Пролог. Она работает со скоростью 20-30 К лвс. Последний компилятор языка Пролог (Квинтус Пролог), написанный Уорреном, генерирует код, работающий со скоростью 50 К лвс на рабочей станции, построенной на основе микропроцессора [97]. В настоящее время ходят слухи о создании в США и Японии экспериментальных машин, работающих со скоростью более 600 К лвс.

Другие языки

Следует, однако, заметить, что логическое программирование не начиналось с современных версий языка Пролог и не закончит свое развитие ими. Были изобретены и иные языки логического программирования, к примеру, DUC [70], ESP [16] и HCPRVR [102], а также языки-оболочки (shells), базирующиеся на логическом программировании, скажем, APES [38]. Сейчас одновременно ведется несколько исследовательских работ по созданию языка логического программирования, дающего возможность реализовать преимущества параллельной архитектуры ЭВМ. К числу таких разрабатываемых языков относятся Парлог [18], Параллельный Пролог [96] и KL1 института ICOT.

Соседние файлы в папке Гл.0,1,2,3,4,5,Предисловие