language agnostic - programming - 面向對象編程的替代方案?




programming paradigm意思 (4)

FP - 功能編程是一種非常流行的編程範例,已經存在了很長一段時間,並且近年來開始變得越來越突出。 FP支持不變性,可變性,遞歸和無副作用的函數。 流行的fp語言的一些例子是Erlang,Scala,F#,Haskell和Lisp(以及其他)。

OOP可能是當今軟件設計中最常用的編程範例。 我的問題是 - 其他範例可以與之競爭並且可以代替oop ? 為了澄清這個問題,我不是在問有什麼其他範例。 其中有很多,我想知道哪一個:

  • 已經在實踐中使用,不僅在理論上。
  • 可以與oop競爭 ,因此它可以在沒有或最少痛苦的大型項目中使用。
  • 可用於開發具有業務邏輯,數據庫等的桌面應用程序。
  • 不與oop的伴侶一起使用,但可以替換oop。

如果有的話,它的優點/缺點是什麼,為什麼它比oop更好/更差,哪種語言最好使用它,在流行語言中使用它,有任何設計模式,它可以嗎?完全取代oop?


函數式編程是另一種流行的編程範式,主要是在學術界。 函數式編程語言的最佳示例是HaskellStandard ML

函數式編程和麵向對象編程之間的根本區別在於,您在數據流而非控制流的意義上進行編程。 請參閱Simon Peyton-Jones 撰寫的演示效果與功能編程的演示文稿以獲得詳細介紹。

Erlang是業界使用的函數式編程的一個很好的例子。 它主要用於電信,分佈式和容錯系統。 請參閱演示文稿Erlang - Joe Armstrong 的並發世界軟件

還有一些新的函數式編程語言將函數式編程與OOP相結合。 兩個很好的例子是.NET平台的F#和Java平台的Scala ; 他們經常可以使用其他語言編寫的平台上的現有庫。

現在,新編程語言的趨勢是Multi-paradigm ,其中面向對象編程和函數編程等多種範例被組合在同一種語言中。


目前沒有可以真正取代OOP的範例。 OOP(的好處)的問題在於它為您做了大量工作 - 自動發布資源,驗證數據等,並且可以輕鬆驗證代碼 - 更不用說世界上絕大多數現有的庫用C ++,C#或Java等OOP語言編寫。 如果沒有這樣的大型圖書館,那麼相處的現實是非常值得懷疑的。

在利基或學術界,你會發現很多功能編程。 但是,如果你真的想做一個大型項目,OOP是唯一的出路。

我認為泛型編程將成為一種新的範例。 但是,它仍處於開發階段,只有C ++ / D才能提供真正優秀的通用編程。


程序處理是OOP出現之前的一切,已經產生了一些大的真實應用程序(事實上,它們大部分是最初的)和許多操作系統。

它當然可以用於具有最小疼痛和最大性能的大規模產品中





paradigms