LoginSignup
6
3

More than 1 year has passed since last update.

培風館の Pascal 関連書籍を読んでみる

Last updated at Posted at 2019-11-02

はじめに

培風館から何冊か Pascal 関連の書籍が出ています。

PASCAL 原書第 4 版

標準 Pascal を対象とした書籍です。
image.png

タイトル 著者 ISBN-10
(Amazon)
出版年
情報処理シリーズ 2
PASCAL 1
キャスリン・イェンゼン(著)
ニクラウス・ヴィルト(著)
原田 賢一(訳)
456300782X
B000J7YORE
1981/5/20
情報処理シリーズ 2
PASCAL 原書第 3 版
キャスリン・イェンゼン(著)
ニクラウス・ヴィルト(著)
アンドリュー・B・ミケル(編)
ジェームス・F・マイナー(編)
原田 賢一(訳)
4563014621 1988/1/20
情報処理シリーズ 2
PASCAL 原書第 4 版
キャスリン・イェンゼン(著)
ニクラウス・ヴィルト(著)
アンドリュー・B・ミケル(編)
ジェームス・F・マイナー(編)
原田 賢一(訳)
4563014664 1993/10/30

書評

この書籍の書評は次の記事中で書いた。

第 3 版以降は (当然ながら) J&W スタイルで書かれている 2。何故かインデント幅が 3 で、最後の end の後にスペースを入れて "end ." となっているものが多い。

program Test(Output);
   var
      i: Integer;
   function sub: Boolean;
   begin
      sub := (i = 0);
   end;
begin
   i := 0;
   if sub then
      begin
         writeln('True!');
      end;
end .

どうでもいい事だが、紙質のせいか第 4 版よりもページ数の少ない第 3 版のほうが本が厚い。

個人的な評価: ★★★★★

PASCAL 入門 改訂版

標準 Pascal を対象とした書籍です。
image.png

タイトル 著者 ISBN-10
(Amazon)
出版年
電子計算機のプログラミング 9
PASCAL 入門
土居 範久(著) 4563013102 1985/10/20
電子計算機のプログラミング 9
PASCAL 入門 改訂版
土居 範久(著) 4563013765 1994/3/30

書評

版数によって内容が異なる。初版は ISO 7185:1983 に対応しており 3、改訂版は JIS X 3008:1990 に対応している。改訂版である本書だけあればいいかと思う。

本書のまえがきによると、用語は『Pascal の標準化 ― ISO 規格全訳とその解説 (1984)』に沿っているらしい。同じ培風社から出版されている『J&W』と使われている用語が異なるが、実は Pascal の JIS 規格である JIS X 3008 も『J&W』と使われている用語が異なる。

本書が読みにくい原因の一つは恐らくこの用語だ。JIS X 3008:1990 (ISO 7185:1983) は 1990 年の制定 4 なのだけれど、『J&W』や Turbo Pascal のマニュアルがそれより前にあったにもかかわらず、JIS X 3008 は『J&W』の訳や Turbo Pascal の訳を考慮していない。

『J&W』の訳が受け入れやすいのは原文に即した訳だからで、Turbo Pascal の訳が受け入れやすいのは当時一般的だったコンピュータ用語を無理なく使っているからだ。なお、Turbo Pascal の日本語マニュアルは多少言い回しに不自然な点があるものの、とても読みやすく理解しやすいので見つけたら確保しておく事をオススメする。

正確な用語を使おうとすれば規格に頼るしかないが、

  • 元となった規格の解説書『Pascal の標準化 ― ISO 規格全訳とその解説』
  • ISO/IEC 7185 同等の日本語規格 『JIS X 3008』

このいずれかから引くと文章が固くなりがちだ。この傾向は本書に限らず、上記いずれかを参考文献に挙げた Pascal の書籍は総じて文章が硬い。

