タイムテーブルに戻る
Goコンパイラを作ってGoをもっと理解する
プログラミング言語を学ぶ 1 つの手段として、コンパイラの自作があります。既存の言語のコンパイラを学習目的で自分で書くような場合は、C 言語を題材とすることが多く、Go のコンパイラを書く例は非常に少ないです。しかし、Go エンジニアにとって Go コンパイラ自作は、普段何気なく使っている構文、型、スコープ、ポインタ、関数呼び出しなどを、実装する側から見直せる有効な学習手段です。 発表者は Go のソースコードの小さなサブセットを受け取ってアセンブリを出力するコンパイラを Go で実装し、セルフホストを達成しました。この経験をもとに、Go エンジニアが Go の仕様を知り、Go をもっと好きになるための手段としての Go コンパイラ自作を紹介します。セッション後には、参加者が自分でも Go コンパイラを書き始めようと思うような状態を目指します。 セッションでは以下の内容の発表を行います。 1. 前提知識の導入 実際に自作コンパイラが動く様子を示しながら、コンパイラの役割やその簡単な仕組み、セルフホストの意味などの前提知識を説明します。 2. 自作 Go コンパイラを作るにあたっての課題 Go コンパイラを完成させるために、様々な課題を解決する必要がありました。その中でも、特に Go とのかかわりが深い課題とその解決策を紹介することで、Go コンパイラを作る過程の一部を追体験してもらうことを考えています。例として、「言語機能の実装コストとコンパイラ記述の楽さのトレードオフ」や、「ローカル変数のポインタをスコープ外で扱えるようにするためのエスケープ解析」があります。 3. Go コンパイラを作ると得られるもの Go のコンパイラを書くと、普段 Go を使うだけでは得られない多くの学びがありました。得られた学びはアセンブリやシステムコールなど、Go に関するものに限りませんが、このセッションでは特に Go の仕様について得られた知識と、それがコンパイラ実装でどのように生かされたかを紹介します。 本セッションは中級者向けであり、Go や Go コンパイラの内部実装に関する深い知識は要求されません。Go の基本的な機能をコンパイラの実装対象として見直すことで、コンパイラ自作の第一歩とすることを目指します。
ikura-hamu ikura-hamu

東京科学大学デジタル創作同好会traP

プログラマー