3 回答

TA貢獻1802條經驗 獲得超5個贊
他們每個人都有自己的優點-他們只是解決相同問題的不同方法。
在純粹的過程樣式中,數據往往與對其上運行的功能高度去耦。
在面向對象的風格中,數據傾向于帶有一系列功能。
在功能樣式中,數據和功能趨向于彼此之間具有更多的共同點(如Lisp和Scheme),同時在實際使用功能方面提供了更大的靈活性。還傾向于根據遞歸和組合而不是循環和迭代來定義算法。
當然,語言本身只會影響首選哪種樣式。即使使用像Haskell這樣的純函數式語言,也可以以過程樣式(盡管不鼓勵這樣做)編寫,甚至可以使用像C這樣的過程語言,以面向對象的樣式(例如GTK +和EFL API)。
需要明確的是,每個范例的“優勢”僅在于算法和數據結構的建模。例如,如果您的算法涉及列表和樹,那么功能性算法可能是最明智的?;蛘撸?,如果您的數據是高度結構化的,那么如果這是您語言的本機范式,則將其組合為對象可能更有意義-或者,可以將其簡單地編寫為monad的功能抽象,是Haskell或ML之類的語言的原生范例。
您選擇使用哪種方法,對于您的項目和語言支持的抽象才更有意義。

TA貢獻2011條經驗 獲得超2個贊
我認為這些天可用的庫,工具,示例和社區完全取代了范例。例如,ML(或其他任何語言)可能是最終的通用編程語言,但是如果您無法為正在做的事情獲得任何好的庫,那么您就搞砸了。
例如,如果您要制作視頻游戲,那么C ++中會有更多優秀的代碼示例和SDK,因此您可能會更好。對于小型Web應用程序,有一些很棒的Python,PHP和Ruby框架可以使您快速啟動并運行。由于編譯時檢查以及企業庫和平臺,Java是大型項目的理想選擇。
過去,用于不同語言的標準庫非常小,易于復制-C,C ++,Assembler,ML,LISP等。這些庫具有基礎知識,但是當涉及到事物標準化時,往往會屈服像網絡通訊,加密,圖形,數據文件格式(包括XML),甚至基本的數據結構(如平衡樹和哈希表)都被忽略了!
如今,Python,PHP,Ruby和Java等現代語言都提供了更為完善的標準庫,并且您可以輕松使用許多優秀的第三方庫,這在很大程度上要歸功于它們采用了命名空間,以防止庫彼此沖突,和垃圾回收,以標準化庫的內存管理方案。
- 3 回答
- 0 關注
- 496 瀏覽
添加回答
舉報