2011-08-29 118 views
11

最近對Smalltalk的介紹讓我對「純」面向對象風格的應用和好處有了啓發。我以前在Ruby中看到過這樣的好處,儘管面向非面向對象的if,unless等構造似乎並沒有帶來一切。純粹在這裏,我談論的是'一切都是對象'(包括通過塊或類似的功能),沒有過程式流程控制,而是在布爾集合中使用流控制方法。然而,即使在像Smalltalk這樣的語言中,有些事物因爲不是面向對象而突出。例如,如果不使用特殊語法(:=而不是'is:'或類似的方法)來進行變量賦值似乎是不可能的,並且從函數返回值似乎需要似乎不屬於的^運算符'任何對象。什麼是一些最純粹的面向對象的語言?

有沒有任何語言可以進一步提升這種風格?

+0

純度的好處是什麼?純度使Haskell比其他函數式語言具有更高的學習曲線,因爲monad從程序角度來看很難理解。 –

+2

@克里斯:是的,但是一旦你得到他們,單子就會很棒。另一方面,這個問題似乎讓純粹的東西變得有點遠了......當然,你可以放棄返回值,而是需要通過對象狀態進行通信(調用一個沒有任何結果的方法,然後使用'self.result'),但是我們程序員通常會盡量保持儘可能小的範圍,這是有原因的。另外,它會破壞方法鏈接,因爲沒有返回值,除非將某個對象屬性定義爲該值,但隨後我們又回到了魔術。而這樣的例子不勝枚舉。 – delnan

+1

我完全認識到在這方面的純度可以使事情變得非常冗長而且可能不是高性能的,但在具有非常小且一致的規則集的語言中也有顯着的好處。也就是說,我很想找到一種能夠讓事情發展到極致的語言,即使只是一個好東西的例子。 – donalbain

回答

8

由於長時間Smalltalker我(相對於很多其他的答案在這裏),瞭解你所追求的 - 與「自我」語不走遠一點,在至少在涉及任務時。沒有在自己編程,我不能評論它比這更進一步。另一種與自我相似的新語言是Slate,也是原型的,也使用消息發送進行分配。

2

埃菲爾鐵塔,Smalltalk和紅寶石 http://www.jvoegele.com/software/langcomp.html

+2

Smalltalk在這個問題上被討論和駁回。 Ruby比Smalltalk更加混合(例如,它具有'call/cc'等功能特性)。請閱讀這個問題。 – delnan

+0

該鏈接實際上是一個很好的資源。 – donalbain

+0

十年前它是一個很好的資源。 Java自2003年以來一直使用泛型。 – fdreger

相關問題