功能,结构化和程序化编程之间有什么区别?

时间:2010-12-09 15:24:07

标签: functional-programming procedural-programming structured-programming

我已经阅读了一些关于所有科目的文章,但我并没有完全发现差异。

3 个答案:

答案 0 :(得分:37)

结构化编程是一个古老的术语,我认为它将涵盖功能,程序和其他许多内容。它基本上意味着使用显式控制流结构而不是直接从指令跳转到指令。

从这个意义上说,功能和程序编程都是结构化范式。函数式编程也是声明式编程 - 给代码的结构对应于它的含义 - 程序是一个改变世界状态的函数。程序编程是您在任何C语言或其后代中考虑的“典型”编程,包括OO语言,如Java和C ++。程序是一系列指令,可以串行执行,并在整个过程中调用子程序。

或者,正如着名的描述:

  

功能编程就像   描述你的问题   数学家。命令式编程   就像给一个指示   白痴。

    --- arcus, #scheme on Freenode

答案 1 :(得分:9)

函数式编程使用函数作为第一类元素。利用更高阶函数(获取和/或返回函数);导致强大的构造和良好的代码。有些人还关注FP的纯度方面,也就是说,在给定相同输入的情况下,函数应始终返回相同的结果。我认为,这些是FP的两个基本支柱。我还看到避免副作用,因为基本上抽象了一点点加载/存储机器级别指令。

结构化编程可以追溯到Djikstra的“Goto Considered Harmful”论文。它意味着使用if / then / else / elif结构,do / while / until / for循环等,而不是诉诸goto。它实质上是从比较/分支机器级别指令中抽象出来的。结构化编程与功能和程序编程都是正交的。

我认为,程序编程是指使用命令式“子程序”(而不是纯粹的“函数”)进行编程,这些子程序通常由一系列“语句”(而不是“表达式”)组成,留下副作用。

答案 2 :(得分:1)