プログラミング言語を作る

[表紙]プログラミング言語を作る

紙版発売

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インストラクションセット
  • 言語だけではなんにもならない――あとがきにかえて

著者プロフィール

前橋和弥(まえばしかずや)

1969年,愛知県生まれ。名古屋市内の某ソフト会社で俸禄を食んでいるプログラマー。著書に『C言語 ポインタ完全制覇』,『C言語 体当たり学習徹底入門』,『Java謎+落とし穴徹底解明』,『センス・オブ・プログラミング!』がある。

言語作りは昔から趣味で細々とやっていた。これがなければCの本を書いたりすることもなかったと思う。

著者ホームページ:http://kmaebashi.com