Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие Функциональное и логическое программирование.docx
Скачиваний:
4
Добавлен:
01.07.2025
Размер:
309.57 Кб
Скачать

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

Функциональное программирование возникло в 1962 г. вместе с созданием языка программирования Лисп. Долгое время этот язык занимал особое место. Подавляющее большинство программ искусственного интеллекта составлено на языке Лисп, являющемся один из первых языков обработки данных в символьной форме. В Лиспе и программа, и обрабатываемые ею данные представляются в одной и той же форме – в виде списка.

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

Значение этой функции становится аргументом следующей и т. д., пока не будет получен результат – решение задачи.

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

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

Наряду с другими парадигмами программирования функциональное программирование также имеет свои особенности и преимущества, в частности:

– языки и системы программирования, относящиеся к функциональной парадигме, могут обрабатывать данные в символьной форме в виде списков;

– функциональные программы могут обрабатывать и преобразовывать другие программы и даже самих себя.

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

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

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

    1. Классификация языков программирования

В соответствии с парадигмами языки программирования делят на императивные (процедурные) и декларативные. Подавляющее большинство используемых в настоящее время языков программирования относятся к процедурным языкам. Наиболее существенными классами декларативных языков являются функциональные (Lisp, Refal, Haskell и др.) и логические (Prolog, Planner и др.) языки. На рис. 1 приведены основные классы языков программирования.

Рисунок 1. Классификация языков программирования

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