В чем разница между функциональным, структурированным и процедурным программированием?

StackOverflow https://stackoverflow.com/questions/4399841

Вопрос

Я прочитал несколько статей по всем предметам, но я не совсем получаю различия.

Это было полезно?

Решение

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

Функциональное и процедурное программирование являются, в этом смысле структурированные парадигмы. Функциональное программирование также является декларативным программированием - структура, данная вашему коду, соответствует его значению - программа - это функция, которая меняет состояние мира. Процедурное программирование - это то, что вы бы считали «типичным» программированием на любом языке C или его потомках, включая OO -языки, такие как Java и C ++. Программа представляет собой серию инструкций, которые будут выполнены последовательно, и вызывая субпроцедуры по пути.

Или, как было известно:

Функциональное программирование похоже на описание вашей проблемы математику. Императивное программирование - это все равно, что дать инструкции идиоту.

    --- arcus, #scheme on Freenode

Другие советы

Функциональное программирование использует функции в качестве первоклассных элементов. Использование функций более высокого порядка (принятие и/или возвращающиеся функции); приводя к мощным конструкциям и хорошо факторированным коду. Некоторые люди сосредотачиваются также на аспекте чистоты FP, который должен сказать, что функции всегда должны возвращать один и тот же результат, учитывая тот же вход. Я полагаю, это два основных столпа FP. Я также вижу, как избегает побочных эффектов как по существу, немного абстрагирует инструкции на уровне нагрузки/магазина.

Структурированное программирование восходит к «Goto, считающей вредной» бумагой Djikstra. Это означает использование if/then/else/elif структур, Do/while/до/для петли и т. Д. Вместо того, чтобы прибегать к Goto. По сути, это немного абстрагирует от инструкций сравнения/филиала. Структурированное программирование является ортогональным как для функционального, так и процедурного программирования.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top