内容についてだが、第 I 部はタイトルと同じ "Pascal 入門" となっている。しかしながら、そもそも本書は Pascal の入門書ではない。用語が難解な上に数学の知識がそれなりに必要で、”数学をある程度知っている人間が問題を解きながら Pascal を覚える本”である。Pascal を学びたいのなら別の本にしたほうがいい。それこそ『J&W 第 4 版』でいい。

  • ”困難なことはすべて、扱うことができ、解決が必要な部分へと分割せよ。” - ルネ・デカルト
  • ”問題を切り分けろ” - ビル・ゲイツ

理解しにくい事は理解できる最小単位までバラバラにして覚えた方がいいし、本質と関係ないものは極力除外した方がいい。

第 II 部は "Pascal 文法" となっており、JIS X 3008:1990 規格票の代わりに使える。用語はともかく、文法はコンパクトに纏まっていて要点を調べるのには重宝する。とても素晴らしい出来だと思う。出版時期から考えて改訂版の JIS X 3008:1994 (ISO/IEC 7185:1990) は考慮されておらず、水準 1 の説明も省かれている点には注意が必要。

"Pascal 入門" + "Pascal 文法" という構成は『J&W』と全く同じなのだけれど、少なくとも第 I 部の性格は全くと言っていいほど異なる。電子計算機のプログラミングシリーズには他の言語もあるけれど、どうやら似たような内容のようだ。要は大学の講義用テキストだ。

ソースコードは基本的に J&W スタイル で書かれている。program / function / procedure ヘッダの下で字下げされている (ブロックはすべてインデント)。

program Test(Output);
  var
    i: Integer;
    function sub: Boolean;
      begin
        sub := (i = 0);
      end;
  begin
    i := 0;
    if sub then
      begin
        writeln('True!');
      end;
  end.

個人的な評価: ★★★☆☆

See also:

データ構造とアルゴリズム

標準 Pascal を対象とした書籍です。
image.png

タイトル 著者 ISBN-10
(Amazon)
出版年
Data Structures and Algorithms A.V. エイホ(著)
J.D. ウルマン(著)
J.E. ホップクロフト(著)
0201000237 1983/1/1
情報処理シリーズ 11
データ構造とアルゴリズム
A.V. エイホ(著)
J.D. ウルマン(著)
J.E. ホップクロフト(著)
大野 義夫(訳)
4563007919 1987/3/10

書評

Pascal の本というより、アルゴリズムを疑似言語 で記述したという感じだ。Pascal は前提知識なので、あらかじめ覚えておく必要がある。

本書の疑似言語には Super Pascal 5 という名前が付いており、標準 Pascal とは 3 つの点で違いがある。

  1. ラベル
    goto 用のラベルには数字ではなく識別子が使われる。Delphi 等のモダンな Pascal では大抵使える。
  2. return()
    手続きにおける return() は手続きから抜ける働きをする 6。関数の場合には与えられた引数を関数の結果として返す。Delphi 2009 以降には全く同じ働きをする Exit() 関数 がある。return() 文の主な利用先はループからの脱出だと思われるが、Delphi 等のモダンな Pascal ではその用途に Break() 手続きContinue() 手続き が使える。
  3. その場での型定義
    標準 Pascal では結果型には単純型またはポインタ型の識別子しか使えず、仮引数にもその場で定義した型は使えないが、Super Pascal ではその場で定義した型を結果型や仮引数に使うことができる。つまり、構造等価を採用している。

「大文字と小文字を区別する」とも書かれているが、該当するコードがどこに書かれているのか精査できていない。とにかく、Pascal のように見える言語は疑似言語なため、コードをそのまま実行できない可能性には注意しなくてはならない。標準 Pascal で試すよりも最新版の Delphi で試したほうがいくらか楽かもしれない。

内容に関しては数学の知識が必要なため、かなり難解な部類だが比較的読みやすい。Pascal を教える気が全くない点がヴィルト著『アルゴリズム+データ構造=プログラム』とは異なる。それでも Pascal 特有の言語仕様についてはちゃんと補足されているため、他言語で読み替える時も問題はないだろう。

