我已阅读了一些有关所有主题的文章,但我不太清楚这些差异。功能性,结构性和程序性编程有什么区别?
17
A
回答
37
结构化编程是一个古老的术语,我认为它将涵盖功能性,程序性和其他许多方面。它基本上意味着使用显式的控制流结构,而不是直接从指令跳转到指令。
在这个意义上,功能和程序编程都是结构化的范例。函数式编程也是声明式编程 - 赋予代码的结构与其含义相对应 - 程序是改变世界状态的函数。程序化编程就是你认为任何C语言或其后代的“典型”编程,包括诸如Java和C++之类的OO语言。程序是一系列指令,要连续执行,并且沿途调用子程序。
或者,因为它已被著名描述:
函数式编程就像是描述你的问题的 数学家 。命令式编程 就像给予一个 白痴的指示。
--- arcus, #scheme on Freenode
9
函数编程是使用函数作为第一类元素。利用高阶函数(接受和/或返回函数);导致强大的结构和良好的代码。有些人还关注FP的纯度方面,也就是说在给定相同输入的情况下,函数应该总是返回相同的结果。我相信这些是FP的两个基本支柱。我也看到避免副作用,基本上从加载/存储机器级别指令中抽象出一点。
结构化编程可追溯到Djikstra的“转向考虑有害”论文。这意味着使用if/then/else/elif结构,do/while/until/for循环等,而不是诉诸goto。它实质上是从比较/分支机器级别指令中抽象出来的。结构化编程与功能和程序编程都是正交的。我相信程序编程指的是用命令性的“子程序”(相对于纯粹的“功能”)编程,该程序通常由一系列“语句”(而不是“表达式”)组成,留下副作用。
1
相关问题
- 1. Go - 性能 - 结构中的指针和值有什么区别?
- 2. 功能性编程
- 3. 顺序一致性和最终一致性有什么区别?
- 4. IBOutlet和IBOutlet属性有什么区别?
- 5. notable_for和notable_types属性有什么区别?
- 6. “wairole”和“role”属性有什么区别?
- 7. attribute.present有什么区别?和属性?
- 8. 功能性编程功能混淆
- 9. 程序与功能性Javascript
- 10. Python“属性”和“属性”有什么区别?
- 11. restkit中的“属性”和“属性”有什么区别
- 12. 包容性和排他性OR有什么区别?
- 13. 可串行性和线性化有什么区别?
- 14. 可伸缩性和弹性有什么区别?
- 15. title属性和tooltip属性有什么区别?
- 16. 蚂蚁的属性值和属性位置有什么区别
- 17. ember.js中'[]'属性和'@each'属性有什么区别?
- 18. 编程性能
- 19. 编程性能
- 20. 应用程序体系结构建议(可伸缩性/性能)
- 21. 使用并行与线性程序的结果没有区别
- 22. Rails元编程和性能
- 23. CSS和webGL实现360视频的性能有什么区别?
- 24. Handler(MessageQueue)和AsyncTask(SERIAL_EXECUTOR)有什么区别,性能明智吗?
- 25. android xml有什么区别属性
- 26. 性能OOJS超过功能JavaScript编程
- 27. 程序性能
- 28. 代码和程序有什么区别?
- 29. 持久性和序列化有什么区别?
- 30. 序列化持久性/功能性数据结构
的报价是不是在帮助解决了OP的原来的问题确实有关,因为报价约为之间的差异功能和命令式编程范例(是的,尽管过程式编程通常被认为是命令式编程的子范式)。此外,我认为Java实际上并不支持过程编程,因为在Java中,除了Java 8的新功能(例如lambda函数)之外,所有东西都是类或对象,这些功能可能与函数式编程有关。所以,我必须冷静地回答这个问题。 – nbro 2017-01-08 18:12:17