言語ゲーム

とあるエンジニアが嘘ばかり書く日記

Twitter: @propella

最近やっている事

例年の事だけど朝夕の暑さとオフィスの寒さで体調がかんばしくない。食欲はあるんだけど食べるとすぐ腹を壊す。すると何かと後ろ向きの気分になって楽しい気分になれない。まあでも特に楽しい気分じゃないと仕事が出来ない訳でもないし、最近みんな出張で周りに人が居なかったのでのんびりやっていたがそろそろ気分を変えたいなあと思っている。

最近やっている事を書く。ここ二週間は Flashバイトコードを調べていた。目的は、とある lisp っぽい言語の Flash Player 用バックエンドを書く事。とある言語から自家製バイトコードを出す所までの機構はすでにあるので、その自家製バイトコードFlash の AVM2 用に変換するような部品を作れば良い。コンパイラを一から作る事を考えれば楽そうだ。うたい文句は、メタサーキュラーな実装になっているので、一旦 Flash で動くようになれば Flash 自体を使って言語を再ビルドできる。こういうのを誰得というのかもしらないけど。好きな人は好きだと思う。

方針としては、とある言語がプログラムの定数を抜き出してバイトコードエンコードする部分を abc 用に書き換える。ここは元々とある lisp っぽい言語自体で書かれてあるので、lisp っぽく書けば良い。

問題は abc 特有のオブジェクトとスコープの性質(未だ良く理解出来ていない)をうまくマップ出来るか。これは面倒なので、最悪全部 public で名前空間もオブジェクトもサポート無しで良いかと思っている。あとランタイムをどうやって作るか。ランタイムというのは、とある言語で使ってる car とか cdr とか、I/O とかのエミュレートの事だ。最初はとある言語の C のソースをそのまま Alchemy を使って流用しようかと思っていたが、Alchemy に依存するの嫌だし。ActionScript で書き直すかな。

あと一つ、出来るかどうか分からないけど、とある言語を全然使わないで Scheme かなんかでブートストラップするというのも考えている。なぜ Scheme かと言うと、とある言語が十分 lisp っぽいので色々な部品を後で流用出来て便利そうだから。でも大掛かりになりそうなので、まだ法螺レベルかもしれない。出来るだけ楽できる方法はないだろうか。