Hatena::Groupcadr

From The Darkside - Lisp実験室@Hatena このページをアンテナに追加 RSSフィード

2009-11-22  

[][][] 2009/11/07 Shibuya.lisp TT#4に行ってきた 17:27  2009/11/07 Shibuya.lisp TT#4に行ってきた - From The Darkside - Lisp実験室@Hatena を含むブックマーク はてなブックマーク -  2009/11/07 Shibuya.lisp TT#4に行ってきた - From The Darkside - Lisp実験室@Hatena  2009/11/07 Shibuya.lisp TT#4に行ってきた - From The Darkside - Lisp実験室@Hatena のブックマークコメント

ひさびさに更新してみて初めてココにはTT#3を更新していないことに気がついた(^^;


そして長らく書いていないので、はてな記法についてすっかり忘れてしまった(^^;


それはさておき、行ってから2週間以上が経過してしまったけれども今頃、

Shibuya.lisp TT#4の感想を印象に残った部分メインで覚えてる範囲をメモ書き程度

に書いてみます。



今回からLisp初心者入門セッションがSTARTということですが、平日

歩いて通勤していることもあり疲れていたためテキストの内容を確認

して第二部から出かけてみた。

ただ急いでいたため筆記用具を忘れてキーワード記録に失敗(^^;


まず、近山先生の1980年前後のLisp事情とUtiLispの話。

大学卒業時の研究テーマにLispを選び、実装したMicroLisp。

メモリ1KB以内を目指すためアトムを1文字で実装。

APLみたいだけど意味が通じて読みやすくて凄い。

次に修士時代にLispコンテストに応募するためFACOM 230/38上で動くLisp

拡張したPascalで実装。

結局コンテストの締め切りには間に合わなかったけど、「情報処理」誌上で竹内先生

に同じマシン上のFortranで実装したものより速かったと言及してもらえた。

Pascalを拡張してGCを書き速度も出る処理系を作っちゃうんだから本当に凄い。

次に博士時代にはAdaの仕様書を読んで勉強していたが和田先生から

「仕様書なんか読んでても言語は分からない。まずは作ってみろ」と提案され

Lispで実装してみることに。

この和田先生のエピソードを聞いて、踊る大捜査線の「事件は会議室で起きてるん

じゃない。現場で起きてるんだ!」

がなぜか頭に思い浮かんだ(笑

以上の経験を元に使いやすさを追求したUtiLispの開発へ。

ちなみにUtiLispのUtiは「Utile」(=Useful)を意味する。

Lispの中からOSをコントロールしハードウェアベタベタの最適化を行う実装。

今となっては古い手法だが当時はベストエフォートだった。

実装には1年半、残りの半年でドキュメントを書いた。

1人で書き上げたというのだから本当に凄いなと思った。

自分もキーボードのあるモバイル端末上で動くLisp処理系の研究と実装をちまちまと

やっているので工夫をすればメモリが少ない環境でも十分実用的なレベルの処理系が

書けるんだという参考になった。



次に竹内先生のLispの心についての話。

LISQ(りっぷく)、LISX(りっぺけ)、TAO

LISQにはcar,cdr以外にcbr,ccrの4つのセルがあった。

TAONTTで最適化のためにマイクロコードレベルでガリガリ書くだけでは足りず

ロジックボードもいじっていた。

最適化のためにマイクロコードレベルで実装という話は近山先生のUtiLispにも通じるな

と思った。

カレンダープログラムを作ってFreeBSDVMware上のTAO/ELISエミュレータでデモ。

LispMのエミュレータがVM環境上で動作しているのが興味深い。

今のハードウェアスペックなら自作で組み立てても当時動かしていた環境より3倍

くらい速いのが作れると言われていたのが印象的。



LTでは特にgaraemonさんのInterpreterで少しずつ動かしながら実行結果を確認できる

「3次元幾何モデルライブラリkomainu on CL」とひげぽんさんの「さあ家に帰ったら

Schemeのコード書いてみよう」が印象に残った。


TT#4以降、様々なLispの論文を読んでいるがCommon Lispもいいけど近山先生や竹内

先生みたいな限られた環境で最適化する実用的なLispやLispMやArcなんかも面白いと

思うので、いろいろ横道に逸れつつ作っている自分の処理系にもそういう面を活かせれば

いいなと思う。