logo
otvety_all

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

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

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

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

Наиболее общие принципы функционального программирования:

1) Унификация понятий <функция> и <значение>. 2)Кроме функций-констант, вполне допустимы функции-переменные.3)Самоприменимость.4)Интегральность ограничений на пространственно-временные характеристики.5)Уточняемость решений.6) Множественность определений.

Функциональное программирование отличается от большинства подходов к программированию тремя важными принципами:

1)Природа данных. Все данные представляются в форме символьных выражений, наз. S-выражениями. 2)Самоописание обработки символьных выражений. Важная особенность функционального программирования состоит в том, что описание способов обработки S-выражений представляется программами, рассматриваемыми как символьные данные.

3) Подобие машинным языкам

Система функционального программирования допускает, что программа может интерпретировать и/или компилировать программы, представленные в виде S-выражений. Это сближает методы функционального программирования с методами низкоуровнего программирования и отличает от традиционной методики применения языков высокого уровня.