ゴミ集め(GC)を作ってみたくありませんか?
もしかしたら難しいというイメージがあるかもしれませんが,コードを書くこと自体はそれほどたいへんではありません.それでもゼロから言語処理系を作り,ラインタイムライブラリを作って,その中でゴミ集めを実装するのはそれなりの作業だし,はじめての人には迷うポイントがたくさんあるでしょう.
そこで”あとはゴミ集めだけ” Lisp キットというのを作りました.名前のとおり,ゴミ集めだけ実装していない Lisp 処理系です.ゴミ集めはないけど動きます.メモリある限り動きます.
ゴミ集めの実装に集中できるように極力シンプルな実装にしました.これくらいシンプルです:
私が作ったゴミ集めの実装(非公開)は次の規模でした:
はじめに”あとはゴミ集めだけ” Lisp キットの設計とコードを解説します.それからゴミ集めのアルゴリズムを解説します.あとは実装したり実用的な処理系に進化させたりと楽しんでください.
もしかしたらコンパイラや仮想マシンの解説の方が面白いかもしません.小さな処理系なので仕組みを理解したり実験したりするのに向いています.複数のゴミ集めアルゴリズムを実装して比較するという楽しみ方もあります.
それから定義構文すらない小さな言語で再帰関数を書く方法についても紹介します.これもおすすめポイントです.
最後にクイズも用意しておきました.ゴミ集めのコードを書くこと自体はそれほどたいへんではないといいました.80 行程度ですから.でもデバッグがたいへんではないとはいってません ( ̄ー ̄)