Smalltalkへの最近の紹介は、「純粋な」オブジェクト指向スタイルのアプリケーションと利点について私に啓発してくれました。私はこれまでRubyでこのメリットを見ていましたが、非オブジェクト指向の存在がif
、unless
などのコンストラクトの存在はすべてのことを実行していないように思われました。最も純粋なオブジェクト指向言語のいくつかは何ですか?
純粋にここでは、ブール値&コレクションでフロー制御メソッドを使用する代わりに、 'すべてがオブジェクトです'(ブロックなどを介した関数を含む)や手続き型フロー制御はありません。
しかし、Smalltalkのような言語であっても、オブジェクト指向ではないものがいくつかあります。例えば、特殊な構文( ':is'やそれに類似したメソッドの代わりに:=)を使用せずに変数の代入を行うことはできないようで、関数からの戻り値には、 '属していないどんなオブジェクトにも。
このスタイルをさらに引き継ぐ言語はありますか?
純度のメリットは何ですか?純粋さは、モナドが手続き的な観点から理解することが非常に難しいので、ハスケルが他の関数型言語よりも大幅に高い学習曲線を持つようにします。 –
@Chris:はい、しかし、モナドはあなたが一度それを得ると素晴らしいです。一方、この質問は純粋なものを少し遠くに運ぶように思えます...確かに、戻り値を落とし、代わりにそのような種類の通信がオブジェクト状態を通過する必要があります(メソッドを呼び出すと結果は得られません。 'self.result')、しかし、プログラマは通常、すべての範囲を可能な限り小さくしようとする理由があります。加えて、いくつかのオブジェクトプロパティをその値に定義しない限り、返り値がないのでメソッド連鎖が解除されますが、その後は魔法に戻ります。そして、そのリストは続く。 – delnan
私はこの点で純度が非常に冗長で潜在的にパフォーマンスが悪いものであることを完全に認識していますが、非常に小さく一定したルールセットを持つ言語でも大きなメリットがあります。それは、あまりにも良いことの良い例のためだけであっても、私は極端に物事を取っている言語を見つけることが大好きです。 – donalbain