未来のいつか/hyoshiokの日記

hyoshiokの日々思うことをあれやこれや

Riscy Ruby

Risky RubyではなくてRISCY Ruby

昨日、プロコンワークショップのあとの某飲み会で、rubyのまつもとさんとヨタ話をする。適度というか相当よっぱらっていたので、いつもの調子でぶいぶい飛ばしてしまった。

Twitterでも、戯言を記したのであるが、わすれないうちにいくつか記しておく。
http://twitter.com/hyoshiok/statuses/941993426

RHGの逆襲という、Ruby Hacking Guideとして知られる書物を熟読する勉強会があるのだが、毎回毎回、rubyコードを書いたこともないシロートのわたしがソース読むの楽しいよ、楽しいよということで、月に一度へらへらしながらrubyの実装のソースコードを読む会合だ。(相当アブナイおやじである)

で、いろいろシロートながら質問をさせていただく。先日は評価器のあたりをやっていて、1+2みたいなものの評価の方法を教えていただいたのだが、パース時にリテラルなんかはそのまま評価して1+2とかでてきたら3として処理すればいいじゃないの(定数の畳みこみとしてしられる)、とか質問したところ、「それはできません」とキッパリ言われて、え、なんで、なんで、「+の定義は実行時まで確定しないですから」というやりとりがあって、どひゃーとした。

そーなんだ、dynamic languageなのね。そーだよね。その柔軟さがいいのよね。とか思ったのだが、心の底では、それはちとやりすぎじゃないの、十分すぎる柔軟性は、速度を著しく低下させるのじゃないの、などと思った。

Rubyに速度を求めるのは小学生までだよね、とか言われちゃうわけだけど、No、そんなことはない。速くて困る人はいない。速度命である。Rubyの柔軟性、書きやすさは保持したままで、速度をとことん求めたい。そう強く思う。

そこでRiscy Rubyだ。

Rubyの言語仕様の中で、速度を著しく落していると思われる機能を徹底的に削除して、Rubyの皮をかぶったRISCチックなRuby風味の言語を再設計する。シンタックスRuby風味なのだけど、Rubyとは似ても似つかない言語仕様となる。

これってVAX全盛時代にRISCを提案するような感じかと思う。(ちと違うかもしれないけど)

発想はともかく速度だ。速度命だ。

VAXのアーキテクト(そして後のAlphaのアーキテクトとなるひとたち)が自分達の設計したVAXのInstruction Set Architectureの中で、スケーラビリティの足枷になるような機能をAlphaの設計時にすっぱり切り落したように、Rubyの言語仕様を再定義するというような感じである。

もちろんわたしの妄想である。Rubyの言語仕様を理解しているわけではないので、そんな事が可能かどうかすらもわからない。ヨッパライの戯言である。戯言であるが、クレージーなアイデアだけに捨てがたい魅力を感じる。