プログラミング言語論

プログラミング ゲンゴ ロン

プログラミング言語論の表紙
プログラミング
著者:
大山口通夫 / 五味弘(オオヤマグチ, ミチオ / ゴミ, ヒロシ)
出版社:
コロナ社
出版日:
2008年03月
ISBN:
9784339027044
シリーズ:
コンピュータサイエンス教科書シリーズ
在庫:
在庫あり
0

なぜ注目されているか

言及数
933位
総合1862位 ↓ 1 ランクダウン 言及 2 件

技書の森解説

『プログラミング言語論』は、プログラミングパラダイムと構文、意味論というプログラミング言語の基本的な事項を概説し、C 言語と Java を題材に「プログラムの意味」を掘り下げる大学向けの教科書です。大山口 通夫、五味 弘の両氏による共著で、コロナ社の「コンピュータサイエンス教科書シリーズ」の 4 巻として 2008 年 3 月に刊行されました (版元の発行年月日は 2008 年 3 月 13 日)。版元の紹介文は、本書が C 言語と Java についての意味論に焦点を当て、その有効性に重点をおいて解説していると案内しています。

全 8 章の構成、パラダイムの分類から C と Java の意味まで

本文は全 8 章で、どの章も末尾に演習問題が付きます。1 章の序論に続き、2 章ではプログラミング言語をパラダイムに従って分類し、それぞれに対応する計算モデルを解説します。目次を見ると、命令型言語には理論モデルの RAM、関数型言語には λ 算法と Lisp、論理型言語には一階述語論理と単一化、オブジェクト指向言語には抽象データ型が組み合わされています。そのあと 3 章が構文、6 章が意味論を受け持ち、間の 4 章と 5 章で命令型とオブジェクト指向の言語をさらに詳しく扱います。最後の 7 章と 8 章で C と Java を取り上げる並びです。

パラダイムごとに計算モデルを対応させる構成には理由があります。λ 算法は関数の定義と適用だけで計算を表す体系で、関数型プログラミング の理論的な土台にあたります。論理型言語の単一化やバックトラックも、手続き型の言語に慣れた人には動きの想像がつきにくい仕組みです。言語の見た目の違いを、背後にある計算の模型の違いとして捉え直せることが、2 章を読む実益と読めます。

構文は文脈自由文法で、意味は仮想計算機で説明する

3 章は構文規則を文脈自由文法で記述する方法を扱い、曖昧さのない文法の書き方、式の文法規則、構文図式まで進みます。6 章は形式的な意味の記述法を取り上げ、RAM の機械語命令の意味から簡単なプログラムの意味の記述へ進んだあと、表示的意味論と公理的意味論を紹介します。表示的意味論はプログラムを数学的な対象へ写して意味を定め、公理的意味論は文の実行前と実行後に成り立つ条件で意味を述べる考え方です。どちらも、処理系を動かして確かめるのではなく、定義からプログラムが何をするかを言えるようにするための道具です。

本書の特色は、この議論を実在の言語につなげる 7 章と 8 章にあります。7 章では C 言語のサブセットとして Small C を定義し、仮想計算機の上で関数の定義と呼び出し、配列とポインター、文と式の意味を説明したうえで、型宣言と型検査を扱います。8 章は Java 処理系の構成とメモリ構成、クラスローダー、構文規則から入り、式や制御文、オブジェクト指向の機能がバイトコードへどう変換されるかを追います。ソースコードを中間コードへ落とす過程は コンパイラー が後段で行うコード生成そのものなので、意味論を処理系の実装の側から見る視点が得られます。

命令型とオブジェクト指向の言語機能を詳しく扱う 4 章と 5 章

4 章は構造化プログラミング、データ型 (基本データ型と配列型、レコード型、ポインター型)、手続きを扱い、手続きの節には引数の結合方法、名前の有効範囲と存続範囲、実行時スタックが並びます。値渡しか参照渡しかで同じ呼び出しの結果が変わる、という種類の違いを言語の定義として理解する章です。5 章はオブジェクトの定義から始め、カプセル化と情報隠蔽、継承、ポリモーフィズム、インタフェース、委譲、コンポジションと機能を一つずつ取り上げ、委譲と継承の比較の節も置いています。継承に頼らず部品を組み合わせて機能を作る考え方は、オブジェクト指向 の設計を学ぶうえで避けて通れない論点です。5 章の後半には、出張旅費清算システムとチケット予約システムという事例が置かれています。

版元は本書を教科書として案内しており、特定の言語の書き方を一から教える入門書ではありません。7 章と 8 章は C と Java のプログラムを読めることを前提にした章立てと読めるため、どちらかの言語で簡単なプログラムを書いた経験があると進めやすくなります。2008 年 3 月刊のため、言語の仕様や処理系の話は刊行時点のものとして読むのが安全です。版元ページには、補足資料の置き場所と、まえがきに載せた URL が変更になった旨の案内があります。

講義でプログラミング言語論を履修する学生はもちろん、複数の言語を使い分けるうちに、引数の渡し方や継承の仕組みが言語ごとに違う理由を定義の水準で整理したくなった技術者にとって、パラダイム、構文、意味論、そして C と Java の実装までを 1 冊で通して追える本書は、手元に置く価値のある教科書です。

言及した記事 (2 件)

この本に興味がある方におすすめ

関連する本

関連記事

関連用語

共有: