2011-08-29 23 views
11

Smalltalkへの最近の紹介は、「純粋な」オブジェクト指向スタイルのアプリケーションと利点について私に啓発してくれました。私はこれまでRubyでこのメリットを見ていましたが、非オブジェクト指向の存在がifunlessなどのコンストラクトの存在はすべてのことを実行していないように思われました。最も純粋なオブジェクト指向言語のいくつかは何ですか?

純粋にここでは、ブール値&コレクションでフロー制御メソッドを使用する代わりに、 'すべてがオブジェクトです'(ブロックなどを介した関数を含む)や手続き型フロー制御はありません。

しかし、Smalltalkのような言語であっても、オブジェクト指向ではないものがいくつかあります。例えば、特殊な構文( ':is'やそれに類似したメソッドの代わりに:=)を使用せずに変数の代入を行うことはできないようで、関数からの戻り値には、 '属していないどんなオブジェクトにも。

このスタイルをさらに引き継ぐ言語はありますか?

+0

純度のメリットは何ですか?純粋さは、モナドが手続き的な観点から理解することが非常に難しいので、ハスケルが他の関数型言語よりも大幅に高い学習曲線を持つようにします。 –

+2

@Chris:はい、しかし、モナドはあなたが一度それを得ると素晴らしいです。一方、この質問は純粋なものを少し遠くに運ぶように思えます...確かに、戻り値を落とし、代わりにそのような種類の通信がオブジェクト状態を通過する必要があります(メソッドを呼び出すと結果は得られません。 'self.result')、しかし、プログラマは通常、すべての範囲を可能な限り小さくしようとする理由があります。加えて、いくつかのオブジェクトプロパティをその値に定義しない限り、返り値がないのでメソッド連鎖が解除されますが、その後は魔法に戻ります。そして、そのリストは続く。 – delnan

+1

私はこの点で純度が非常に冗長で潜在的にパフォーマンスが悪いものであることを完全に認識していますが、非常に小さく一定したルールセットを持つ言語でも大きなメリットがあります。それは、あまりにも良いことの良い例のためだけであっても、私は極端に物事を取っている言語を見つけることが大好きです。 – donalbain

答えて

8

- と「自己」の言語はで、さらに少し行くん割り当てに関しては少なくとも自己でプログラミングされていないので、私はそれ以上コメントすることはできません。 selfに似た新しい言語はSlateで、プロトタイプでもあり、割り当てのためにメッセージ送信を使用します。

2

エッフェル、Smalltalkの、そしてSmalltalker(ここでは他の回答の多くと比較して)私はあなたが後にしているかを理解長い時間としてルビー http://www.jvoegele.com/software/langcomp.html

+2

スモールトークは議論され、質問で却下されました。 RubyはSmalltalkよりはるかにハイブリッドです(例えば、 'call/cc'などの機能があります)。質問をお読みください。 – delnan

+0

そのリンクは実際には素晴らしいリソースです。 – donalbain

+0

これは10年前の素晴らしいリソースでした。 – fdreger

関連する問題