Help us understand the problem. What is going on with this article?

Pascal についてのポエム (パンセではない)

はじめに

『PASCAL (情報処理シリーズ 2)』(原題:Pascal User Manual and Report) は、キャスリン・イェンゼン (Kathleen Jensen) とニクラウス・ヴィルト (Niklaus Wirth) によって書かれた PASCAL 言語についての書籍である。著者名の頭文字からしばしば J&W と略される。または単純に Report とも。
image.png
原書の初版は 1974 年に出版され、PASCAL 言語が標準化されるまでの間リファレンス的な扱いを受けていた。1984 年の第 3 版では ISO での標準化を反映して大幅に変更されている。

第 3 版の改訂者はアンドリュー・B・ミケル (Andrew B. Mickel) とジェームス・F・マイナー (James F. Miner)。

日本語訳は第 2 版と訳書訂正版とも原田賢一。原書初版の日本語訳はない。
image.png
出版社は培風館

原書
(年度)
原書
ISBN
日本語訳
(年度)
日本語訳
ISBN
頁数
初版
(1974)
038706950X
354006950X
第 2 版
(1978)
0387901442
3540901442
PASCAL
(1981)
456300782X
456300782X
187P
第 3 版
(1984)
0387960481
3540960481
PASCAL 原書第 3 版
(1988)
4563014621 243P
第 4 版
(1991)
0387976493
3540976493
PASCAL 原書第 4 版
(1993)
4563014664 251P

※リンク先は Amazon です。

J&W スタイル

本書 (第 4 版) でソースコード片を示すのに使っているインデントやブレースの位置などのスタイルを指して J&W スタイルと呼ぶことがある (C 言語で言うところの GNU スタイル)1。これに対し、Borland 系の Pascal (Turbo Pascal, Borland Pascal, Delphi) は Borland スタイルで書かれている (C 言語で言うところの BSD/オールマンスタイル)。

おわかりいただけただろうか?

この記事が "プログラミング言語 C (Wikipedia)"パクリオマージュという事を...。

標準 Pascal / 拡張 Pascal

規格化された Pascal は以下の 2 つです。

Pascal 説明
Classic Pascal J&W の Pascal
Standard Pascal
(標準 Pascal)
ISO/IEC 7185 準拠の Pascal
Extended Pascal
(拡張 Pascal)
ISO/IEC 10206 準拠の Pascal

(標準)Pascal へのオブジェクト指向拡張はドラフトのまま放置されました。

ANSI/IEEE770X3.97-1983 は古い規格で、ISO/IEC 7185 で置き換えられました。これらはほぼ同じものです。

ISO/IEC 7185:1990 同等の JIS 規格は JIS X 3008 です。

Delphi とかは標準 Pascal ではありません。そもそも標準化前に Turbo Pascal とかありましたしね。

Pascal の書籍について

標準 Pascal を対象としたすべての書籍に言えますが、少なくとも 1983 年以前に出版されていて改訂版が出ていないものは ISO 標準の Pascal (ISO/IEC 7185:1983) に対応していません。

そして少なくとも 1990 年以前に出版されていて改訂版が出ていないものも最新の ISO Pascal 規格である ISO/IEC 7185:1990 に対応していません。そもそも日本だと 1990 年代に出版された標準 Pascal 本自体が少ないのですけれどね。

巻末の索引を調べて「スカラ型」という単語があれば、まず ISO 標準 Pascal に対応していません2。これが一つの目安になるかと思います。

ideone.com

ideone.com では GNU Pascal (GPC) と Free Pascal (FPC) が使えますが、コンパイラモード指令でコンパイラの振る舞いを変更することができます。

GNU Pascal (GPC) の場合

{$Extended Pascal} を明示しないと Extended Pascal (ISO/IEC 10206) モード にならないものだと思っていましたが、コンパイラ指令なしで Standard Pascal (ISO/IEC 7185) / Extended Pascal (ISO/IEC 10206) が使えるようです。

program ideone;
const 
  Num = 2#10101010; 
begin
  Writeln(Num);
end.

上記コードは 170 を表示します。

Free Pascal (FPC) の場合

{$mode ISO} で Standard Pascal (ISO/IEC 7185) モード
image.png
{$mode extendedPascal} で Extended Pascal (ISO/IEC 10206) モード。但し未実装が多く、モード自体もまだ実装されていないようです。
image.png
{$mode DELPHI} で Delphi モード (ANSI)
image.png
{$mode DelphiUnicode}} で Delphi モード (Unicode)
image.png
詳しくは Free Pascal のコンパイラモードを参照してください。

PASCAL-P5

純粋な標準 Pascal を試すための方法を別記事で書いてみました。

おわりに

2/14 は Delphi の誕生日で、翌 25 日は Wirth 先生の誕生日なのでこんなのを書いてみました。

訳書は図書館の蔵書が放出されたのが安く出回っているようなので、Pascal 好きな方は一冊確保しておくといいかと思います。冗談めいて書きましたが、この本は本当に C 言語における K&R みたいなものなので。

原書も訳書も見た目では第何版なのか判りにくいので購入される際はご注意を。原書はともかく訳書は原書第 4 版ベースの 1993 年版だけあればいいかと思います。


  1. 多分、僕しかそう呼んでいない (w 

  2. あるいは古めの Turbo Pascal を対象にしているかです。 

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした