マルチリンガルの時代
http://www.hyuki.com/d/200603.html#i20060329190000
先日から「○○言語で継続渡し」シリーズというのを続けていたので、なんてタイムリー。
ええと、この辺で一度シリーズのまとめ(いわゆるHUBエントリ)をした方が良さそうなので、簡単にまとめると、
- id:carbuncleさんの再帰の練習帳3でフィボナッチ数列を末尾再帰化するという話題が出た(このときの言語はC#)
- Javaで継続渡し
それを受けて、継続渡しを使ったSchemeによる実装と、それをJavaに移植したものを公開 - Javascriptで継続渡し
さらにJavascriptでも実装してみた - id:carbuncleさんによる再帰の練習長6+でC#の最終版が公開
- さくらいさんによるlambda式と再帰ではPythonバージョン
- Perlで継続渡し
- Cで継続渡し
- Cで継続渡し(末尾最適化バージョン)
- Rubyで継続渡し
- Cで継続渡し(末尾最適化バージョン)修正版
(以下、上の文章とはほとんど関係ない上にまだ妄想段階のネタ)
マルチリンガルといえば、『30日でできる! OS自作入門』(ISBN:4839919844)を読んで、どういうOSが作りたいか考えたときに思いついたのがマルチリンガルOS(MLOS)というものだった。キャッチフレーズは、「プログラマの、プログラマによる、プログラマのためのOS」。特徴として、ネイティブで複数の言語をサポート。APIは言語処理系が作りやすいものにして、起動した瞬間から好きな言語のシェルが立ち上がる。今だとIDEの方が良いのかな。イメージは昔のBASICマシンみたいにSchemeとかJavaとかC#とかがOSに組み込まれたようなもの。たとえばPerlのソースコードを直接実行できたり、シェルからclassファイルを読み込んだり、Rubyで定義した関数をSchemeから呼んだりできる。やっぱりベースはSchemeかな。Scheme処理系を内蔵したOS+各種言語のSchemeトランスレータというのが現実的か。それだとマルチリンガルというよりScheme OSになるのか? それはそれでいいかもしれないけど。あと、普通のOSの上で複数の処理系を動かすのと何が違うのかと訊かれると、正直よく分からない。とりあえずコードネームはもう決めてあって、その名もBABEL Projectという。個人的にはこの名前はとても気に入っている。そのためだけにやってもいいくらいに。