プログラミング言語を作る
2009年6月20日紙版発売
前橋和弥 著
B5変形判/424ページ
定価3,278円(本体2,980円+税10%)
ISBN 978-4-7741-3895-4
ただいま弊社在庫はございません。
書籍の概要
この本の概要
テーマはズバリ「独自のプログラミング言語を作る」こと。すでに多くのプログラミング言語が存在するのに,わざわざ新しい言語を作る意味は? プログラマにとって言語がどのように動くのか深く知ることは重要なスキルになるなどメリットは多々ありますが,なんといっても言語を作るのは「楽しいから」につきます!「プログラミング言語を突き詰めていったプログラマは,最後にはOSかプログラミング言語を作る」といわれます。プログラミングのもっともコアな部分に触れる楽しさがあります。本書で多くの人がこの楽しさを味わいますように!
こんな方におすすめ
- プログラミング言語を作ってみたい方
- コンパイラやプログラムの仕組みを知りたい方
この書籍に関連する記事があります!
- プログラミング言語を作る
- 世の中には,現在広く使われているものだけでも,C,C++,Java,C#,Perl,Python,Ruby,PHP,Lisp,JavaScript……等々,すでに多くのプログラミング言語が存在します。
目次
第1章 はじめに
- 1-1 なぜプログラミング言語なんか作るのか
- 1-2 言語を作るのは(そんなに)難しくない
- 1-3 構成と対象読者
- 1-4 どんな言語で作るのか
- 1-5 どんな言語を作るのか
- 【補足】「ユーザ」って誰のこと?
- 【補足】インタプリタは翻訳しない
- 1-6 環境構築
- 【補足】bisonとflexのライセンスについて
第2章 電卓を作ってみよう
- 2-1 yacc/lexとは
- 【補足】レキシカルアナライザとパーサは分離している
- 2-2 電卓を作ってみよう
- 2-3 電卓を手書きする
- 【補足】予約語(キーワード)
- 【補足】二重includeの防止
- 【補足】先読みトークンの扱い
- 2-4 少しだけ理論的な話――LL(1)とLALR(1)
- 【補足】Pascal/Cにおける工夫
- 2-5 練習問題:電卓を発展させる
第3章 型なし言語「crowbar」を作る
- 3-1 crowbar ver.0.1 ―― 言語の基本部分を作る
- 【補足】最初の代入が変数宣言を兼ねる理由
- 【補足】各言語のグローバル変数の扱い
- 【補足】elifとかelsifとかelseifとか
- 3-2 下準備
- 【補足】valgrind
- 【補足】富豪的プログラミング
- 【補足】記号表とインターン
- 3-3 crowbar ver.0.1の実装について
- 【補足】不完全型
- 【補足】静的な変数をどこまで許すか
- 【補足】crowbarにおける列挙型の宣言について
第4章 配列とmark-sweepガベージコレクタ
- 4-1 crowbar ver.0.2の仕様について
- 【補足】「配列の配列」 vs. 多次元配列
- 4-2 mark-sweep GCを作る
- 【補足】参照とimmutable
- 4-3 GC本体の実装
- 【補足】現状のGCの問題点
- 【補足】Copying GC
- 4-4 その他の改修
第5章 日本語とUnicode
- 5-1 日本語対応の方針と基礎知識
- 【補足】wchar_tは必ず1文字か?
- 5-1-3 マルチバイト文字/ワイド文字変換関数群
- 5-2 Unicode
- 【補足】Unicodeは固定長のつもりだったのか
- 5-3 crowbar book_ver.0.3における実装
- 【補足】#ifdefは敗北
- 【補足】別のあるべき姿──Code Set Independent
第6章 静的型付け言語「Diksam」を作る
- 6-1 Diksam ver.0.1 言語の基本部分を作る
- 6-2 静的/バイトコード実行型の言語とは
- 6-3 Diksam ver.0.1の実装──コンパイラ編
- 【補足】YARVの場合
- 6-4 Diksam仮想マシン
第7章 Diksamに配列を導入する
- 7-1 Diksamにおける配列の仕様について
- 【補足】Dの配列
- 7-2 コンパイラの修正
- 7-3 DVMの修正
- 【補足】Javaにおける配列リテラルの生成
- 【補足】Cにおける配列の初期化
- 【補足】ArrayStoreException
第8章 Diksamにクラスを導入する
- 8-1 ソースファイルの分割
- 【補足】#includeとファイル名と行番号
- 【補足】ダイナミックロード時のコンパイラ
- 8-2 Diksamにおけるクラスの仕様について
- 8-3 クラスの実装について――継承とポリモルフィズム
- 【補足】型のない言語での継承
- 8-4 クラスの実装について――こまごまとしたこと
- 【補足】メソッド呼び出しと括弧とメソッドポインタ
- 【補足】ファイナライザというかデストラクタというか
第9章 応用編
- 9-1 crowbarにオブジェクトとクロージャを導入する
- 9-2 例外処理機構
- 【補足】JavaとC#の例外の違い
- 【補足】catchの書き方
- 【補足】検査例外の是非
- 【補足】例外処理自体の是非
- 9-3 ビルトインスクリプト
- 9-4 crowbarに鬼車を導入する
- 9-5 その他
付録
- A crowbar言語仕様
- B Diksam言語仕様
- C Diksam Virtual Machineインストラクションセット
- 言語だけではなんにもならない――あとがきにかえて
この本に関連する書籍
-
プログラミング言語大全
プログラミング言語の大全集! 100以上のプログラミング言語や処理系,関連言語を幅広く解説。C,Java,Python,PHP,Ruby,JavaScript...主要言語はもちろんマイナー...
-
2週間でできる! スクリプト言語の作り方
コンピュータ言語の学習をする際,非常に効果的なのは,自分でOSやコンパイラ,プログラミング言語を作ることです。本書は,JavaScriptやPHP,Python,Rubyのようなスク...
-
センス・オブ・プログラミング!−抽象的に考えること・データ構造を理解すること
プログラミングを身につけるには,経験から学んだ言わば「センス」ともいうべきものが重要です。それは「抽象的なレベルで考えること」と「データ構造の重要性を認識す...