gihyo.jp » 書籍案内 » 書籍ジャンル・キーワード » プログラミング » プログラミング言語を作る

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

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

2009年6月20日発売

前橋和弥 著

B5変形判/424ページ

定価3,129円(本体2,980円)

ISBN 978-4-7741-3895-4

→学校・法人一括購入ご検討の皆様へ

書籍の概要

この本の概要

テーマはズバリ「独自のプログラミング言語を作る」こと。すでに多くのプログラミング言語が存在するのに,わざわざ新しい言語を作る意味は? プログラマにとって言語がどのように動くのか深く知ることは重要なスキルになるなどメリットは多々ありますが,なんといっても言語を作るのは「楽しいから」につきます!「プログラミング言語を突き詰めていったプログラマは,最後にはOSかプログラミング言語を作る」といわれます。プログラミングのもっともコアな部分に触れる楽しさがあります。本書で多くの人がこの楽しさを味わいますように!

こんな方におすすめ

  • プログラミング言語を作ってみたい方
  • コンパイラやプログラムの仕組みを知りたい方

目次

第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

G-CLOUD

ピックアップ

エンジニアパワーアップ講座 ~システム基盤を活用するための基礎知識~

イマドキのエンジニアに要求されるさまざまな知識や能力。これらを効率よくキャッチアップしていくヒントをいろいろな視点から取り上げます。

LinuxCon Japan/ Tokyo 2010の歩き方

9月開催「LinuxCon Japan/ Tokyo 2010」の見どころと楽しみ方を,メインスピーカーの皆さんに自ら紹介していただきましょう。

自分で考えた家が現実に!? ~「3DマイホームデザイナーLS3」で実現する,普請道楽のススメ

「3DマイホームデザイナーLS3」を使えば,パズル感覚の簡単操作で理想の住まいを立体的にシュミレートすることができます。

手軽に使える専用サーバ「さくらのマネージドサーバ」を徹底チェック

1台のサーバを占有して使うことができる「さくらのマネージドサーバ」に新たに加わった「Core 2 Duoプラン」の特徴と魅力をお伝えします。

gihyo.jp インフラエンジニア情報局

ネットワークやITにかかわるあらゆる業種で必要とされるインフラエンジニアに向けた情報や魅力を多角的に紹介します。

一行クイックアンケート

gihyo.jpで取り上げてほしいネタは?

※検索はページ右上の検索ボックスをご利用ください。

よく読まれている連載

目指せ!iPhoneアプリ開発エキスパート

2008年7月,日本での展開が始まりたくさんのユーザを獲得しているiPhone。その醍醐味の1つは,オリジナルアプリの開発でしょう。本連載では,iPhoneアプリ開発について,基礎から公開の手順まで,じっくり丁寧に解説します。

シモダテツヤのIT四コマふんわり劇場

IT界を揺るがす四コマ漫画家“シモダテツヤ”が,毎回楽しい四コマ漫画とふんわりしたコラムでお届けしていきます!

ただのメモでは勿体ない!Evernoteに人生を記憶しよう

これからEvernoteをはじめたい,もっとEvernoteを使いこなしたいという方向けにEvernoteの基本的な使い方から応用技,情報整理術やライフログなどの具体的な運用方法まで解説していきます。

Cassandraのはじめ方─手を動かしてNoSQLを体感しよう

今話題のNoSQLデータベースの中でもFacebook,Twitter,Diggなどの有名Webサービスがこぞって導入したことで注目を集めているのがCassandraです。この連載ではCassandraを実際に動かしながら,その仕組みとメリットを解説します。

memcachedの活用と運用 実践編

本特集では,memcachedを利用している方に向けて,実践的なテクニックを伝授します。

Google Chrome版Firebug:デベロッパーツール取扱説明書

WebKitのWebInspector(デベロッパーツール)は飛躍的な進化を遂げています。多機能化するデバッガーの使い方とノウハウを詳細に解説します。

世界を目指せ!Androidアプリ開発入門

本連載では,12回にわたってAndroidアプリ開発について解説します。本連載を見ながら,Androidケータイ元年といわれている2010年をぜひ楽しんでください。

ゼロから学ぶOAuth

これからのWebサービスを開発する上で不可欠な技術「OAuth」の概念や基本情報に加えて,実際に開発する際に必要なポイントを解説します。

JavaScriptでわかる!組込みプログラミングの神髄

組込みプログラミングのエッセンスは,実はJavaScriptプログラミングから得ることができるのです。その極意を特集としてお届けしましょう。

Ruby on Railsで作られたプロジェクト管理ツールredMineを使ってみよう!

Ruby on Railsで作られたプロジェクト管理ツールredMineの,環境構築からセッティング,運用方法まで解説します。

連載一覧

最近のコメント