Программирование в Логике. Чанышев О.Г. - 4 стр.

UptoLike

Составители: 

7
goal
% Читаем файл bear4.dbs в раздел facts при помощи
% встроенного предиката consult
consult("bear4.dbs",f1),
большой(X), темный(X),!,
% Если во внутренней БД существует существует объект X
% со свойствами "большой" и "темный", то печатаем
% имя этого объекта
% знак "!" – откатесть указание Прологу прекратить про-
верки
% перейти на альтернативный вариант запроса
write(X);
% Иначе переформулируем вопрос
большой(X), коричневый(X),!,
write(X);
!.
Понимание того, что алгоритмэто аксиоматическое зада-
ние функции, а его выполнениечастный случай логического вы-
вода, и привело к возникновению логического программирования
и языка Пролог. Почти 30 лет прошло с момента его появления.
На мой взгляд, сегодня, с появлением Visual Prolog’a пятой версии
(компания PDC), Прологэто самый технологичный язык про-
граммирования. Интерес
к Прологу вообще на Западе несколько
спал после неудачи проекта пятого поколения ЭВМ, однако кри-
зис доверия быстро миновал, и сегодня он более популярен, чем
прежде. В России же, если судить по программистской литературе
последних лет, Пролог никому не нужен. И этому есть свое объяс-
нение.
В Советском Союзе существовало множество
высокопро-
фессиональных коллективов, занимающихся разработкой програм-
много обеспечения для различных отраслей народного хозяйства.
Технология предполагала четкое разделение труда, при ко-
тором собственно программирование (кодирование) отдельных
небольших модулей производилось кодировщиками на основании
подробной "гостированной" технической документации, разрабо-
8
танной постановщиками задач под руководством главного конст-
руктора проекта. В таком случае рабочим языком мог быть ас-
семблер. Итоговый программный продукт, пройдя комплексную
отладку, получался и надежным, и быстрым. Пролог же был еще
во многом языком экзотическим и не позволял создавать про-
граммы, столь же оптимальные по затратам памяти и быстродей
-
ствию. К тому же автоматизировались задачи хорошо формализо-
ванные, при решении которых главное достоинство Прологало-
гический вывод из системы аксиомкак бы затушевывалось вы-
числительной мощностью вечно молодого дедушкиФортрана.
Подавляющее большинство кодировщиков не имело ника-
кого опыта в проектировании программных систем, и, фигурально
выражаясь, их любимым занятием было
изобретение наибыст-
рейших алгоритмов извлечения квадратного корня, которыми, как
писал Дж. Мартин, "у меня заполнена вся корзина для ненужных
бумаг" [3].
После распада Союза большинство организаций типа ПКБ
АСУ прекратило свое существование; сильные в единстве коллек-
тивы конструкторов, постановщиков и кодировщиков распались.
Наука потеряла в общественном сознании статус интеллектуаль-
ного эталона, и
в программистском сообществе стали задавать тон
кодировщики, вооруженные философией наибыстрейшего извле-
чения квадратного корня.
Пролог как язык концептульного программированиянеза-
менимое средство индивидуальной разработки программного про-
дукта, но для этого нужно концептуально мыслить.
Какой смысл я вкладываю в термин язык концептуального
программирования?
Прежде всего это средство решения при помощи компьюте-
ра широкого класса задач таким образом, чтобы максимально
большая часть нейронов мозга была занята самой задачей и след-
ствиями, которые могут быть получены в результате ее правиль-
ного решения, а не способом описания решения для компьютера.
(В конце концов, это одна из причин возникновения научного на-
правления «искусственный интеллект».) Пролог
прост, поскольку
использует небольшой набор базовых механизмов, включающих
сопоставление c образом и "бэктрекинг" (автоматический возврат
        goal                                                         танной постановщиками задач под руководством главного конст-
        % Читаем файл bear4.dbs в раздел facts при помощи            руктора проекта. В таком случае рабочим языком мог быть ас-
        % встроенного предиката consult                              семблер. Итоговый программный продукт, пройдя комплексную
        consult("bear4.dbs",f1),                                     отладку, получался и надежным, и быстрым. Пролог же был еще
        большой(X), темный(X),!,                                     во многом языком экзотическим и не позволял создавать про-
        % Если во внутренней БД существует существует объект X       граммы, столь же оптимальные по затратам памяти и быстродей-
        % со свойствами "большой" и "темный", то печатаем            ствию. К тому же автоматизировались задачи хорошо формализо-
        % имя этого объекта                                          ванные, при решении которых главное достоинство Пролога – ло-
        % знак "!" – откат – есть указание Прологу прекратить про-   гический вывод из системы аксиом – как бы затушевывалось вы-
верки                                                                числительной мощностью вечно молодого дедушки – Фортрана.
        % перейти на альтернативный вариант запроса                        Подавляющее большинство кодировщиков не имело ника-
                                                                     кого опыта в проектировании программных систем, и, фигурально
        write(X);                                                    выражаясь, их любимым занятием было изобретение наибыст-
        % Иначе переформулируем вопрос                               рейших алгоритмов извлечения квадратного корня, которыми, как
        большой(X), коричневый(X),!,                                 писал Дж. Мартин, "у меня заполнена вся корзина для ненужных
        write(X);                                                    бумаг" [3].
        !.                                                                 После распада Союза большинство организаций типа ПКБ
                                                                     АСУ прекратило свое существование; сильные в единстве коллек-
      Понимание того, что алгоритм – это аксиоматическое зада-       тивы конструкторов, постановщиков и кодировщиков распались.
ние функции, а его выполнение – частный случай логического вы-       Наука потеряла в общественном сознании статус интеллектуаль-
вода, и привело к возникновению логического программирования         ного эталона, и в программистском сообществе стали задавать тон
и языка Пролог. Почти 30 лет прошло с момента его появления.         кодировщики, вооруженные философией наибыстрейшего извле-
На мой взгляд, сегодня, с появлением Visual Prolog’a пятой версии    чения квадратного корня.
(компания PDC), Пролог – это самый технологичный язык про-                 Пролог как язык концептульного программирования – неза-
граммирования. Интерес к Прологу вообще на Западе несколько          менимое средство индивидуальной разработки программного про-
спал после неудачи проекта пятого поколения ЭВМ, однако кри-         дукта, но для этого нужно концептуально мыслить.
зис доверия быстро миновал, и сегодня он более популярен, чем              Какой смысл я вкладываю в термин язык концептуального
прежде. В России же, если судить по программистской литературе       программирования?
последних лет, Пролог никому не нужен. И этому есть свое объяс-            Прежде всего это средство решения при помощи компьюте-
нение.                                                               ра широкого класса задач таким образом, чтобы максимально
      В Советском Союзе существовало множество высокопро-            большая часть нейронов мозга была занята самой задачей и след-
фессиональных коллективов, занимающихся разработкой програм-         ствиями, которые могут быть получены в результате ее правиль-
много обеспечения для различных отраслей народного хозяйства.        ного решения, а не способом описания решения для компьютера.
      Технология предполагала четкое разделение труда, при ко-       (В конце концов, это одна из причин возникновения научного на-
тором собственно программирование (кодирование) отдельных            правления «искусственный интеллект».) Пролог прост, поскольку
небольших модулей производилось кодировщиками на основании           использует небольшой набор базовых механизмов, включающих
подробной "гостированной" технической документации, разрабо-         сопоставление c образом и "бэктрекинг" (автоматический возврат

                                 7                                                                 8