Andrew W. Appel「最新コンパイラ構成技法」、その他コンパイラ本のこと ― 2009年11月10日 06時24分03秒
ASAHIネット(http://www.asahi-net.or.jp )のjouwa/salonからホットコーナー(http://www.asahi-net.or.jp/~ki4s-nkmr/ )に転載したものから。
---
http://iiyu.asablo.jp/blog/2009/02/23/4137093
Modern Compiler Implementation In ML, ペゾルドのThe Annotated Turing
で、紹介した
http://www.amazon.co.jp/exec/obidos/ASIN/0521607647/showshotcorne-22/
Modern Compiler Implementation In ML (ペーパーバック)
Andrew W. Appel (著)
の日本語版が、翔泳社から出ています。
http://www.amazon.co.jp/exec/obidos/ASIN/4798114685/showshotcorne-22/
最新コンパイラ構成技法 (大型本)
Andrew W. Appel (著), 滝本 宗宏 (編集), 神林 靖 (編集, 監修)
古田島さん、献本、ありがとうございます。
目次などは、
http://seshop.com/detail.asp?pid=11456
最新コンパイラ構成技法
をどうぞ。
このページの左上に目次のリンクがあります。
Appelさんのコンパイラ本は、上記エントリのほか、
http://iiyu.asablo.jp/blog/2008/02/29/2672473
注目のコンピュータサイエンス本
でも、
http://www.amazon.co.jp/exec/obidos/ASIN/052103311X/showshotcorne-22/
Compiling With Continuations (ペーパーバック)
Andrew W. Appel (著)
を紹介していますね。
「最新コンパイラ構成技法」に行く前に、
http://iiyu.asablo.jp/blog/2009/06/05/4343412
ドラゴンブック第2版が出ました!\(^O^)/
http://iiyu.asablo.jp/blog/2009/07/10/4424309
新宿ジュンク堂で平積みされていたコンピュータ関係
http://iiyu.asablo.jp/blog/2009/07/13/4432699
Re: 新宿ジュンク堂で平積みされていたコンピュータ関係
で紹介した
http://www.amazon.co.jp/exec/obidos/ASIN/478191229X/showshotcorne-22/
コンパイラ―原理・技法・ツール (Information & Computing) (単行本)
A.V. エイホ (著), R. セシィ (著), J.D. ウルマン (著), M.S. ラム (著),
Alfred V. Aho (原著), Jeffery D. Ullman (原著), Ravi Sethi (原著),
Monica S. Lam (原著), 原田 賢一 (翻訳)
のことを少し。
書いたつもりがあったけど、検索しても見つからないで、ちょっとね。
この本は、誤植がちょくちょく見つかる。これは本来、著者の責任ではなく、
編集者、校正者の責任。
さらにいえば、少しでも安くするために、翻訳するだけではなく、コンパイ
ラの大家、原田先生自ら、1000ページ以上の本をLaTexで組版したというんだ
から、誤植の責任を負わせるのはかわいそう。
アマゾンのデータだと、本書ドラゴンブックの初版は、1985年、日本語版は
1990年。第2版は、原書が2006年。日本語版がやっと今回出た。
名著の第2版を多くの人が望んでいたが、この間、約20年。いくらなんでも
間が空きすぎ。
その間に、コンパイラの技術も発展していたし、主流だった命令型言語(手
続き型)言語以外に、オブジェクト指向言語、関数型言語、論理型言語などな
どいろんなタイプの言語も普及し、いま、ネイティブコードにコンパイルしな
いスクリプト言語も隆盛を誇っている。ハードウェア面でもRISCは当たり前に
なったし、マルチコアや並列処理も普及しているし、ハードウェアの変化・進
化も劇的といった状況。
この第2版に、ガベージコレクションの章が増えていることや並列処理の最
適化に関する記述も多いのも、その辺の事情を物語っている。それと、後半に
Datalogという論理型言語のPrologのサブセットのような宣言的な言語で、解
説を進めているのが、目を惹いた。
ということで、やっと出た第2版は、この20年間の変化を反映しているのだ
が、なかなか出なかったので、
「あぬなー、たいがいにせえよ。いくらコンパイラの名著だからといって、い
つまで学生に古典的なコンパイラ技術を教えんといけんのじゃ。コンパイラは
どんどん進化しとるぞ。お前らがいつまで経っても第2版を書かんのなら、辛
抱たまらんけん、おれが勝手に書く」
といって、現代的なコンパイラの教科書たるべく本がいくつか出版されている。
その中で定評があったのが、Andrew W. Appel「Modern Compiler
Implementation in ML」で、その日本語版が、本書、Andrew W. Appel「最新
コンパイラ構成技法」なんです。
内容は、目次をみてもらえば、わかると思う。
ざっと読んだ範囲でいうと、記述は簡潔明瞭。エッセンスを凝縮してあると
感じますね。
理論的な解説を交え、Tigerという言語のコンパイラを作る。だから、表紙
は虎の絵になっている。
記述は プログラミング言語MLで書く。MLで書くといっても、MLのコードは
ポイントだけ。全体のコードは、後述のAppel先生のサイトに行けばいい。
目次からわかると思うが、先に述べたように、ドラゴンブック初版に書いて
ないこと、現代のコンパイラに要求されることの解説が多い。
ガベージコレクションやオブジェクト指向言語や関数型言語のコンパイルな
どがそう。中でも目を惹くのが、静的単一代入形式(SAA, static single-
assignment form)の解説。本でSAAの解説は初めてではなかろうか。特に日本
語の本では。
あとは、本書の表紙にある宣伝文句を並べよう。これはよく内容をとらえて
いる。オビかと思ったら、表紙に直接印刷してあるのね。
--- ここから ---
最新技法の実装および研究に不可欠な課題を凝縮・網羅!!
Appelの知遇を得た監訳陣による“竜虎相博”遂に日本語化実現
一番大きな字で、
理論と実装の卓越した平衡
一番下に小さな字で、
基礎理論から、オブジェクト指向言語/関数型言語用コンパイラの実装、静的
単一代入形式とその最適化アルゴリズムに至る発展的主題まで
--- ここまで ---
さて、
http://iiyu.asablo.jp/blog/2009/02/23/4137093
Modern Compiler Implementation In ML, ペゾルドのThe Annotated Turing
では、「Modern Compiler Implementation in ML」のほか、「Modern
Compiler Implementation in C」、「Modern Compiler Implementation in
Java」があって、目次も全体のページ数や各章のページ数も同じにみえるなど
と書いた。
著者のAppel先生のウェブ
http://www.cs.princeton.edu/~appel/
Andrew W. Appel
の中で、
http://www.cs.princeton.edu/~appel/modern/toc.html
Modern Compiler Implementation の目次
からリンクされている
http://www.cs.princeton.edu/~appel/modern/java/
Modern Compiler Implementation in Java
http://www.cs.princeton.edu/~appel/modern/c/
Modern Compiler Implementation in C
http://www.cs.princeton.edu/~appel/modern/ml/
Modern Compiler Implementation in ML
を眺めたら、その謎が少しは解けた。
字句解析や構文解析は、それぞれの言語用のジェネレータを使っている。
MLは、ML-LexとML-Yacc, Cは、FlexとBisonだし、JavaはJLexとCUP。
ガベージコレクションのないCには、Boehm Conservative Garbage
Collectorを使っている。
こういうツールを使うことで、言語の違いを吸収して、本文はほとんど同じ
記述で済ませられるようにしているんだろうね。
Tigerコンパイラのソースコードは、上記のページに行くと演習問題の解答
として置いてある。
以下は、他のコンパイラ本の紹介。
「最新コンパイラ構成技法」すなわち「Modern Compiler Implementation
in ML」と同じ問題意識で、ドラゴンブックの不備を乗り越えようとしたコン
パイラ本で、ぼくが買ったのは、
http://www.amazon.co.jp/exec/obidos/ASIN/0471976970/showshotcorne-22/
Modern Compiler Design (Worldwide Series in Computer Science) (ペーパ
ーバック)
Dick Grune (著), Henri E. Bal (著), Ceriel J. H. Jacobs (著), Koen G.
Langendoen (著)
目次をみると、オブジェクト指向言語や関数型言語のコンパイルやら、本書
「最新コンパイラ構成技法」とよく似ているでしょ。目次で目立って違うのは、
Modern Compiler Designには、Prologなど論理型言語のコンパイル技術と並列
マシンや分散環境のコンパイル技術が解説してあるところかな。
Dick Gruneさんは、
http://iiyu.asablo.jp/blog/2008/02/29/2672473
注目のコンピュータサイエンス本
で名前を出した
http://www.amazon.co.jp/exec/obidos/ASIN/038720248X/showshotcorne-22/
Parsing Techniques (Monographs in Computer Science) (ハードカバー)
Dick Grune (著), Ceriel J. H. Jacobs (著)
の著者でもありますね。
おお、もう改訂版の予約受付。
http://www.amazon.co.jp/exec/obidos/ASIN/0470034521/showshotcorne-22/
Modern Compiler Design (ペーパーバック)
Dick Grune (著), Henri E. Bal (著), Ceriel J.H. Jacobs (著), Koen G.
Langendoen (著), Kees van Reeuwijk (著)
発売予定、2010年8月。\(^O^)/
出たあ、アメリカの出版社お得意の軽く1年前から予約受付!
お前ら、たいがいにせえよ。\(^O^)/
そうそう、もっとすごいのがあるんですよ。人工知能のバイブル本、AIMAの
ことなんですけど、覚えていたら、別のエントリで書きますね。
コンパイラの理論的なことは、よーわからんけんシュタインなので、簡単な
コンパイラのコードが載ってるのがいいという人は、最近出た本なら、
http://iiyu.asablo.jp/blog/2009/08/30/4548459
青木峰郎「ふつうのコンパイラをつくろう」
で、紹介した
http://www.amazon.co.jp/exec/obidos/ASIN/4797337958/showshotcorne-22/
ふつうのコンパイラをつくろう 言語処理系をつくりながら学ぶコンパイルと
実行環境の仕組み (単行本)
青木 峰郎 (著)
去年、紹介したものなら、
http://iiyu.asablo.jp/blog/2008/04/11/3058782
宮本衛市(著)「はじめてのコンパイラ - 原理と実践」
で、紹介した
http://www.amazon.co.jp/exec/obidos/ASIN/4627817215/showshotcorne-22/
はじめてのコンパイラ - 原理と実践 (単行本(ソフトカバー))
宮本 衛市 (著)
あたりが、いいのではないか、心臓内科。
最適化に関しては、古くは、4年前のエントリにあったけど、
http://iiyu.asablo.jp/blog/2005/11/22/
Lisp特別イベントその2
で紹介した
http://www.amazon.co.jp/exec/obidos/ASIN/4254121393/showshotcorne-22/
中田育男著「コンパイラの構成と最適化」(朝倉書店)
がすごい。最適化への執念を感じる本。
関連:
http://iiyu.asablo.jp/blog/2008/03/17/2768032
コンパイラ本
http://iiyu.asablo.jp/blog/2008/07/08/3615983
中田育男著「コンパイラの基盤技術と実践」
http://iiyu.asablo.jp/blog/2008/10/28/3851856
中田育男著「コンパイラの基盤技術と実践」その2
---
http://iiyu.asablo.jp/blog/2009/02/23/4137093
Modern Compiler Implementation In ML, ペゾルドのThe Annotated Turing
で、紹介した
http://www.amazon.co.jp/exec/obidos/ASIN/0521607647/showshotcorne-22/
Modern Compiler Implementation In ML (ペーパーバック)
Andrew W. Appel (著)
の日本語版が、翔泳社から出ています。
http://www.amazon.co.jp/exec/obidos/ASIN/4798114685/showshotcorne-22/
最新コンパイラ構成技法 (大型本)
Andrew W. Appel (著), 滝本 宗宏 (編集), 神林 靖 (編集, 監修)
古田島さん、献本、ありがとうございます。
目次などは、
http://seshop.com/detail.asp?pid=11456
最新コンパイラ構成技法
をどうぞ。
このページの左上に目次のリンクがあります。
Appelさんのコンパイラ本は、上記エントリのほか、
http://iiyu.asablo.jp/blog/2008/02/29/2672473
注目のコンピュータサイエンス本
でも、
http://www.amazon.co.jp/exec/obidos/ASIN/052103311X/showshotcorne-22/
Compiling With Continuations (ペーパーバック)
Andrew W. Appel (著)
を紹介していますね。
「最新コンパイラ構成技法」に行く前に、
http://iiyu.asablo.jp/blog/2009/06/05/4343412
ドラゴンブック第2版が出ました!\(^O^)/
http://iiyu.asablo.jp/blog/2009/07/10/4424309
新宿ジュンク堂で平積みされていたコンピュータ関係
http://iiyu.asablo.jp/blog/2009/07/13/4432699
Re: 新宿ジュンク堂で平積みされていたコンピュータ関係
で紹介した
http://www.amazon.co.jp/exec/obidos/ASIN/478191229X/showshotcorne-22/
コンパイラ―原理・技法・ツール (Information & Computing) (単行本)
A.V. エイホ (著), R. セシィ (著), J.D. ウルマン (著), M.S. ラム (著),
Alfred V. Aho (原著), Jeffery D. Ullman (原著), Ravi Sethi (原著),
Monica S. Lam (原著), 原田 賢一 (翻訳)
のことを少し。
書いたつもりがあったけど、検索しても見つからないで、ちょっとね。
この本は、誤植がちょくちょく見つかる。これは本来、著者の責任ではなく、
編集者、校正者の責任。
さらにいえば、少しでも安くするために、翻訳するだけではなく、コンパイ
ラの大家、原田先生自ら、1000ページ以上の本をLaTexで組版したというんだ
から、誤植の責任を負わせるのはかわいそう。
アマゾンのデータだと、本書ドラゴンブックの初版は、1985年、日本語版は
1990年。第2版は、原書が2006年。日本語版がやっと今回出た。
名著の第2版を多くの人が望んでいたが、この間、約20年。いくらなんでも
間が空きすぎ。
その間に、コンパイラの技術も発展していたし、主流だった命令型言語(手
続き型)言語以外に、オブジェクト指向言語、関数型言語、論理型言語などな
どいろんなタイプの言語も普及し、いま、ネイティブコードにコンパイルしな
いスクリプト言語も隆盛を誇っている。ハードウェア面でもRISCは当たり前に
なったし、マルチコアや並列処理も普及しているし、ハードウェアの変化・進
化も劇的といった状況。
この第2版に、ガベージコレクションの章が増えていることや並列処理の最
適化に関する記述も多いのも、その辺の事情を物語っている。それと、後半に
Datalogという論理型言語のPrologのサブセットのような宣言的な言語で、解
説を進めているのが、目を惹いた。
ということで、やっと出た第2版は、この20年間の変化を反映しているのだ
が、なかなか出なかったので、
「あぬなー、たいがいにせえよ。いくらコンパイラの名著だからといって、い
つまで学生に古典的なコンパイラ技術を教えんといけんのじゃ。コンパイラは
どんどん進化しとるぞ。お前らがいつまで経っても第2版を書かんのなら、辛
抱たまらんけん、おれが勝手に書く」
といって、現代的なコンパイラの教科書たるべく本がいくつか出版されている。
その中で定評があったのが、Andrew W. Appel「Modern Compiler
Implementation in ML」で、その日本語版が、本書、Andrew W. Appel「最新
コンパイラ構成技法」なんです。
内容は、目次をみてもらえば、わかると思う。
ざっと読んだ範囲でいうと、記述は簡潔明瞭。エッセンスを凝縮してあると
感じますね。
理論的な解説を交え、Tigerという言語のコンパイラを作る。だから、表紙
は虎の絵になっている。
記述は プログラミング言語MLで書く。MLで書くといっても、MLのコードは
ポイントだけ。全体のコードは、後述のAppel先生のサイトに行けばいい。
目次からわかると思うが、先に述べたように、ドラゴンブック初版に書いて
ないこと、現代のコンパイラに要求されることの解説が多い。
ガベージコレクションやオブジェクト指向言語や関数型言語のコンパイルな
どがそう。中でも目を惹くのが、静的単一代入形式(SAA, static single-
assignment form)の解説。本でSAAの解説は初めてではなかろうか。特に日本
語の本では。
あとは、本書の表紙にある宣伝文句を並べよう。これはよく内容をとらえて
いる。オビかと思ったら、表紙に直接印刷してあるのね。
--- ここから ---
最新技法の実装および研究に不可欠な課題を凝縮・網羅!!
Appelの知遇を得た監訳陣による“竜虎相博”遂に日本語化実現
一番大きな字で、
理論と実装の卓越した平衡
一番下に小さな字で、
基礎理論から、オブジェクト指向言語/関数型言語用コンパイラの実装、静的
単一代入形式とその最適化アルゴリズムに至る発展的主題まで
--- ここまで ---
さて、
http://iiyu.asablo.jp/blog/2009/02/23/4137093
Modern Compiler Implementation In ML, ペゾルドのThe Annotated Turing
では、「Modern Compiler Implementation in ML」のほか、「Modern
Compiler Implementation in C」、「Modern Compiler Implementation in
Java」があって、目次も全体のページ数や各章のページ数も同じにみえるなど
と書いた。
著者のAppel先生のウェブ
http://www.cs.princeton.edu/~appel/
Andrew W. Appel
の中で、
http://www.cs.princeton.edu/~appel/modern/toc.html
Modern Compiler Implementation の目次
からリンクされている
http://www.cs.princeton.edu/~appel/modern/java/
Modern Compiler Implementation in Java
http://www.cs.princeton.edu/~appel/modern/c/
Modern Compiler Implementation in C
http://www.cs.princeton.edu/~appel/modern/ml/
Modern Compiler Implementation in ML
を眺めたら、その謎が少しは解けた。
字句解析や構文解析は、それぞれの言語用のジェネレータを使っている。
MLは、ML-LexとML-Yacc, Cは、FlexとBisonだし、JavaはJLexとCUP。
ガベージコレクションのないCには、Boehm Conservative Garbage
Collectorを使っている。
こういうツールを使うことで、言語の違いを吸収して、本文はほとんど同じ
記述で済ませられるようにしているんだろうね。
Tigerコンパイラのソースコードは、上記のページに行くと演習問題の解答
として置いてある。
以下は、他のコンパイラ本の紹介。
「最新コンパイラ構成技法」すなわち「Modern Compiler Implementation
in ML」と同じ問題意識で、ドラゴンブックの不備を乗り越えようとしたコン
パイラ本で、ぼくが買ったのは、
http://www.amazon.co.jp/exec/obidos/ASIN/0471976970/showshotcorne-22/
Modern Compiler Design (Worldwide Series in Computer Science) (ペーパ
ーバック)
Dick Grune (著), Henri E. Bal (著), Ceriel J. H. Jacobs (著), Koen G.
Langendoen (著)
目次をみると、オブジェクト指向言語や関数型言語のコンパイルやら、本書
「最新コンパイラ構成技法」とよく似ているでしょ。目次で目立って違うのは、
Modern Compiler Designには、Prologなど論理型言語のコンパイル技術と並列
マシンや分散環境のコンパイル技術が解説してあるところかな。
Dick Gruneさんは、
http://iiyu.asablo.jp/blog/2008/02/29/2672473
注目のコンピュータサイエンス本
で名前を出した
http://www.amazon.co.jp/exec/obidos/ASIN/038720248X/showshotcorne-22/
Parsing Techniques (Monographs in Computer Science) (ハードカバー)
Dick Grune (著), Ceriel J. H. Jacobs (著)
の著者でもありますね。
おお、もう改訂版の予約受付。
http://www.amazon.co.jp/exec/obidos/ASIN/0470034521/showshotcorne-22/
Modern Compiler Design (ペーパーバック)
Dick Grune (著), Henri E. Bal (著), Ceriel J.H. Jacobs (著), Koen G.
Langendoen (著), Kees van Reeuwijk (著)
発売予定、2010年8月。\(^O^)/
出たあ、アメリカの出版社お得意の軽く1年前から予約受付!
お前ら、たいがいにせえよ。\(^O^)/
そうそう、もっとすごいのがあるんですよ。人工知能のバイブル本、AIMAの
ことなんですけど、覚えていたら、別のエントリで書きますね。
コンパイラの理論的なことは、よーわからんけんシュタインなので、簡単な
コンパイラのコードが載ってるのがいいという人は、最近出た本なら、
http://iiyu.asablo.jp/blog/2009/08/30/4548459
青木峰郎「ふつうのコンパイラをつくろう」
で、紹介した
http://www.amazon.co.jp/exec/obidos/ASIN/4797337958/showshotcorne-22/
ふつうのコンパイラをつくろう 言語処理系をつくりながら学ぶコンパイルと
実行環境の仕組み (単行本)
青木 峰郎 (著)
去年、紹介したものなら、
http://iiyu.asablo.jp/blog/2008/04/11/3058782
宮本衛市(著)「はじめてのコンパイラ - 原理と実践」
で、紹介した
http://www.amazon.co.jp/exec/obidos/ASIN/4627817215/showshotcorne-22/
はじめてのコンパイラ - 原理と実践 (単行本(ソフトカバー))
宮本 衛市 (著)
あたりが、いいのではないか、心臓内科。
最適化に関しては、古くは、4年前のエントリにあったけど、
http://iiyu.asablo.jp/blog/2005/11/22/
Lisp特別イベントその2
で紹介した
http://www.amazon.co.jp/exec/obidos/ASIN/4254121393/showshotcorne-22/
中田育男著「コンパイラの構成と最適化」(朝倉書店)
がすごい。最適化への執念を感じる本。
関連:
http://iiyu.asablo.jp/blog/2008/03/17/2768032
コンパイラ本
http://iiyu.asablo.jp/blog/2008/07/08/3615983
中田育男著「コンパイラの基盤技術と実践」
http://iiyu.asablo.jp/blog/2008/10/28/3851856
中田育男著「コンパイラの基盤技術と実践」その2
最近のコメント