コンパイラ(コンパイラ)
原理と構造
- 著者:
- 大堀 淳(オオホリ アツシ)
- 出版社:
- 共立出版
- 出版日:
- 2021年09月14日頃
- ISBN:
- 9784320124783
- 在庫:
- 在庫あり
なぜ注目されているか
書籍紹介
本書は,プログラミングやコンピュータに興味を持つ者が,コンパイラの原理と構造,さらにその開発方法を基礎から理解するためのテキストである。
コンパイラの理解は,コンピュータの原理やプログラムの実行のしくみを理解する基礎である。そこで本書では,チューリングらによって確立された計算可能性の理論と万能計算機の構築方法を基礎として,コンパイラを含むプログラミング言語処理系の構築原理とその構造を解説する。これらの理解を基に,コンパイラ実現のための主要な基盤技術を,その原理とその背後にある考え方を含め習得することを目標とする。この考え方を理解することができれば,従来難解と受け止められている LR 構文解析や多相型の型推論などの技術も見通し良く習得できる。
これらのコンパイラの原理と構造の理解に加えて,先端的言語コンパイラの開発方法を習得するために,実際に実行可能なインタープリタと抽象機械へのコンパイラを開発する。高階の関数や多相型型推論などの先端機能を含む ML 言語の小さなサブセット CoreML を対象とし,ML 言語の一つである「 SML#」を用いてその処理系を開発する。
これらを学び直したいエンジニアや,コンピュータやプログラミングに興味を持つ学部学生に最適な一冊である。
第 1 章 計算とプログラミング言語
1.1 計算の原理と計算機の構造
1.2 プログラミング言語の構造と原理
1.3 プログラミング言語開発の枠組み
1.4 プログラミング言語処理系開発の課題
1.5 練習問題
第 2 章 SML#チュートリアル
2.1 高水準言語の役割と ML の紹介
2.2 チューリング言語インタープリタの設計と開発
2.3 分割コンパイルとコマンドの作成
2.4 練習問題
第 3 章 文字列の性質と文字列処理
3.1 文字列と文字列集合の性質と演算
3.2 文字列のみの構造を持つ CoreML 処理系
3.3 練習問題
第 4 章 字句解析
4.1 正規言語を用いた語彙の定義
4.2 正規言語を認識する機械
4.3 Lex による字句解析処理の自動生成
4.4 字句解析のみを行う CoreML 処理系
4.5 練習問題
第 5 章 構文解析
5.1 本章の内容と目的
5.2 文脈自由文法による構文構造の定義
5.3 構文解析問題
5.4 最右導出の再構築
5.5 LR 構文解析の原理
5.6 定理 5.1 の証明と DG の構築
5.7 効率的なアルゴリズム構築戦略
5.8 構文解析表の作成
5.9 先読み文字によるアルゴリズムの改良
5.10 yacc による構文解析処理の自動生成
5.11 構文解析のみを行う CoreML 処理系
5.12 練習問題
第 6 章 型の解析と型推論
6.1 型と型システムの考え方
6.2 型システムの定義
6.3 型の解析
6.4 式の主要な型判定を推論する CoreML 処理系
6.5 多相型の定義と解析
6.6 多相型を推論する CoreML 処理系
6.7 練習問題
第 7 章 インタープリタ
7.1 インタープリタの構造と役割
7.2 操作的意味論の定義
7.3 再帰関数の実現
7.4 インタープリタの実装
7.5 練習問題
第 8 章 抽象機械へのコンパイル
8.1 コンパイラの構造
8.2 SECD 機械の定義
8.3 SECD 機械へのコンパイル
8.4 CoreML コンパイラと実行時処理系の実装
8.5 練習問題
技書の森解説
プログラミング言語がどのようにして機械が実行できる形に変換されるのか。その全体像を、字句解析から構文解析、型検査、コード生成まで一貫して扱う大学向けの教科書です。著者の大堀淳氏は SML# コンパイラの設計者として知られ、型理論とコンパイラ実装の両面に深い知見を持つ研究者です。共立出版のコンピュータサイエンス教科書シリーズとして刊行されています。
本書の特徴は、形式言語理論 (正規言語、文脈自由文法) から出発しながらも、 ML 系言語を題材にした型推論やパターンマッチのコンパイルなど、関数型言語の処理系に踏み込んだ記述を含む点です。 Dragon Book のような C/Java 寄りの古典的コンパイラ本とは異なる視点を提供しており、型システムや高階関数の処理に関心がある人には独自の価値があります。
前提として離散数学とプログラミング言語の基礎的な知識が求められ、独学では歯ごたえのある内容です。計算機科学を専攻する学部上級〜大学院の講義用に設計された本であり、手軽に読める入門書ではありません。しかし「言語処理系を理論的に理解したい」という目的を持つ読者に対しては、日本語で読める数少ない本格的な選択肢です。
言及 Qiita 記事 (31 件)
Claude Codeでつくる「並列ループエージェント」実践!ハンズオンガイド
♡ 78AI, AI駆動開発, ClaudeCode落語で学ぶ『AI時代のDDD』ドメインプリミティブ編
♡ 53DDD, 生成AI, ドメインプリミティブ, AIエージェント, 関東型言語AIに有利なプログラミング言語は?
♡ 34AI, 言語, 実験自作言語に簡単な型検査器を追加した
♡ 5Ruby, 型, 自作言語集合から Roslyn へ:字句解析とオートマトンでコンパイラーを読む
♡ 4C#, Roslyn, コンパイラ, オートマトン, dotnet【Delphi】フォームのイベント発生順序
♡ 3Delphi, プログラミング, Pascal, embarcadero, objectpascal「とりあえずコメントアウトしておきます」という先輩の優しさが、3年後にシステムを破壊した話
♡ 3Git, GitHub, プログラミング, 初心者, ポエムOSS以外の方法でのコントリビューションの模索と実践記録と自己弁護
♡ 3ポエム, SML, OSS, コントリビューションCopilotが生成した日本語トランスコンパイラ言語 Re:Mindの原型をGitHub CopilotのPlanエージェントで再計画(ステップ1)
♡ 2トランスコンパイラ, 日本語プログラミング言語, GitHubCopilot, 生成AI, re_mindローカルLLMをSV/UVM用に育てる(続編) ─ エージェント・自己修正・高度なRAG/学習の調査メモ
♡ 2MCP, rag, ローカルLLM
言及 Zenn 記事 (10 件)
アセンブラをゼロから作って自作コンパイラをアセンブルするまで(日記)
♡ 151go, assembler文系卒エンジニアがどうやって独学でコンパイラを作ったか
♡ 135コンパイラPythonのコンパイラを作りたい #1 - 開発の背景と概要
♡ 90python, c, llvm, compilerMatz の Ruby AOT コンパイラ Spinel を試してみました
♡ 59ruby, compiler, rubykaigi, aot, spinelゲーム専用プログラミング言語『Enaga』をコンパイラから自作した話
♡ 46rust, ゲーム開発, コンパイラ, ecs, 自作言語【Vue.js】コンパイラってよく聞くけど一体全体なんなんだ!?!?!?
♡ 25javascript, typescript, vue, frontend, compilerApple Siliconで進めるCコンパイラ作成入門
♡ 21arm64, c, compilerコンパイラを書くにはコンパイラが必要なのか?
♡ 20コンパイラ, バイナリ, fortran, アセンブリ, 機械語sedをターゲットアーキテクチャとしてコンパイラを自作する (自作言語 Soil)
♡ 18rust, compiler, sed最適化コンパイラへのいざない (1) 導入
♡ 13コンパイラ
この本に興味がある方におすすめ
この本に関連
大堀 淳 の他の書籍
関連記事
OS・低レイヤー本ガイド - コンピュータの仕組みを学ぶ技術書の選び方
OS、コンパイラ、ネットワークなど低レイヤーを学べる技術書の 4 ジャンルと、どこから始めるべきかの指針、賞味期限の見極め方を紹介します。
ソフトウェア開発の歴史を変えた 5 冊の技術書
アルゴリズムの学問化からコードの可読性革命まで、ソフトウェア開発の方向性を決定づけた 5 冊の技術書を、時代背景とエピソードとともに紹介します。
Web 開発本ガイド - フロントエンドからバックエンドまで
Web 開発の全体像を学べる技術書の選び方と学習マップを紹介。フレームワーク本の賞味期限問題と公式ドキュメントとの使い分けも解説します。