Пролог
Рост мощностей вычислительных комплексов выдвинул в ряд основных
языки сверх высокого уровня. Задачей таких языков является сведение процесса программирования к указанию того, что именно необходимо получить, не говоря о том, как это сделать. В этом смысле Алгол, Си, P*scal - это языки только высокого, а не сверх высокого уровня. К языкам
сверхвысокого уровня относят язык Пролог.
Он (Prolog) создан во Франции в Марсельском университете в *971 году
Аленом Кольмеро (*o*merauer). Разрабатывая новый язык программирования для задач анализа и понимания естественных языков, А.Кольмеро решил использовать язык формальной логики предикатов первого порядка и метод автоматического доказательства теорем. Поэтому, в дальнейшем его стали расшифровывать как «ПРОграммирование в терминах ЛОГики» (PRO*OG -
PROg*amming LO*i**).
Язык Пролог основан на концепциях логического программирования,
предложенных профессором Лондонского университета Робертом Ковальским, и представляет собой среду, ориентированную на рассуждения, или дедукцию. Этот язык, базируясь на логическом программировании, является его первым применением. При логическом программировании осуществляется обработка символьной информации (решение проблем), в ходе которой процесс доказательства теорем интерпретируется как процесс вычисления или процесс
выполнения программы.
До начала 80-х годов Пролог был уделом ученых, работавших в основном
в области логического программирования, и мало знаком широкому кругу программистов и пользователей компьютеров. Начиная с 80-х годов, Пролог уже не сходит со страниц научных журналов по вычислительной технике и публикаций в области искусственного интеллекта. В 1981 году Япония известила мир о создании вычислительных машин пятого поколения, в которых
язык Пролог выбран в качестве базового языка программирования.
Однако растущую популярность Пролога нельзя объяснить только
выбором авторов японского проекта, здесь кроются более глубокие причины: Пролог можно рассматривать как универсальный язык сверхвысокого уровня с
хорошо определенной и логически обоснованной семантикой. Он не только
изменяет стиль программирования задач (в смысле Фон Неймана), но и
укоренившуюся архитектуру вычислительных машин.
Программа на языке Пролог содержит две составные части: факты и
правила. Факты представляют собой данные, с которыми оперирует программа. Совокупность фактов составляет базу данных Пролога, которая является реляционной базой. Основная операция, выполняемая над данными, - это операция сопоставления, называемая также операцией унификации, или согласия. Правила состоят из заголовка и подцелей. Выполнение программы, написанной на Прологе, начинается с запроса и состоит в доказательстве истинности некоторого логического утверждения в рамках заданной совокупности фактов и правил. Алгоритм этого доказательства (логического вывода) и определяет принципы исполнения программы, написанной на
Прологе.
В отличие от программ, составленных на языках процедурного типа
(Бейсик, Паскаль и др.), предписывающих последовательность шагов, которые должен выполнять компьютер для решения задач, в Прологе программист описывает факты, правила, отношения между ними, а также запросы по
проблеме.
Первый интерпретатор Пролога, написанный на Фортране, разработан
А.Кольмеро и Ф.Русселем в *973 году. Затем появился компилятор Пролога, созданный Д.Уорреном и Ф.Перейра из Эдинбургского университета для машины DEC-*0. Впоследствии наибольшую популярность получили версии
Пролога, реализованные на персональных компьютерах.
Первая аппаратная реализация языка относится к 19*4 году, когда
Д.Уорреном был разработан конвейерный процессор языка Пролог-S*I.
Затем, в рамках реализации японского проекта машин пятого поколения,
в 1*8* году появился действующий макет машины PSI (Pe*s*nal Sequential Inf*rence Mashine - персональная ЭВМ последовательного вывода), а в 1986
году опытный образец машины CHI - параллельная быстродействующая
машина вывода.
Впервые в нашей стране язык Пролог был реализован в конце 70-х годов
сотрудниками Института кибернетики им. В.М.Глушкова АН УССР и Рижского
политехнического института для ЕС ЭВМ.
Пролог нашел многочисленные и разнообразные применения в
символьной математике, планировании, автоматизированном проектировании, построении компиляторов, базах данных, обработке текстов на естественных
языках, машинной индукции, отладке.
Но самое характерное применение Пролога - это экспертные системы. Он
вносит своеобразный вклад в их создание, особенно для механизма логического вывода. Этот язык можно использовать для применения любой модели, его можно рассматривать и как воплощение модели представления знаний, и как
язык представления знаний. Определение, данное Р.Ковальским:
Алгоритм=Логика+Управление, подтверждает это утверждение и помогает прояснить термин «управление» в экспертных системах. В этом определении
Логика показывает, что является проблемой (областью), а Управление - как
эффективно использовать логику для решения проблем.
Пролог сыграл одну из главных ролей в развитии информатики, и в
частности, он помогает структурировать мышление.
В свое время велись работы над неалгоритмическими языками
программирования, так называемыми эвристическими языками, в основе которых лежат работы алгоритмической неразрешимости определенных процессов. В поисках наиболее универсального языка, который бы годился для машинного перевода, боливийский математик Иван Гусман де Рохас выяснил, что наиболее подходящим является не какой-либо искусственный, специально созданный для ЭВМ язык, а язык индейцев Перу в Боливии - аймара. Еще первый составитель словаря этого языка священник-иезуит из Италии в 1610 году отмечал, что язык аймара удивительно логичен, в нем почти нет исключений из его довольно простых грамматических правил, в частности, в нем не существует неправильных глаголов. Гусман де Рохас, работа которого высоко оценена многими специалистами, создал программу, при помощи которой простой в синтаксическом отношении язык аймара выражен сравнительно небольшим рядом математических символов. Самое парадоксальное заключается в том, что язык народа, который почти поголовно неграмотен, может быть через несколько лет принят к использованию в самых
современных компьютерах, существующих в мире.