«前の日記(2006-01-16) 最新 次の日記(2006-01-18)» 編集

Matzにっき


2006-01-17 [長年日記]

_ [言語] 萌え指向プログラミング言語「萌香」

えーと、なんというか...。

しかし、外見がアレな部分を取り除いて本質を見るとなかなか興味深いものがある。 まったくメジャーになりそうな方向性ではないが、そういうことを目指すものではないだろう。

「萌香」はRubyで実装されている。

_ [Ruby] Classbox/R

Smalltalk(Squeak)用のClassbox、Java用のClassbox/Jを参考にしつつ、 Classbox/Rをデザインしてみる。

しかし、Rubyでは

  • 実体は単なるオブジェクト
  • クラス名は単なる定数に過ぎない
  • クラス名はネストできる

などの理由で、そのままは適用できそうにない。Classboxに似た概念は必要そうだが、 ちょっと違うものになりそう。

あれ、待てよ。

Classboxから派生する二つのマイナーなアイディアを組み合わせると、 かねてからの懸案であった

  • method combination (sort of AOP)
  • selector namespace
  • private instance variable

相当(追記: これらの機能が解決しようとしていた問題の解決)を一度に実現できるような気がしてきたぞ。

詳細を書くにはこの余白は(ry (またか)。

冗談はともかく、なかなか良さそうなアイディアのような気がしてきた。 しかし、良さそうと思っても実際にやってみるとそうでもない場合はたびたびなので、 もうちょっと考えてみよう。確実に言語(クラスまわり)が複雑になるので、 仕様の複雑さや性能とのトレードオフになるな。

まあ、この辺は(多重代入とかと違って)元があんまり複雑じゃないから、 仕様の複雑さの方はあんまり問題にならないかなあ。

本日のツッコミ(全8件) [ツッコミを入れる]
_ Matz Jr. (2006-01-20 13:32)

娘です。<br>「萌香」ってなに??<br>読んだけど、ツッコミ入れにくいなぁ・・・。<br>とりあえず、「読んだ」という報告まで。

_ 通りすがり (2006-01-20 19:21)

「萌香」って要するに Scheme を Ruby で実装して、日本語向きにちょっと変えたって感じでしょうか?<br><br>Scheme: (define a 123)<br>萌香: (a 123 define)<br>又は: 「a 123 定義」<br>又は: 「a を 123 に 定義 する」<br>又は: あのね a を 123 に 定義 します。<br><br>Scheme: (lambda (x) (+ x 2))<br>萌香: ((x) (x 2 +) lambda )<br>又は: 「(x) (x 2 足す) 仕事」<br>又は: 「(x) を (x に 2 を 足す) 仕事」<br>又は: あのね (x) を (x に 2 を 足す) 仕事 します。<br><br>Scheme: (define +2 (lambda (x) (+ x 2)))<br>萌香: あのね 足す2 を 「(x) を (x に 2 を 足す) 仕事」に 定義 します。

_ kou (2006-01-21 01:16)

助詞の類がことごとくフェイクってのが(w

_ 野分 (2006-01-21 02:27)

> 萌香<br>Lisp + FORTH (Mind) といったところですかね?<br>素直にMindで良いような気もしますが……

_ こさこ (2006-01-21 08:10)

ここでのselector namespaceは、Classboxと同じものとして書いているのでしょうか?違うものとして書いているのでしょうか?

_ まつもと (2006-01-21 10:08)

selector namespaceやclassboxが解決しようとしていた「なにか」(スコープを限定したメソッド)のことです。「機構」で「問題」を表現するのは不適切でしたかね。

_ みずしま (2006-01-22 20:27)

> Classboxから派生する二つのマイナーなアイディア<br><br>これってどういうものなのでしょうか?教えていただけると、幸いです。

_ こさこ (2006-01-22 20:57)

了解しました。selector namespaceとClassboxの違いが何なのか気になっていたので。今見直すと、普通に読めばわかる筈でした。

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

«前の日記(2006-01-16) 最新 次の日記(2006-01-18)» 編集

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