Whitespace処理系つくったの忘れてた。
かんたん言語Whitespaceの処理系つくったの忘れてた。
http://konbu.s13.xrea.com/lib/lang/c/ws_20080503.tar.bz2
Whitespaceっていう言語はForthライク(といって良いと思うたぶん)な小さなスタック型言語。パーサとかもとても簡単に書けるし、brainf*ckなどの処理系をつくるのに飽きた人なんかにおすすめですね。
makeすれば普通に動くんじゃないかな。strndupの無い環境だとそこ変えんと駄目。
% make perl parsegen.pl wsparse.def >gencode.c gcc -Wall -c -o parse.o parse.c parse.c: In function ‘read_String’: parse.c:80: warning: implicit declaration of function ‘strndup’ parse.c:80: warning: incompatible implicit declaration of built-in function ‘strndup’ gcc -Wall -c -o vm.o vm.c gcc -Wall -c -o wspace.o wspace.c gcc parse.o vm.o wspace.o -Wall -o wspace
警告でてるけど気にしない。よくわからんけどstrndupの警告がまったくとれない。string.hもちゃんと読んでるというのに。 id:masa_edwさんの指摘でわかりましたけど、strndupはGNU拡張なのでstring.hをインクルードするときにマクロ_GNU_SOURCEが有効になってないといけませんね。具体的には#include
% ./wspace examples/hworld.ws Hello, world of spaces!
なんかまあ実行できる。
GCの評価方法
がんばって定式化して、ふんふんこのアルゴリズムはよさそーだなー、とこじつける。それの次どうするかというと、がんばって実装してベンチマークとるしかなさげ。
「がんばって実装してベンチマーク」は色々やりようがあるでしょうけど、Jikes RVMに独自GCを実装し、jvm98、jbb2000、DaCapo Benchmarksみたいなベンチマークするといった手法は広く使われてるみたいだ。GCの論文とか適当に眺めた感じ。多さでいうと、Jikes RVM + jvm98はすごく多い印象。
http://www.mm-net.org.uk/resources/benchmarks.html
にいくつかのメモリ管理研究分野で用いられてるベンチマークの紹介とかあり。
関連ツールとしてはJVMのヒープ操作の可視化フレームワークGCspyとかJVMの吐くGC情報を視覚化するGCViewerとか気になりますね。
なんか関数型方面の情報が欠けてる感じ。MLとかのGCとかの研究とかもさかんな印象あるんだけど、全然補足してない。Java勢強い。金とってきやすかったりするんか。