Я прочитал несколько статей по всем предметам, но я не совсем понимаю различий.
В чем разница между функциональным, структурным и процедурным программированием?
Ответы (3)
Структурированное программирование - это старый термин, который, я думаю, охватывает функциональное, процедурное и многое другое. По сути, это означает использование явных структур потока управления, а не переход непосредственно от инструкции к инструкции.
В этом смысле функциональное и процедурное программирование являются структурированными парадигмами. Функциональное программирование также является декларативным программированием - структура, данная вашему коду, соответствует его значению - программа - это функция, которая изменяет состояние мира. Процедурное программирование - это то, что вы считаете «типичным» программированием на любом языке C или его потомках, включая объектно-ориентированные языки, такие как Java и C ++. Программа - это последовательность инструкций, которые должны выполняться последовательно, вызывая подпроцедуры на своем пути.
Или, как это было классно описано:
Функциональное программирование похоже на описание вашей проблемы математику. Императивное программирование - все равно что давать инструкции идиоту.
--- arcus, #scheme on Freenode
Функциональное программирование использует функции как первоклассные элементы. Использование функций высшего порядка (принимающие и / или возвращающие функции); что приводит к мощным конструкциям и хорошо продуманному коду. Некоторые люди также обращают внимание на аспект чистоты FP, который означает, что функции всегда должны возвращать один и тот же результат при одном и том же вводе. Я считаю, что это два основных столпа ФП. Я также считаю, что избегание побочных эффектов по существу немного абстрагируется от инструкций уровня машины загрузки / сохранения.
Структурное программирование восходит к статье Джикстры "Goto Считается вредным". Это означает использование структур if / then / else / elif, циклов do / while / until / for и т. Д. Вместо использования goto. По сути, это немного абстрагируется от инструкций машинного уровня сравнения / ветвления. Структурированное программирование ортогонально как функциональному, так и процедурному программированию.
Я считаю, что процедурное программирование относится к программированию с императивными «подпрограммами» (в отличие от чистых «функций»), состоящих, как правило, из серии «операторов» (в отличие от «выражений»), оставляющих после себя побочные эффекты.
Также см:
- Может ли кто-нибудь привести мне примеры функционального программирования и императивного / процедурного программирования?
- ООП против функционального программирования против процедурного
- истинное понимание разницы между процедурным и функциональным