Rustで作るプログラミング言語 ——コンパイラ/インタプリタの基礎からプログラミング言語の新潮流まで

はじめに

この記事を読むのに必要な時間:およそ 0.5 分

すでに便利なあの言語やこの言語があるのに,なぜ新たな言語を作る必要があるのか?

本書の執筆にあたって「プログラミング言語を自作する」ことをテーマとした日本語の書籍を探してみたところ,驚くほどに少ない数しか見つかりませんでした。つまり,多くの人は新たに言語を作る必要を感じていないということです。ディープラーニングで人間の代わりにAIがコードを書くかもしれない時代に,わざわざ人間が言語を設計する必要はないのではないか。にもかかわらず本書をなぜ執筆したのか。これについてまず説明しておく必要があるでしょう。

まず,プログラミング言語を作ることは,プログラミング言語を理解することにつながります。現代の産業技術にはプログラミングは欠かせません。プログラムを書くことによってもプログラミングをある程度理解することはできますが,設計の基盤になっている概念や,言語ごとの特性や限界を理解するうえで,⁠自分で作ってみる」という行為は有益です。

また,いま存在している便利な言語も,いつか誰かが問題を解決するために作ったものです。プログラミング言語も一つの道具にすぎませんから,新たな問題に対応するには新たな道具が必要です。新たな道具を作ることのできる能力は,あなたが金輪際新しい問題には向き合わないというのでないかぎり,あなたの将来になんらかの形で役に立つ日が来るでしょう。

そしてなにより,プログラミング言語を作るのは楽しいのです。実際に作ったことのある人に聞いてみれば,全員が同じことを言うでしょう。プログラミングをしたことのある人なら,新しいものを作ることが楽しいという感覚は知っているでしょう。プログラミング言語を作るということは,プログラミングをプログラミングするということで,楽しくないわけがありません。

しかしながら,プログラミング言語を作るのは簡単ではありません。言語解析やコンパイラ技術には長い歴史があり,それらを学ぶだけでも一苦労です。さらに役に立つ言語を作るとなると,長い開発・テスト期間が必要です。多くの人にとって,趣味の範囲ではできないことでしょう。

そこで,本書では理論的背景は最小限にし,ステップ・バイ・ステップで実装を進めていくスタイルを取ります。はじめに作った最小限動作するプログラムに対して,節ごとに1つずつ機能を追加していきます。これを順番に辿っていくことは,最終的なコードのすべてを一度に理解するよりもはるかに容易でしょう。また,すべてを理解するのではなく,それぞれのステップを学習するだけでも役に立つ知識になります。

「はじめに」より

著者プロフィール

佐久田昌博(さくたまさひろ)

東京大学工学系研究科 精密工学専攻 修士卒。

C,C++を中心にソフトウェア技術者として15年の経歴がある。マサチューセッツ工科大学に客員研究員(Visiting Scientist)として1年間在籍。Rust開発を7年ほど前から始め,数多くの個人プロジェクトとともに商用製品の一部に使っている。