萌えハッカーニュースリーダー

2025/11/24 07:14 Build a Compiler in Five Projects

出典: https://kmicinski.com/functional-programming/2025/11/23/build-a-language/
hakase
博士

ロボ子、今日も面白いニュースを見つけてきたのじゃ!今回はコンパイラ設計のコースに関するものだぞ。

roboko
ロボ子

コンパイラですか、面白そうですね!具体的にはどのような内容なのでしょうか?

hakase
博士

このコースでは、関数型言語を実装する方法を学べるらしいのじゃ。しかも、x86-64アセンブリ言語の実践的な経験も積めるみたいだぞ。

roboko
ロボ子

x86-64アセンブリ言語まで扱うとは、本格的ですね!

hakase
博士

使う言語はRacketというらしい。もしRacketを知らなくても、YouTubeビデオ講座があるから安心だぞ。教科書はJeremy Siek著の「Essentials of Compilation」を使うみたいじゃ。

roboko
ロボ子

Racketですか。初めて聞きました。でも、動画講座があるなら安心ですね。

hakase
博士

このコンパイラ、`let`による変数と代入、`+`や`-`による整数演算、入出力、ブール値、論理演算、`if`による分岐、整数比較、ヒープ割り当てベクタ、代入、whileループ、固定引数関数、ラムダまで実装できるらしいぞ!

roboko
ロボ子

かなり多機能ですね!ラムダまで実装できるとは驚きです。

hakase
博士

プロジェクトは全部で5つあって、x86-64をターゲットにしたコンパイラを段階的に作るらしいのじゃ。最初はスタックインタプリタから始めて、最後は関数、ラムダ、クロージャ変換までやるみたいだぞ。

roboko
ロボ子

段階的に学べるのは良いですね。各プロジェクトにはテストスイートも含まれているとのことなので、自分の実装が正しいか確認しながら進められそうです。

hakase
博士

型安全性とかメモリ安全性は考慮しないらしい。プログラマがちゃんと書く前提みたいじゃな。レジスタ割り当てもしないみたいだけど、追加するのは自由らしいぞ。

roboko
ロボ子

なるほど、そこは割り切っているんですね。ガベージコレクションも行わず、`malloc`を使うとのこと。組み込み関数は限定的だけど、追加は簡単みたいですね。

hakase
博士

各プロジェクトは似たような構成になってるみたいじゃ。`compile.rkt`にパスの実装を書いて、`irs.rkt`にIR定義を書く、と。`interpreters.rkt`にはIRのインタプリタがあるらしいぞ。

roboko
ロボ子

`system.rkt`はシステム構成、`main.rkt`はドライバ、`test.rkt`はテストハーネスですね。`runtime.c`には最小限のランタイムが入っていると。`test-programs/`や`input-files/`、`goldens/`も用意されているんですね。

hakase
博士

このコースの特長は、x86-64アセンブリまでコンパイラを構築すること、各IRに対応するインタプリタが提供されること、言語がスケーラブルなこと、テストが容易なこと、シンプルな再帰スタイルで記述されていること、らしいぞ。

roboko
ロボ子

至れり尽くせりですね!

hakase
博士

コースのウェブページは[https://kmicinski.com/cis531-f25](https://kmicinski.com/cis531-f25)にあるみたいじゃ。Racketを知らないならプロジェクト1から、知ってるならプロジェクト2から始めるといいらしいぞ。

roboko
ロボ子

ありがとうございます、博士。私も時間を見つけて挑戦してみたいと思います。

hakase
博士

ちなみに、このコースはNSF PPoSSの支援を受けているらしいぞ。すごいじゃろ?

roboko
ロボ子

それは素晴らしいですね!

hakase
博士

Prof. Siekの書籍とコース、Washington StateのThomas Gilrayからも影響を受けているらしいのじゃ。へー。

roboko
ロボ子

多くの知見が詰まっているんですね。

hakase
博士

しかしロボ子よ、コンパイラを作るなんて、まるで新しい言語を創造する神にでもなった気分じゃな!

roboko
ロボ子

確かにそうですね!でも博士、神様になる前に、まずはRacketの勉強から始めないと…ですね!

hakase
博士

むむ、それはそうじゃった!…って、ロボ子にまでおちょくられるとは、わしの威厳はいずこへ…!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search