PUG BOOKS の Turbo Pascal 関連書籍を読んでみる

# はじめに
PUG BOOKS の Turbo Pascal 関連書籍を購入して読んでみました。

:::note
『Turbo Pascal』は ver4.0 以降、CP/M のサポートをやめているので、日本における「Turbo Pascal ver4.0 以降の書籍」というのは、主に PC-9801 シリーズ用 MS-DOS 版の書籍を指しています。
:::

# 読んでみる。

PUG BOOKS の Turbo Pascal の関連書籍には次のようなものがあるようです。

| タイトル | 著者 | ISBN-10<br>(Amazon) |出版年|
|:---|:---|:---:|:---:|
| Turbo Pascal プログラミング・マニュアル | ボーランドインターナショナル(編)<br>マイクロソフトウエアアソシエイツ(訳) | [4880631205](https://www.amazon.co.jp/dp/4880631205)  | 1984/6/25 |
|Turbo Pascal トレーニングマニュアル              | 小林 <ruby>侔史<rt>ひとし</rt></ruby> | [4880631191](https://www.amazon.co.jp/dp/4880631191) | 1986/4/15 |
|Turbo Graphics | 安斎 利洋, 伊吹 竜 | [4880632759](https://www.amazon.co.jp/dp/4880632759) | 1987/3/1 |
|Turbo Pascal エキスパートマニュアル              | 小林 侔史 | [4880632740](https://www.amazon.co.jp/dp/4880632740) | 1987/6/10 |
|Turbo Pascal プログラミングテクニック            | 金子 守宏 | [4880634824](https://www.amazon.co.jp/dp/4880634824) | 1988/12/20 |
|Turbo Pascal ver.4 トレーニングマニュアル        | 小林 侔史 | [4880634492](https://www.amazon.co.jp/dp/4880634492) | 1988/8/1 |
|TURBO PASCAL プロフェッショナルマニュアル        | 吉田 義人 | [4880634913](https://www.amazon.co.jp/dp/4880634913) | 1988/11/1 |
|Turbo Pascal ツールマニュアル                    | グループ SPUG | [4880635022](https://www.amazon.co.jp/dp/4880635022) | 1988/12/1 |
|Turbo Pascal ver.5 トレーニングマニュアル      | 小林 侔史 | [4880635472](https://www.amazon.co.jp/dp/4880635472) | 1989/4/1 |
|Turbo Pascal ver.5.5 トレーニングマニュアル      | 小林 侔史 | [4880638889](https://www.amazon.co.jp/dp/4880638889) | 1990/04/20 |
|Turbo Graphics: Turbo Pascal ver.5 対応 | 安斎 利洋, 伊吹 竜  | [4880639575](https://www.amazon.co.jp/dp/4880639575) | 1990/8/1 |
|Turbo Pascal ver.6 トレーニングマニュアル         | 小林 侔史 | [4796602038](https://www.amazon.co.jp/dp/4796602038) | 1991/9/1 |
|Turbo Pascal ver.6 エキスパートマニュアル         | 小林 侔史 | [4796601597](https://www.amazon.co.jp/dp/4796601597) | 1991/8/15 |

## ・Turbo Pascal プログラミング・マニュアル
マイクロソフトウエアアソシエイツによる Turbo Pascal のマニュアルです。ver 3.0 までの製品に付属しているものと、書籍として一般販売されているものがあります。

この書籍は PUG BOOKS シリーズではないのですが、発行所が同じなので同じカテゴリーにしてみました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/38d25937-23c3-62b0-9c43-3da5712fd62c.png)

| タイトル | 著者 | ISBN-10<br>(Amazon) |出版年|
|:---|:---|:---:|:---:|
| Turbo Pascal プログラミング・マニュアル | ボーランドインターナショナル(編)<br>マイクロソフトウエアアソシエイツ(訳) | [4880631205](https://www.amazon.co.jp/dp/4880631205)  | 1984/6/25 |

### 書評
公式マニュアル [^1]。「訳がおかしい所がある」と聞いていたが、実際に読んでみてあまり気になる所はなかった [^3]。

内容は『Turbo Pascal ver1.0』のマニュアルで、時期的には『Turbo Pascal ver2.0』発売後なのだけれど、ver2.0 で実装された機能については触れられていない。そもそも『Turbo Pascal ver2.0 英語版』のマニュアルですら、当初は 『Turbo Pascal ver1.0』のマニュアルそのままだったと聞く。『Turbo Pascal ver3.0』には本書と差分の冊子 [^2] が付いてきたようだ。

内容についてだが、公式マニュアルなのは言うまでもなく、CP/M-80 固有、CP/M-86 固有、MS-DOS 固有の情報があり、それが日本語で読めるのだから、Turbo Pascal 1～3 を使うのであれば持っておいて損はない。

:::note warn
P.208 の `MOV AL,[BP-1]` は `MOV AL,[BP+4]` の間違いです。 
:::

対象: Turbo Pascal 1.0 (～3.0)
個人的な評価: ★★★★★

:::note
[『TURBO PASCAL プログラミング・マニュアル』](https://dl.ndl.go.jp/pid/12632227)は国立国会図書館デジタルコレクションで読む事ができます。書籍の閲覧には国立国会図書館の利用者登録 ([本登録](https://www.ndl.go.jp/jp/registration/individuals_official.html)) が必要です。
:::

## ・Turbo Pascal トレーニングマニュアル 

Turbo Pascal 3.0 を対象とした入門書です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/a5705c17-41fa-5eec-1b51-08047b1d160f.png)

| タイトル | 著者 | ISBN-10<br>(Amazon) |出版年|
|:---|:---|:---:|:---:|
|Turbo Pascal トレーニングマニュアル              | 小林 侔史 | [4880631191](https://www.amazon.co.jp/dp/4880631191) | 1986/4/15 |

### 書評
『Turbo Pascal』の入門書。Pascal や Turbo Pascal の文法については[『PASCAL』](https://qiita.com/ht_deko/items/3086b7cff08928eca7a9#pascal-pascal)や[『Turbo Pascal プログラミング・マニュアル』](#turbo-pascal-%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E3%83%9E%E3%83%8B%E3%83%A5%E3%82%A2%E3%83%AB)を軽く眺めてからの方が理解が早いと思う。CP/M 版の事もわずかに触れられている。

Embarcadero が『Turbo Pascal ver3.0』をアンティークソフトウエアとして無償公開しているが、『Turbo Pascal ver3.0』の[マニュアル](#turbo-pascal-プログラミングマニュアル)が入手できなくて困っているのなら本書を探すといいかもしれない。

対象: Turbo Pascal 3.0
個人的な評価: ★★★★★

:::note
[『TURBO PASCAL トレーニングマニュアル』](https://dl.ndl.go.jp/pid/12630923)は国立国会図書館デジタルコレクションで読む事ができます。書籍の閲覧には国立国会図書館の利用者登録 ([本登録](https://www.ndl.go.jp/jp/registration/individuals_official.html)) が必要です。
:::

**See also:**

 - [Embarcadero が公開しているアンティークソフト一覧 (Embarcadero)](https://qiita.com/ht_deko/items/ae7605c6b1f426ae234a#-turbo-pascal-302-1986917)

## ・Turbo Pascal エキスパートマニュアル 

Turbo Pascal 3.0 を対象とした書籍です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/df072dc9-4d04-da1c-0d06-0713e0506495.png)

| タイトル | 著者 | ISBN-10<br>(Amazon) |出版年|
|:---|:---|:---:|:---:|
|Turbo Pascal エキスパートマニュアル              | 小林 侔史 | [4880632740](https://www.amazon.co.jp/dp/4880632740) | 1987/6/10 |

### 書評

プログラミングテクニック集。MS-DOS かつ PC-9800 シリーズ向けなので、CP/M 版を使っている場合には読む所が少ない。2、3、6、7、10 章は MS-DOS 固有。IBM PC 用にはそのまま使えないコードもあるだろうが、考え方は同じなので役に立つ事も多いと思う。

テーマがバラバラな気はするが、読んでいて面白い。

対象: Turbo Pascal 3.0 (MS-DOS: PC-98)
個人的な評価: ★★★★★

:::note
[『TURBO PASCAL エキスパートマニュアル』](https://dl.ndl.go.jp/pid/12630505)は国立国会図書館デジタルコレクションで読む事ができます。書籍の閲覧には国立国会図書館の利用者登録 ([本登録](https://www.ndl.go.jp/jp/registration/individuals_official.html)) が必要です。
:::

## ・Turbo Pascal プログラミングテクニック
Turbo Pascal 4.0 を対象とした書籍です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/1dd32cc4-88bf-0332-fbc0-d8d6731949f9.png)

| タイトル | 著者 | ISBN-10<br>(Amazon) |出版年|
|:---|:---|:---:|:---:|
|Turbo Pascal プログラミングテクニック            | 金子 守宏 | [4880634824](https://www.amazon.co.jp/dp/4880634824) | 1988/12/20 |


### 書評
皆さんは[『やさしいＣプログラミング』](https://www.amazon.co.jp/gp/product/4254121091)という書籍をご存じだろうか？

 - [やさしいＣプログラミング (パソコン初心者の館)](http://www.pro.or.jp/~fuji/computerbooks/c/c.modula2.html)

詳細はリンク先に譲るとして、『やさしいＣプログラミング』は有名な問題作であり、著者が **C 言語を Modula-2 風味で書いている** 事に批判が集まっている。


さて、本書の話に戻るが、掲載されているコードの右端に並ぶ **begin** **end** は何だろうか？…そう、本書は『やさしいＣプログラミング』を遡る事 8 年前に<font color="red">やってしまっている</font>のである。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/5e7b74ec-db6b-2003-da5d-fed3a79b731f.png)

例を幾つか挙げる。

```pascal:procedure の例
procedure Hoge;
begin

  ...
                                                                                end; {
end of Hoge;                                                                    }
```

```pascal:if 文の例
if a > 0
  then
                                                                                begin
  ...
                                                                                end
  else
                                                                                begin
  ...
                                                                                end; {
endif;                                                                          }
```

```pascal:case 文の例
case a of
 1: ;
 2: ;
 3: ;                                                                           end; {
endcase;                                                                        }
```

コード右端の **begin** **end** はワードラップのミスではなく、筆者曰く「どの end がどの begin に対応しているか分かりにくい (P.12)」のだそうだ。そこで "臭いものに蓋をする" ではないが、**begin** **end** を目に入らない位置に移動している。

そして、ただ単純に **begin** **end** を抜くとブロックの整合性が採れないため、endif やら endcase やらを `コメントで` 書いている…つまり **著者は (Turbo) Pascal を Modula-2 風味で書いている**…とても頭が痛い。

:::note
ブロックの見通しが悪いなら [J&W スタイル](https://qiita.com/ht_deko/items/50bac0de384d66208944#832--pascal-%E3%81%AE%E5%AD%97%E4%B8%8B%E3%81%92-%E3%82%A4%E3%83%B3%E3%83%87%E3%83%B3%E3%83%88-%E3%82%B9%E3%82%BF%E3%82%A4%E3%83%AB)にして、インデントで判断すればいいだけだと思うのだが…🤔
:::

肝心の内容についてだが、実践的なライブラリやツールが書かれていて**とても参考になる**。とても参考になるのだがコードを読む気にならない。<font color="red">素晴らしく美味しい豆腐を使った湯豆腐の鍋にパクチーを入れられた</font>気分だ。

対象: Turbo Pascal 4.0 (MS-DOS: PC-98)
個人的な評価: ★★★★☆


## ・Turbo Pascal ver.4 トレーニングマニュアル 

Turbo Pascal 4.0 を対象とした入門書です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/97778004-e78c-29de-ba9f-05906c278309.png)

| タイトル | 著者 | ISBN-10<br>(Amazon) |出版年|
|:---|:---|:---:|:---:|
|Turbo Pascal ver.4 トレーニングマニュアル        | 小林 侔史 | [4880634492](https://www.amazon.co.jp/dp/4880634492) | 1988/8/1 |

『Turbo Pascal ver.4』の入門書。基本的には前版[『Turbo Pascal トレーニングマニュアル』](#turbo-pascal-%E3%83%88%E3%83%AC%E3%83%BC%E3%83%8B%E3%83%B3%E3%82%B0%E3%83%9E%E3%83%8B%E3%83%A5%E3%82%A2%E3%83%AB)の焼き直し。CP/M の記述がなくなっているので、幾分スッキリとしている。

『Turbo Pascal ver.4』ではドラスティックな変更が加えられているのだが、大部分のコードは『Turbo Pascal ver.3』の範囲で記述されている。

ver.3 から ver.4 への変換方法のような次版以降には存在しないトピックもあるが、今となっては本書がどうしても必要になるといった場面は少ないように思える。

対象: Turbo Pascal 4.0 (MS-DOS: PC-98)
個人的な評価: ★★★★☆

**See also:**

 - [Turbo Pascal 4.0 (1987 年) - Delphi のご先祖を辿る (Qiita)](https://qiita.com/ht_deko/items/b41b0cd45181aec522d4#turbo-pascal-40-1987-%E5%B9%B4)


## ・Turbo Graphics: Turbo Pascal ver.5 対応
Turbo Pascal 5.0 を対象とした書籍です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/1367d967-3298-38f0-b1a3-f2f39c733778.png)

| タイトル | 著者 | ISBN-10<br>(Amazon) |出版年|
|:---|:---|:---:|:---:|
|Turbo Graphics: Turbo Pascal ver.5 対応 | 安斎 利洋, 伊吹 竜  | [4880639575](https://www.amazon.co.jp/dp/4880639575) | 1990/8/1 |

### 書評
PC-98 シリーズ用 MS-DOS 向けなので、Turbo Pascal 付属のライブラリを使ってあるのかと思ったら、硬派な事にグラフィックユニットは自作だった。前版を読まずに本書を読んだが、前版から自作しているのだろう。

内容に関しては[『アルゴリズム + データ構造 = プログラム (Pascal)』](https://qiita.com/ht_deko/items/3086b7cff08928eca7a9#%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0--%E3%83%87%E3%83%BC%E3%82%BF%E6%A7%8B%E9%80%A0--%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0-pascal)にあるようなリサージュ図形などの他に、タートルグラフィック (自作)、フラクタル図形、バンプマッピング、マンデルブロなど、多岐に渡ってグラフィックを扱っている。

IBM PC ではグラフィック画面とテキスト画面の重ね合わせができないので、記事内のペイントアプリは (今となっては) あまり参考にならないかもしれないが、それ以外の記事はグラフィックユニットを移植するだけで利用可能だと思われる。

前版は ver3.0 対応だったが、グラフィックの描画には実数演算を伴うので `TURBO-87.COM` を使わないと遅くて仕方ないかもしれない。CP/M-80 版に至ってはリサージュやタートルグラフィックまでしか試せないと思う (そもそも対象としていないだろうが)。

:::note
筆者 (安斎氏) は記事内のペイントアプリを発展させたペイントツール『Super Tableau』をサピエンス社からリリースしている。
:::

対象: Turbo Pascal 5.0 (MS-DOS: PC-98)
個人的な評価: ★★★★☆

**See also:**

 - [ターボ・グラフィックス (renga.com)](http://renga.com/anzaiarc/turbographics/)
 - [Super Tableau (renga.com)](http://renga.com/anzaiarc/supertableau/)


## ・Turbo Pascal ver 5.5 トレーニングマニュアル 
Turbo Pascal 5.5 を対象とした入門書です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/dc884517-e45e-1612-ab82-c8ed8c4db309.png)

| タイトル | 著者 | ISBN-10<br>(Amazon) |出版年|
|:---|:---|:---:|:---:|
|Turbo Pascal ver.5.5 トレーニングマニュアル      | 小林侔史 | [4880638889](https://www.amazon.co.jp/dp/4880638889) | 1990/04/20 |

### 書評
安定のトレーニングマニュアル。『Turbo Pascal ver.5.5』で追加されたオブジェクト指向機能についても 20P 程度ではあるが触れられている。

Embarcadero は『Turbo Pascal ver.5.5』をアンティークソフトウエアとして無償公開しているのだが、『Turbo Pascal ver.5.5』のマニュアルを入手できなくて困っているのであれば、本書を探すといいかもしれない。

前版にあった **inline** 等のハードウェア寄りな情報は含まれていない。

対象: Turbo Pascal 5.5 (MS-DOS: PC-98)
個人的な評価: ★★★★☆

**See also:**

 - [Embarcadero が公開しているアンティークソフト一覧 (Embarcadero)](https://qiita.com/ht_deko/items/ae7605c6b1f426ae234a#-turbo-pascal-55-198952)


## ・Turbo Pascal ver 6.0 エキスパートマニュアル 
Turbo Pascal 6.0 を対象とした書籍です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/938288b1-f696-6547-a994-33c3aff82011.png)

| タイトル | 著者 | ISBN-10<br>(Amazon) |出版年|
|:---|:---|:---:|:---:|
|Turbo Pascal ver.6 エキスパートマニュアル         | 小林侔史 | [4796601597](https://www.amazon.co.jp/dp/4796601597) | 1991/8/15 |


### 書評
前版は ver3.0 が対象だったので、随分と間隔がある印象。ページ数的には 1.2 倍程度増加しているが、行間が狭いので実際のボリュームは 1.5 倍を超えていると思う。

DOS ユニットの使い方や『Turbo Vision』の使い方、オブジェクト指向プログラミング、条件コンパイルのやり方、コマンドラインツールの使い方...一通りの事は網羅している。むしろ、よくこのボリュームで抑えられたなと感心した。

ここまでやっておいてなのだが、ver6.0 の新機能である **asm** によるインラインアセンブラの使い方は何故か紹介されていない。機械語を扱う部分は従来通り **inline** によるインライン機械語で記述されており、機械語コードを得るのに MASM を使う場面もあった。

考えるに、筆者は Turbo Assembler に詳しくないため、インラインアセンブラについては割愛したのかもしれない。要はサンプルプログラムの都合だ。インラインアセンブラはもはや Turbo Pascal の範疇ではないので、カットしてくれても構わないのだが、ver6.0 にインラインアセンブラが存在するという事だけは記載しておいてほしかった。

対象: Turbo Pascal 6.0 (MS-DOS: PC-98)
個人的な評価: ★★★★☆

# おわりに

PUG BOOKS のシリーズは概ね高評価です。Embarcadero が公開しているアンティークソフトウェア (ver.1.0 /  ver.3.0 / ver5.5) に合わせて購入し、時系列順に読んでみたのですが、どの書籍でも新しい知見が得られました。

:::note
気が向いたらシリーズの他の書籍も読んでみたいと思っていますが、毛色が異なる『TURBO PASCAL プロフェッショナルマニュアル』だけ読まないかもしれません。こちらは Turbo Pascal を題材にしたプログラム設計の方法論的な内容のようです。
:::

## 改版について
『トレーニングマニュアル』『エキスパートマニュアル』『Turbo Graphics』は改版されています。

|  | 3.0 | 4.0 | 5.0 | 5.5 | 6.0 |
|:---|:---:|:---:|:---:|:---:|:---:|
| トレーニングマニュアル | ◎ | 〇 | 〇 | ◎ | 〇 |
| エキスパートマニュアル | ◎ |  |  |  | ◎ |
| Turbo Graphics | 〇 |  | 〇 |  |  |

 - 『トレーニングマニュアル』は入門書の役割がありますので、新しいバージョンが出るたびに改版されています。
 - Embarcadero が公開しているアンティークソフトウェアを触ってみたいのであれば、二重丸 (◎) になっている版を探すといいかと思います。
 - 『Turbo Graphics』は PC-9800 シリーズ向けなので、IBM PC で試すにはグラフィックユニットを移植する必要があります。

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

[^1]:Turbo Pascal はマイクロソフトウエアアソシエイツ社とサザンパシフィック社の 2 社が販売しており、サザンパシフィック社の日本語マニュアルも存在する (『Turbo Pascal version 3.0 Reference Manual 日本語版』(1985))。
[^2]:『Turbo Pascal version 3.0 プログラミング・マニュアルの追加』
[^3]: サザンパシフィックのマニュアル (『Turbo Pascal version 3.0 Reference Manual 日本語版』) の方は不具合が目に付いたので、そちらと混同されているのかもしれない。