«前の日記(2007-04-11) 最新 次の日記(2007-04-13)» 編集

Matzにっき


2007-04-12 [長年日記]

_ [OOP] Why OO Sucks

「Erlangの人」Joe Armstrongによる、「なぜOOは良くないか」。

  1. Data structure and functions should not be bound together
  2. Everything has to be an object.
  3. In an OOPL data type definitions are spread out all over the place.
  4. Objects have private state.

2と3はちょっと誤解っぽいけど、残りは 関数型プログラミングの視点からはもっともだと思う(特に4)。 だけど、世の中にはそれに耐えられない人もいるのよ。

現実世界に「状態」があるのに、プログラミング言語がそれを表現できない (ということは、間接的に表現しなければならない)というのは、 私の脳内モデルとプログラムの距離が遠くなって大変つらい。

現実世界から副作用のない関数モデルへのマップが脳内でできる(関数脳)状態の人には 関数型言語が最適なのだと思う。 問題はどうやってそれを構築するか、だれも言語化していないことだ。 「習うより慣れろ」とかいう精神論しか聞かない。 それはあまりにスパルタな。

それとも私が知らないだけ?

_ [Ruby] Java News Brief - April 2007: JRuby

JRubyの紹介。JRubyを介してJavaな人の視野にもじわじわとRubyが進出してきているようだ。

たとえ、仕事ではJavaしか使わないにしても、 Rubyを知っておくことは無駄ではないと思うよ、実際。

ただ、仕事でJavaを使うのが苦痛になるという副作用があるかもしれないから、 それには注意。

_ [Ruby] Compute Node Ruby for Bluegene/L

Bluegene/LのノードでRuby 1.8が動いた、という話。

考えてみれば、全体としては世界最速のスーパーコンピュータだとはいえ、 各ノードはLinuxマシンなわけで、別に珍しいことではないかも。

ただ、Bluegene/Lのノードはスレッドに対応していないので、 YARVは動かないらしい。そういうものなのか。

本日のツッコミ(全3件) [ツッコミを入れる]
_ ひろのぶ (2007-04-17 13:02)

ってゆーか、そもそもオブジェクト指向はSimulaで現れたシミュレーション言語の副作用つーか。そもそも関数型とオブジェクト指向とは、まったく別物って考える方が利口だと思うな。それがプログラミング言語という括りで語られるから、なんか同じ世界だと思っちゃうのが、いささか議論の混乱の元というか。ってことをむかしミヨルナープロジェクトから出てきていたBETAを試しながら思っていましたよ。

_ まつもと (2007-04-17 13:13)

Betaってのも変な言語だそうですね。<br>サブクラスで再定義される場所を指定するinner(superの逆)とか。<br>おもしろそうだけど、触る機会はついぞありませんでした。

_ ひろのぶ (2007-04-17 13:51)

もう細かいことまで覚えていないけど(なんせ触っていたのは、もう15年ぐらい前の話だ!!)BETAはSimulaの正当な後継者で物理モデルの計算(Computerized Physical Models)って部分を作っていた人たちは前面に押し出していた。そのための機構を色々もっていたし。当時、BETAを日本で動かした人間は2桁はいても3桁はいないと思う。自分以外で試してみたっていうのは、当時米澤先生の所の大学院生が1人いた以外には知らないし。OOPSLA '91でBETAのチュートリアルを取ったんだけど、これが30人ぐらいのすごいマイナーなクラスでさー(ちなみにBoochのクラスは数百人規模だった)、来ている連中が大学で研究している奴らとか、AT&Tの本体側でC++とか推進している研究グループとかで、途中からチュートリアルじゃなくて、アメリカの大学でやるような授業のようなディスカッションになってた。上空1万メートルぐらいで戦闘機同士が交戦しているのを地上から見ているぐらいの遠いディスカッションだった記憶がある。当時のオイラにはすごい刺激だったよ。

お名前:
E-mail:
コメント:
[]

«前の日記(2007-04-11) 最新 次の日記(2007-04-13)» 編集

track feed Matzにっき Creative Commons License This work is licensed under a Creative Commons License.