最近OSSに興味が出てきたところから始まり、プログラミング言語がどんな感じで作られるか知りたい!と思い、読んでみました。
概要
プログラミング言語「Ruby」作成者の松本さんが執筆された本です。
2014年から2016年まで「日経Linux」で連載されていた「作りながら学ぶプログラミング言語」の内容を加筆・編集されたものです。
全5章から成りますが、第1章は言語の大まかなしくみ、実装、デザイン(仕様)について書かれています。第2章〜第5章は、実際にStreemという言語を作りながら、言語に必要な機能の説明・実装方法を紹介しています。

ここで作られた言語「Streem」はGitHubで公開されています。
本書のポイント
なぜその仕様に至ったのかの背景を知れる
多くのオープンソースソフトウェアがあり、プログラミング言語のソースコードも見ることができます。しかし、出来上がったソースコードや説明文からは、「なぜその仕様を採用したのか」「なぜその設計をしたのか」を十分に理解することはできません。
本書には、どういう意図で設計したのか・実装したのかが書かれています。そのため、言語を作るときに考えることや考え方を知ることができます。
プログラミング言語を実装するときに考慮するポイントが分かりやすく説明されている
設計・実装時に悩むであろうポイント・考慮すべきポイントが本書のあちらこちらで書かれています。何かを実装する上で、A・Bの方法がある場合、それぞれのメリデメやトレードオフな部分をちゃんと説明されています。
実際に言語を作りながら書かれている
新言語「Streem」を作りながら書かれているので、実際作るにあたって必要な機能やどう解決したかがリアルでわかりやすいです。
印象に残った言葉
設計者自身が自分で使うつもりで設計した言語以外で人気になったものはほとんどない
松本さんがC++やPerl、Python、PHPの言語設計者と交流した中で、気づいたことだそうです。
つまり、もしプログラミング言語を作ろうと考えた際、どんな機能・仕様が人気そうか・求められているかなど周りを見るよりも、まず自分が使いたい言語を作ろう!という考えでOKということです。
目的は、自分のために、自分の楽しみのために、自分の言語をデザインすること
「プログラミング言語を作るのは、必要なすべての知識を正しく身につけてから」とブレーキをかける必要はないということです。
感想
言語作りを身近に感じられる
プログラミング言語って、別の世界の人が作ってるイメージがありましたが、作ったきっかけや背景を知ると身近に感じることができました。私もいつか作ってみたいなと思いました!

個人的にびっくりして安心もしたのが、「松本さんは数学があまり得意ではない」ということです(笑)
こんな人におすすめ!
プログラミング言語が作られる背景、過程が知りたい人
実体験に基づいて書かれているので、想像もしやすく納得もしやすい内容になってます。
プログラミング言語を作ってみたい人
きっと前向きな気持ちになれると思います!
コンピュータ周りの基礎知識がある人
この本を読むのに、コンピュータ周りの基礎知識があった方がいいと思います。
CPU周りの話(メモリ、スタック、オペランドetc…)も普通に出てくるので、基本情報技術者試験レベルの知識を持っていた方が理解しやすいです。