“あとはゴミ集めだけ” Lisp キット

イベント内容

セミナーの内容

ゴミ集め(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
  • クイズ

配布物

スライド資料(PDF)と”あとはゴミ集めだけ” Lisp キットを CONNPASS のメッセージにて配布します。

Zoom Meeting link

CONNPASS のメッセージにてお知らせします。

注意事項

  • 配布スライド資料の公開は禁止です。

注意事項

※ こちらのイベント情報は、外部サイトから取得した情報を掲載しています。
※ 掲載タイミングや更新頻度によっては、情報提供元ページの内容と差異が発生しますので予めご了承ください。
※ 最新情報の確認や参加申込手続き、イベントに関するお問い合わせ等は情報提供元ページにてお願いします。