言語ゲーム

とあるエンジニアが嘘ばかり書く日記

Twitter: @propella

純粋オブジェクト嗜好妄想

  • A: 僕は Smalltalk におけるブロック(クロージャのような物です)が嫌いである。ブロックは処理をオブジェクトとして扱う便利な物だが、何となく他のオブジェクトと違う感じがして違和感がある。
  • B: Tweak では、コレクションクラスの要素以外に、cursor というインスタンス変数がある。これは今参照中のインデックスを指す。要するに Tweak では配列が最初からストリームである。リッチすぎて邪悪なような気もするが、一方でよりオブジェクトっぽくなったような気がする。
  • C: オブジェクト指向プログラミングという言葉には、構造化プログラミングや関数型、論理型プログラミングに対して、何となく取ってつけたかのような、実利嗜好のいい加減なイメージがある。

ふと、極端なオブジェクト指向言語という物がもしもあれば、どんな物だろうかと考える。それは、何となく、それは一時変数が一つもなく、引数が一つ以下しか無い言語ではないかと直感する。ブロックを使わないと変数が減るし、カーソルがあっても減る。クロージャにとっては、一時変数は本質的な物かも知れないが、オブジェクト指向では、インスタンス変数以外は必要無いように思える。

引数が一つというのは、カリー化の事を言ってるんじゃなくて、二つ以上の引数でメソッドが呼ばれているという事はその二つの引数には何らかの密接な関連があるはずで、それはオブジェクトにするべきだと言う事。関連が薄ければ、二回に分けてインスタンス変数に代入すれば良い。

単に、あっても無くても良いものは無いほうが良いと言ってるわけでもないけど、実験として、極端を極めたらどうなるかやってみるのも面白いかなとふと思っただけです。