LispからCへのトランスレート

Lisp, Ruby, Pythonなどのダイナミックな型の言語をCへトランスレートするときに実行速度を気にするなら、いかに型推論をうまくやるかがキモだと思われます。

で、私は型推論に関してはまったくの初心者です(笑)

数十年前にMLかHaskellのチュートリアルをネットで読んで、これはいいものだなと思いました。

当時から思っていたことは、

「人間がコーディング中に考えて、型を特定してオプティマイズできるということは、そういう判断基準がこの世に存在するということ(あとはそれをコードにすればいいだけ)」

です。(そういう判断をするコードは計算量のオーダーが…という意見には、ゲリラ的に解決します!と答えます…)

で、そういうLisp to C translatorを書けたら私は成仏するんだと思います(笑)

インナースマイル?

こんな顔で最近はすごしています。
ヨガにはインナースマイルという概念があって、まぁ、自然な笑顔が出ない生活はよろしくないでしょうというようなことです。

私はとくに携帯の代理店の女性とか、女性の看護師さんと接しているときによけいヘラヘラしますね。

KISSのILOS実装は決定打までやるか?

ISLispのオブジェクトシステムILOSのオブジェクトのスロットをC言語のレベルでの構造体のメンバーにじかにするとO(C)レベルでのアクセスが可能ですが、ILOSは制限付き多重継承を許しているので、その前のスロット位置の計算にまたでかいO(C)レベルの計算量(ハッシュテーブル? シンボルに書き込む?)がたぶん必要になります。

………スロットはplistでいいだろ……(どうしようかな…)

———————————-
午後に気が付いたんですが、C言語へのトランスレートを視野にいれると、トランスレート時にスロットの位置は確定しますね… ILOSはCommon LispのCLOSとちがってクラスの動的な再定義はなしです。

多重継承を許しているC++がコンパイル時にそういうことやってるんだから当然ですね…勘が鈍っている…

———————————-
翌日ですけど、そういえば、C++のメソッドにはvtableがあってとか少しずつふわっと思い出してきました。