我已閱讀了一些有關所有主題的文章,但我不太清楚這些差異。功能性,結構性和程序性編程有什麼區別?
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. 屬性和屬性有什麼區別?
- 2. 功能性編程
- 3. 順序一致性和最終一致性有什麼區別?
- 4. notable_for和notable_types屬性有什麼區別?
- 5. 「wairole」和「role」屬性有什麼區別?
- 6. 程序與功能性Javascript
- 7. 可伸縮性和彈性有什麼區別?
- 8. ember.js中'[]'屬性和'@each'屬性有什麼區別?
- 9. 包容性和排他性OR有什麼區別?
- 10. 可串行性和線性化有什麼區別?
- 11. title屬性和tooltip屬性有什麼區別?
- 12. 編程性能
- 13. 編程性能
- 14. 使用並行與線性程序的結果沒有區別
- 15. Handler(MessageQueue)和AsyncTask(SERIAL_EXECUTOR)有什麼區別,性能明智嗎?
- 16. Rails元編程和性能
- 17. 性能OOJS超過功能JavaScript編程
- 18. 程序性能
- 19. 序列化持久性/功能性數據結構
- 20. 線性量化與非線性量化有什麼區別?
- 21. <Scala的功能性編程> simulateMachine
- 22. Web應用程序性能和部署體系結構(Java)
- 23. 聲明式編程和命令式編程有什麼區別?
- 24. @JsonIgnore屬性和沒有註解的屬性之間有什麼區別?
- 25. 結果集和Scrollable ResultSet的性能有任何區別嗎?
- 26. 兩種編碼風格有什麼區別屬性
- 27. 規則和信息有效性有什麼區別?
- 28. 結構 - 性能差
- 29. redis結構,性能
- 30. 多線程性能和性能測試
的報價是不是在幫助解決了OP的原來的問題確實有關,因爲報價約爲之間的差異功能和命令式編程範例(是的,儘管過程式編程通常被認爲是命令式編程的子範式)。此外,我認爲Java實際上並不支持過程編程,因爲在Java中,除了Java 8的新功能(例如lambda函數)之外,所有東西都是類或對象,這些功能可能與函數式編程有關。所以,我必須冷靜地回答這個問題。 – nbro 2017-01-08 18:12:17