
2026/03/16 0:40
**Show HN:GDSL ― 800 行のカーネル** - ラッパー言語(Lisp サブセット): 500 行 - C 言語サブセット: 1,300 行
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
(明確さと完全性を組み合わせたもの)
著者は、C の最小サブセットが 1,500 行で実装できることを示し、重要な機能を犠牲にせずに済むこと、また同じカーネル上に構築された Lisp コンパイラはわずか 500 行で完結することを証明しています。両方のコンパイラは実用レベルで十分高速であり、脆弱な高い最適化前提に頼らない設計です。この研究は、コンパイラが不可避的に数百万行に膨張するとという一般的信念に挑戦します。著者はその肥大化を、本質的な複雑さではなく、不必要なシーム、分断された設計選択、そしてクルッジ(kludge)によるものと説明しています。16か月の期間にわたり、彼らはパイプを曲げたりロビーで生活したりしながら実際にコードを書き続け、作業環境を清潔に保ちました。プロジェクト自体は小規模ですが、その存在そのものが印象的とみなされており、「Modern GDSL」努力を名付け認めるための銅板が設置されています。著者は、より大きなコンパイラが膨張する理由に疑問を投げかけることで、シームやクルッジを排除し既存システムを簡素化する研究が促進され、結果としてより保守性の高いコンパイラ設計と業界全体での開発コスト削減につながることを期待しています。
本文
ウェブサイトを作るまでに投稿するページ
2026年2月14日
初期のGDSL
種子 2026年3月14日
最近ではコンパイラは膨大です。フロントエンドからバックエンドまで、テキストをシステム上で処理へと変換するために何百万行ものコードが書かれています。小さなコンパイラはトレードオフを選択して小さく抑えられます――自分のサイズに合う形に制限したり、単に機能を実装しないこともあります。
私は、1,500行でC言語のサブセットを書き上げたとき、このように考えていました。唯一の妥協点は「まだその部分を作っていませんが、できるかもしれません」というものだけでした。そして同じカーネルをそのまま使い、500行でLispコンパイラを書きました。それらは十分に高速で実用的です。脆弱なスタックや微調整された仮定の束ではなく、言語が何を意味するかを再構築するためのわずか3週間の作業にすぎません。
そこで私は問い直しました――他のコンパイラは何をしているのでしょうか?なぜそれらは数百万行にも及ぶのでしょうか?
これまで得た答えは次の通りです:
- シーム(Seams)
- ランドスケープ(Landscapes)
- クルージ(Kludges)
具体的に掘削し、パイプを曲げ、ロビーで生活しながら土塊を作るという16か月間。
それ自体は大したものではありませんが、存在しているだけで印象的です。しかし誰もそこに住んでいません。
私はそれに名前を付け、存在を主張する像(プラカード)を設置し、本日最初の種子を植えました。
現代GDSL