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