2 ポイント 投稿者 GN⁺ 2026-01-17 | 1件のコメント | WhatsAppで共有
  • プログラミング言語の設計と実装を自ら学び、完全なスクリプト言語を作る過程を扱う本
  • パース、意味論、バイトコード、ガベージコレクションなど、高水準の概念から低水準の実装までを段階的に説明
  • main() 関数から始めて、動的型付け、レキシカルスコープ、第一級関数、クラス、継承を含む言語を自分で実装
  • 印刷版、eBook、PDF、Web版の4つの形式で提供され、Webでは全内容を無料で閲覧可能
  • Google の Dart 言語開発者 Robert Nystromによる著作で、言語作成に関心のある開発者にとって実践的な学習資料として重要

本の概要

  • Crafting Interpreters は、完全な機能を備えた効率的なスクリプト言語を自分で実装する方法を扱う本
    • パースや意味論のような高水準の概念と、バイトコード表現やガベージコレクションのような低水準の実装詳細の両方を含む
    • 読者が自らコードを書きながら、言語の構造を完全に理解できるように構成されている
  • 完成する言語は、豊富な文法、動的型付け、ガベージコレクション、レキシカルスコープ、第一級関数、クロージャ、クラス、継承をサポート
    • 数千行の簡潔で高速なコードで構成されており、すべてのコードを読者自身が実装する

提供形式

  • 本は Print、eBook、PDF、Web の4つの形式で提供
    • Print: 640ページ分量で、高解像度の手描きイラストと洗練されたタイポグラフィを含む
    • eBook: CSS がデバイス画面サイズに合わせて調整され、カラーのシンタックスハイライトとハイパーリンクをサポート
    • PDF: 印刷版の組版とイラストをそのまま再現しつつ、携帯性を高めた形式
    • Web: レスポンシブデザインで全章とイラストを含み、全体を無料で閲覧可能

著者紹介

  • 著者 Robert Nystrom は Google で Dart 言語開発に携わっている
    • 過去には Electronic Arts で8年間ゲーム開発を担当
    • ベストセラー Game Programming Patterns の著者であり、同書も無料公開されている
  • 言語作成に魅了され、複数の**趣味の言語プロジェクト(Wren、Magpie、Finch、Vigil)**を開発
  • 個人ブログや X(@munificentbob)で活動し、著書に関連したメーリングリストも運営

アクセスと購入先

  • 印刷版は Amazon、Barnes & Noble、Book Depository など主要書店で購入可能
  • eBook は Kindle、Apple Books、Google Play Books、Smashwords などで提供
  • PDF 版は Payhip で購入可能で、無料サンプル PDF のダウンロードも提供
  • Web 版は公式サイトで全編を無料で閲覧可能

1件のコメント

 
GN⁺ 2026-01-17
Hacker Newsのコメント
  • この本を読みながら、expression problemと、その解決策としてのvisitorパターンをよりよく理解できた
    おかげで、visitorが不要なクラス階層継承(Class Hierarchy Inheritance)の概念も完全に理解できた
    Newspeak言語ではクラスの中にネストしたクラスを置くことができ、継承時にはそのネストしたクラスも一緒に継承される
    この機能が
    Free Object Algebras
    を可能にしていることが、このブログ記事で扱われている
    参考: Expression Problemの記事, Newspeak公式サイト
  • この素晴らしい本については2回の人気ディスカッションがあった
    2020年には777ポイント、2024年には607ポイントを記録した
  • この本は新しい言語を学ぶときに本当に良い教材だった
    さまざまな言語機能やパターンを自分で実装しながら学べるからだ
    Javaにない機能を持つ言語では似たようなパターンを適用しにくいが、その挑戦自体が楽しかった
  • 冬休みの間にこの本を読み切った
    著者のくだけた文体と随所にあるユーモアが本当に気に入った
    「Loxに型チェッカーを追加する」のような続編が出てほしい
  • 本当に良い本だ
    最初は紙の本を買ったが、大きくて重すぎたので結局電子書籍を買い直した
    メモや検索がずっと便利だ
    それでも読んでいると山の中で道に迷ったような気分になることがある :)
    著者の別の本であるGame Programming Patternsもおすすめする
    • 私は本の製本をリングバインディングに変えて使ったこともある
      印刷所なら簡単にやってくれるし、机の上で扱いやすさがずっと増す
      ただし Crafting Interpreters は絶対に捨てられない本なので、そのままにしている
  • この本はプレゼント用に紙の本を3回も買った
    それほど素晴らしい本だ
    • コピーを買ってくれてありがとうというお礼 :)
  • コンパイラ設計を学ぶには最高の資料の一つだ
    しかもWeb版が無料なのは本当に寛大だ
    • ただし本のタイトルには ‘compiler’ という単語が直接入っているわけではない
  • この本が本当に好きだ
    ただ、Java版が古いのは残念だ
    最近追加されたsealed classesexhaustive switchのような機能を反映した改訂版があればと思う
    • 最新のJavaに自分でアップグレードしてみるのも良い練習課題
      そうすれば著者が作った一時的なコード生成ツールは不要になる
  • C++のtypedefのような文脈依存構文をどうパースするのか気になっていた
    PEGベースのパーサーにcontext stackを追加するハック的なアプローチもあるが、構文切り替えの問題は依然として難しい
    persistent data structuretransactional data structureが役立ちそうだが、まだ明確な形式化は見つけられていない
    • Lexer hackを参照するとよい
      パーサーがlexerに状態を渡すようにして、型名の集合をlexerが分かるようにする方式だ
    • 別の方法としてはfunctional parserを使うことだ
      たとえば Parsec のようなライブラリで‘do’記法を使うと、各段階の結果を後続のパーサーと共有できる
    • C/C++の文法設計が最悪レベルなのでこうした問題が起きる
      幸いRustやGoはこうした問題を避けており、慎重な設計で十分防げる
  • インタプリタを始めようとしている人のために、いくつか資料を共有する
    shiプロジェクト と、C言語の方に興味があるなら hacktical-c を参考にするとよい