アルゴリズムを Pascal で教える事の意味は、"Pascal は簡単に覚えられる" という点に尽きると思う。言語仕様がコンパクトなため、Pascal をうろ覚えであっても文法書を脇に置いておけば問題なくアルゴリズムを勉強できるだろう。なにせ日本語で書かれた JIS X 3008:1994 ですら全部で 72P しかないのだから。

本書は例題 (アルゴリズム) そのものを理解できなかったとしても、考え方 (アルゴリズムのためのアルゴリズム) がとても参考になる。これは Wirth 氏の著書に置き換えても同じ事が言えるため、2 冊で Pascal とアルゴリズムを学ぶとなると次の組み合わせが考えられる。

  • 『J&W』+『アルゴリズム+データ構造=プログラム (Pascal)』
    標準 Pascal に沿っていないのと、若干 Pascal の説明が多い。
  • 『J&W』+『アルゴリズムとデータ構造 (Modula-2 / Oberon)』
    英語版は無償公開されている (Oberon 版)。Pascal よりも言語仕様がコンパクトな Modula-2 や Oberon で書かれており、疑似言語としては問題ないが、いかんせん Modula-2 や Oberon の資料が少なく実装もまた少ない。
  • 『J&W』+『データ構造とアルゴリズム (Super Pascal)』
    標準 Pascal とは若干の差異があるが読み替えるのは難しくない。Pascal の説明は必要最低限。

本当は『J&W』+『アルゴリズム+データ構造=プログラム』+『データ構造とアルゴリズム』の 3 冊で、と言いたいところだが、現在ではどれもこれも入手困難。

ソースコードは基本的に J&W スタイル で書かれている。program / function / procedure ヘッダの下で字下げされている (ブロックはすべてインデント)。インデント幅は 4。

program Test(Output);
   var
       i: Integer;
       function sub: Boolean;
           begin
               sub := (i = 0);
           end;
   begin
       i := 0;
       if sub then
           begin
               writeln('True!');
           end;
   end.

個人的な評価: ★★★★★

See also:

おわりに

『Pascal 入門 改訂版』は酷評してしまいましたけど、タイトルが『Pascal 入門』でなければもう少し評価は高かったかもしれません。

タイトルに Pascal と付く翻訳でない日本語の書籍は、何故か『アルゴリズム+データ構造=プログラム』の要素を入れたがるようです。いいんですけど、それなら "入門" とかタイトルに入れないでほしいし、一冊で全部やろうとしないで『データ構造とアルゴリズム』みたいにアルゴリズム全振りしたほうがいいんじゃないかと思うのです。プログラミング言語とアルゴリズムの勉強を平行でやるのはナンセンスだと思うし、「この構文を使ったほうが簡潔に書けるけどまだ教えてない」みたいなのがなくていいんじゃないかと思うのです。

そもそも私は教科書スタイルの書籍が好きではないのですが、教科書的な書籍にするにしたって、Pascal は言語仕様がコンパクトなので、ざっくり文法や関数を教えてからでもアルゴリズムは教えられるのではないかと。別に Pascal の仕様を丸暗記する必要はなく、必要であれば言語の部分を読み返しながらアルゴリズム実装を勉強できるようにすればいいだけの話ではないでしょうか?何故混ぜたがるのでしょうか?

Pascal 生みの親であるヴィルト先生ですら 'できていない' 事をどうしてやれると思うのでしょうか?

書評について

書評は 現在での評価 となっています。書籍が出版された時点での評価ではない事にご注意ください。

See also:


  1. 1981 年出版の『情報処理シリーズ 2 PASCAL』は原書第 2 版を翻訳したもの。 

  2. 字下げのスタイルについてはこちらを参照の事。 

  3. 参考文献である『Pascal の標準化 -ISO 規格全訳とその解説-』が参照しているのは BS 6192:1982。 

  4. 1990 年と言ったら Turbo Pascal 6.0 がリリースされた年である。 

  5. 同名の実在の実装もあるが、拡張内容は全く異なる。 

  6. 正確には手続きの最後の空文に移動する。 

6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3