突破してみる? / Why don't you get over?

ソフトウェアエンジニアの備忘録 / Memorandum for software engineers

スクリプト言語Butai

スクリプト言語Butai

スクリプト言語を作っている。その名はButai。
インターネットという巨大な文化祭の「舞台」を作りたい。
世界には日本発のオブジェクト指向言語Rubyがある。
Butaiも思い切り影響を受けた。Butaiもやはりオブジェクト指向言語である。
しかも、現実的なRubyと違い「純粋な」オブジェクト指向言語である。
整数すらもオブジェクトに包まれている。
「純粋」とか「一貫性」といったキーワードは、Butaiの設計哲学である。
まだ公開には至っていないし、ローカルでチマチマとやっているのだが、
Butaiでは、いくつかのブレイクスルーがあると思っている。

ケアフルリスト

これは「注意深い」リンクトリストである。
ポインタの使用方法を勘違いするといった、
リストでありがちなで厄介なバグをその場で指摘してくれる。
特に先頭と末尾を待ち構えている番兵エントリを超えないようにチェックする。
それから、リストとエントリの所属を管理するマネージャも新開発だ。
中間管理のマネージャは一見筋が悪そうに見えたのだが意外と問題ない。
リストのO(1)操作をそれほど邪魔しない。
リストとエントリの対応がつくので、
間違ったリストに間違ったリストやエントリをつなぎ合わせるようなバグを指摘できる。

O(n) ガーベージコレクタ

マーク&スイープのガーベージコレクタである。
インスタンスはリストで管理される。
インスタンスは初期リストに登録されている。
インスタンスをマークすると、マーク済みリストにO(1)で移動させる。
インスタンス再帰的にマークし終わると、初期リストの残りをスイープする。
インスタンス数をnとし、マーク数をmとし、スイープ数をlとすると、
O(m + l) = O(n)である。
シンプルなマーク&スイープではO(m + n)であるから、計算量として高速になる。

そう、この教条的な哲学の言語では、計算量で議論をしたい。
逆に言うと、同じ計算量なら、多少のオーバーヘッドがあってもいいとすることもできる。

乞うご期待

手元のバージョンはbutai-0.37.1。まだまだひよこである。