この記事を読むのに必要な時間:およそ 0.5 分
すでに便利なあの言語やこの言語があるのに,なぜ新たな言語を作る必要があるのか?
本書の執筆にあたって「プログラミング言語を自作する」ことをテーマとした日本語の書籍を探してみたところ,驚くほどに少ない数しか見つかりませんでした。つまり,多くの人は新たに言語を作る必要を感じていないということです。ディープラーニングで人間の代わりにAIがコードを書くかもしれない時代に,わざわざ人間が言語を設計する必要はないのではないか。にもかかわらず本書をなぜ執筆したのか。これについてまず説明しておく必要があるでしょう。
まず,プログラミング言語を作ることは,プログラミング言語を理解することにつながります。現代の産業技術にはプログラミングは欠かせません。プログラムを書くことによってもプログラミングをある程度理解することはできますが,設計の基盤になっている概念や,言語ごとの特性や限界を理解するうえで,「自分で作ってみる」という行為は有益です。
また,いま存在している便利な言語も,いつか誰かが問題を解決するために作ったものです。プログラミング言語も一つの道具にすぎませんから,新たな問題に対応するには新たな道具が必要です。新たな道具を作ることのできる能力は,あなたが金輪際新しい問題には向き合わないというのでないかぎり,あなたの将来になんらかの形で役に立つ日が来るでしょう。
そしてなにより,プログラミング言語を作るのは楽しいのです。実際に作ったことのある人に聞いてみれば,全員が同じことを言うでしょう。プログラミングをしたことのある人なら,新しいものを作ることが楽しいという感覚は知っているでしょう。プログラミング言語を作るということは,プログラミングをプログラミングするということで,楽しくないわけがありません。
しかしながら,プログラミング言語を作るのは簡単ではありません。言語解析やコンパイラ技術には長い歴史があり,それらを学ぶだけでも一苦労です。さらに役に立つ言語を作るとなると,長い開発・テスト期間が必要です。多くの人にとって,趣味の範囲ではできないことでしょう。
そこで,本書では理論的背景は最小限にし,ステップ・バイ・ステップで実装を進めていくスタイルを取ります。はじめに作った最小限動作するプログラムに対して,節ごとに1つずつ機能を追加していきます。これを順番に辿っていくことは,最終的なコードのすべてを一度に理解するよりもはるかに容易でしょう。また,すべてを理解するのではなく,それぞれのステップを学習するだけでも役に立つ知識になります。
「はじめに」より