“あとはゴミ集めだけ” Lisp キット
イベント内容
セミナーの内容
こんにちは,初谷@PRINCIPIAです.突然ですがゴミ集め(GC)を作ってみたくありませんか?
もしかしたら難しいというイメージがあるかもしれませんが,コードを書くこと自体はそれほどたいへんではありません.それでもゼロから言語処理系を作り,ラインタイムライブラリを作って,その中でゴミ集めを実装するのはそれなりの作業だし,はじめての人には迷うポイントがたくさんあるでしょう.
そこで”あとはゴミ集めだけ” Lisp キットというのを作りました.名前のとおり,ゴミ集めだけ実装していない Lisp 処理系です.ゴミ集めはないけど動きます.メモリある限り動きます.
ゴミ集めの実装に集中できるように極力シンプルな実装にしました.これくらいシンプルです:
- 構文は 6 種類だけ
- 組み込み関数は 5 個だけ
- 仮想マシンの命令は制御 7 個,組み込み関数用 5 個
- コンパイラは 42 行(Scheme)
- 仮想マシンは 392 行(C)
- テスト用の仮想マシン(Scheme)は 37 行
私が作ったゴミ集めの実装(非公開)は次の規模でした:
- マークスイープ GC 80 行
- コピー GC 77 行
はじめに”あとはゴミ集めだけ” Lisp キットの設計とコードを解説します.それからゴミ集めのアルゴリズムを解説します.あとは実装したり実用的な処理系に進化させたりと楽しんでください.
もしかしたらコンパイラや仮想マシンの解説の方が面白いかもしません.小さな処理系なので仕組みを理解したり実験したりするのに向いています.複数のゴミ集めアルゴリズムを実装して比較するという楽しみ方もあります.
それから定義構文すらない小さな言語で再帰関数を書く方法についても紹介します.これもおすすめポイントです.
最後にクイズも用意しておきました.ゴミ集めのコードを書くこと自体はそれほどたいへんではないといいました.80 行程度ですから.でもデバッグがたいへんではないとはいってません ( ̄ー ̄)
プログラム
- Pure Lisp
- 仮想マシン
- コンパイラ
- 仮想マシンの実装
- 再帰関数を書く
- ゴミ集めのアルゴリズム:(1) マークスイープ GC, (2) コピー GC
- クイズ
時間は2時間とってありますが,解説が終わった時点で終了します.
配布物
スライド資料(PDF)と”あとはゴミ集めだけ” Lisp キットを CONNPASS のメッセージにて配布します。
Zoom Meeting link
CONNPASS のメッセージにてお知らせします。
注意事項
- 配布スライド資料の公開は禁止です。
注意事項
※ 掲載タイミングや更新頻度によっては、情報提供元ページの内容と差異が発生しますので予めご了承ください。
※ 最新情報の確認や参加申込手続き、イベントに関するお問い合わせ等は情報提供元ページにてお願いします。
新規会員登録
このイベントに申し込むには会員登録が必要です。
アカウント登録済みの方はログインしてください。
※ ソーシャルアカウントで登録するとログインが簡単に行えます。
※ 連携したソーシャルアカウントは、会員登録完了後にいつでも変更できます。