Скачиваний:
53
Добавлен:
01.05.2014
Размер:
565.76 Кб
Скачать

6.3. Дополнительные сведения

Возникновение Пролога покрыто тайной. Известно только то, что два создателя языка Роберт Ковальский, в то время работавший в Эдинбурге, и Алан Колмероэ из Марселя - разрабатывали в начале 70-х гг. сходные идеи и даже в течение одного лета работали вместе. В результате были сформулированы основные положения логического программирования и вычислительная модель (Kowalski, 1974), описан и реализован первый язык логического программирования - Пролог (Colmerauer et al, 1973).

Использование логики в качестве основы практического языка программирования во многом обязано исследованиям эффективных методов реализации, начатым в работе (Warren, 1977). Транслятор Уоррена выделял специальные случаи унификации и преобразовывал их в эффективные последовательности обычных операций работы с памятью.

Возникали версии языка Пролог, содержащие дополнительные средства управления, например IC-Пролог (Clark, Mc Cabe, 1979), однако было показано, что из-за большого увеличения времени работы программ их нельзя рассматривать в качестве альтернатив Прологу. Отдельные интересные версии языка будут упоминаться в соответствующих разделах книги.

Другую ветвь языков логического программирования, косвенно возникшую из IC-Пролога, составляют параллельные логические языки. Сначала появился Реляционный Язык (Clark, Gregory, 1981), далее последовали: Параллельный Пролог (Shapiro, 1983b), Parlog (Clark, Gregory, 1984), GHC (Ueda, 1985) и несколько других версий.

Литература к версиям, упоминаемым в тексте: Пролог-II-(Van Gengham, 1982), IC-Пролог (Clark at al„ 1982) и MU-Пролог-(Naish, 1985a).

Благодаря работе (Kowalski, 1974) синтаксис Пролога основан на способе записи утверждений в логике. Исходный марсельский интерпретатор использовал терминологию позитивных и негативных формул, возникшую в теории резолюций. Правило АВ,...,В записывалось в виде + А - В...- B.

Уоррен и его коллеги перенесли Marseille-Пролог на компьютер DEC-10, и это решение оказало большое влияние на дальнейшие работы. Многие системы придерживаются соглашений версии Пролог-10 (Warren et al., 1979), более известной под названием Edinburgh-Пролог. Основные характеристики этой версии описаны в широко распространенном введении в Пролог (Clocksin, Mellish, 1984). Edinburgh-Пролог излагается в нашей книге в основном в соответствии с описанием (Bowen et al., 1981).

Недавняя статья (Coben, 1986) продолжает исследования связи языка Пролог с традиционными языками программирования.

Глава 7 Программирование на чистом Прологе

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

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

Соседние файлы в папке 1-13