Функциональные языки программирования



Функциональные языки программирования - языки, в которых единствен­ным действием является вызов функции, единственным способом расчлене­ния программы на части является введение имени для функции и задание

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

Особенность ранних функциональных языков - в их динамической типиза­ции. Типы формируются вместе с их значениями в ходе вычислений. За по­следние 15 лет функциональное программирование перестало быть исклю­чительно исследовательским. Современные языки функционального про­граммирования (ML, Haskell) - строго типизированные, компилирующиеся, предназначенные как для индивидуальной работы над программами, так и для коллективной разработки.

Класс задач

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

2.4. Методология логического программирования

2.4.1. Методология логического программирования

Методология логического программирования– подход, согласно которому программа содержит описание проблемы в терминах фактов и логических формул, а решение проблемы система выполняет с помощью механизмов логического вывода.

Происхождение

Логическое программирование начинает свой отсчет времени с конца 60-х годов ХХ века, когда Корделл Грин предложил исполь­зовать резолюцию как основу логического программирования. Алан Колме­роэ создал язык логического программирования Prolog в 1971 году. В основе логических языков лежит теория хорновских дизъюнк­тов. Логическое программирование пережило пик популярности в середине80-х годов ХХ века, когда оно было положено в основу проекта разработки программного и аппаратного обеспечения вычислительных систем пятого поколения.

Методы

Метод единообразного применения механизма логического доказательствако всей программе.

Метод унификации- механизм сопоставления с образцом для создания и декомпозиции структур данных.

Вычислительная модель

Логическое программирование - это программирование в терминах фактов и правил вывода

Синтаксис и семантика

В логике теории задаются при помощи аксиом и правил вывода. То же самое мы имеем и в базисном языке логического программирования Prolog. Аксиомы здесь принято называть фактами, а правила вывода ограничить по форме до так называемых «дизъюнктов Хорна».

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

Обычно Prolоg-система работает в форме диалога с пользователем. Утверждение, которое требуется доказать, вводится с клавиатуры. Компилирую­щие версии трансляторов Prolog могут располагать специальными синтаксическими средствами для задания утверждений, которые требуется доказать. Такие утверждения в Prolog принято называть целями.

Ргоlоg-система использует метод унификации и метод резолюций для дока­зательства утверждений. Унификация- это сопоставление двух произволь­ных термов, содержащих переменные, с целью определения того, можно ли присвоить этим переменным такие значения, чтобы получились два одина­ковых терма. Метод резолюцийзаключается в последовательном до­казательстве отдельных утверждений, входящих в посылку дизъюнкта Хорна, для доказательства его следствия. Этот метод имеет прямой аналог в обычной логике высказываний.

 

 


Дата добавления: 2018-05-12; просмотров: 431; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!