Математическое введение в декларативное программирование. Зюзысов В.М. - 5 стр.

UptoLike

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

пример, «добавить 1 к счетчику исполняемых команд»), либо по команде, которая была
послана через шину, в последнем случае ее адрес нужно было прежде послать... и т. д.
Итак, программирование на традиционных языках, в основном сводиться к плани-
рованию и спецификации огромного потока слов через узость фон Неймана, причем
большая часть этого потока состоит не из самих значащих данных, а из сведений о том,
где их искать.
Обычные языки программирования в основном являются высокоуровневыми,
сложными версиями компьютера фон Неймана. Такие языки называются процедурными; к
ним относятся такие популярные языки, как Паскаль и C (С++).
Несмотря на все свою интеллектуальную привлекательность программирование
является трудным занятием. После сорока лет многие перестают программировать под
предлогом, что устали. Основной причиной такого положения является субъективное чув-
ство «нарушения энергетического баланса» – много тратят, но мало получают. Програм-
мисты тратят много лет и усилий, чтобы научиться программировать в императивном
(процедурном) стиле. Но императивный стиль программированиястиль, в котором вы-
полняются программы на компьютересовершенно не свойственен человеческой приро-
де. Традиционное процедурное программирование приучают программиста мыслить по-
нятиями «машины фон Неймана», а не математическими понятиями. Традиционный
программистпо своим знаниям, в первую очередь, должен быть инженером.
Процедурное программирование наиболее пригодно для решения задач, в которых
последовательное исполнение каких-либо команд является естественным. Примером здесь
может служить управление современными аппаратными средствами. Поскольку практи-
чески все современные компьютеры императивны, эта методология позволяет порождать
достаточно эффективный исполняемый код. С ростом сложности задачи процедурные
программы становятся все менее и менее читаемыми. Программирование и отладка дейст-
вительно больших программ (например, компиляторов), написанных исключительно на
основе методологии императивного программирования, может затянуться на долгие годы.
1.2 От процедурного к декларативному программированию
Процедурные языки имеют одну общую черту: базовый оператор в нихэто опе-
ратор присваивания, который заставляет компьютер переместить данные из одного места
в другое. Принципиально иной подход к программированию заключается в том, чтобы
описывать вычисление, используя уравнения, функции, логические выводы и т. п. Особое
внимание в декларативном программировании уделяется тому, что нужно сделать, а не
тому, как это нужно сделать.
Декларативное программирование обычно применяется для решения тех задач, ко-
торых трудно сформулировать в терминах последовательных операций. В эту категорию
попадают практически все задачи, связанные с искусственным интеллектом. Это такие
задачи, как обработка естественного языка, экспертные консультирующие системы, про-
блемы зрительного восприятия, и многие другие.
Мы рассмотрим особенности двух ветвей декларативного программирования:
функциональное, основанное на математическом понятии функции, которая не изменяет
свое окружение, в отличии от функций в процедурных языках, допускающих побочные
эффекты, и логическое, в котором программы выражены в виде формул математической
логики и компьютер для решения задачи пытается вывести логические следствия из них.
1.3 Почему следует изучать декларативное
программирование?
О том, чем определяется уровень программирования
Интуитивно любой программист отличит язык программирования высокого уровня
от языка программирования низкого уровня. В чем состоит различие? Чем определяется
уровень? Программирование представляет собой отображение в программах объектов,
5