Erlang/Elixir 对象设计的重用性,Joe Armstrong (Erlang 發明人)

chenge · 2014年03月30日 · 2585 次阅读

物件導向與函數式程式設計

Joe Armstrong (Erlang 發明人) 在“Coders At work”談論過物件導向程式設計的重用性:

“我認為缺少重用性是物件導向語言造成的,而不是函數式語言。物件導向語言的問題是,它們帶著語言執行環境的所有隱含資訊四處亂竄。你想要的是香蕉,但看到的卻是香蕉拿在大猩猩手裡,而大猩猩的後面是整個叢林”

公平點說,我的看法是這不是物件導向程式設計的本質問題。你可以寫出函數式的物件導向程式,但確定的是:

  • 典型的 OOP 傾向強調改變物件的狀態。
  • 典型的 OOP 傾向層與層之間緊密的耦合。
  • 典型的 OOP 將同一性 (identity) 與狀態的概念搞混了。
  • 資料與程式碼的混合物,導致了概念與實際的問題產生。

Rich Hickey,Clojure 的發明人(一個給 JVM 用的函數式 Lisp 方言),在這場出色的演講裡談論了狀態、數值以及同一性。

Ruby 函數式程式設計 by Arnau Sanchez

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请 注册新账号