LoginSignup
17
8

Delphi のご先祖を辿る

Last updated at Posted at 2018-12-01

はじめに

これは Delphi Advent Calendar 2018 の 2 日目の記事です。

Delphi のご先祖

早速ですが、Delphi のご先祖を辿ってみましょう。

現在の Delphi のご先祖?

現在の Delphi は 1996 年の Delphi 2 (32bit 版) がベースになっていると考えていいと思います。

image.png

Delphi 2 の時点で基本的な構成は固まっており、Delphi 1 のコードを Delphi 2 向けに変更するよりも、Delphi 2 のコードを最新版 Delphi 向けに変更する方が簡単なんじゃないかと個人的には思います。

image.png

See also:

Delphi 1 (1995 年)

Delphi は 1995/02/11 に最初のバージョンがリリースされました。これは Windows 3.1 で動作する 16bit 版でした。

image.png
image.png

  • ネイティブコードコンパイラ、ビジュアル開発、データベース処理のすべてを統合した開発ツールです。
  • Turbo Pascal の機能を大幅に拡張した Object Pascal を採用しています。
  • Delphi 自身のバージョンは 1.0 ですが、コンパイラとしては、Turbo Pascal を継承しており、バージョン 8.0 相当します。
  • クラスライブラリとして Visual Component Library (VCL) が導入されました。
  • Delphi は 1995 年の Jolt Awards (Languages & Development Environments 部門) を受賞しています。
  • Delphi (Desktop) と Delphi Client/Server という 2 つの SKU がありました。
  • 日本では Delphi (Standard) と Delphi and Database Tools という 2 つの SKU がありました。Delphi (Standard) は日本独自の低価格版です。
  • 価格は $499.95 (Desktop) / $1999.95 (Client/Server) でした。
  • 日本での価格は ¥29,800 (Standard) / ¥68,000 (Delphi and Database Tools) でした。

このバージョンはアンティークソフトウェアとして公開されています。

16bit アプリケーションは 64bit Windows では動作しないので、32bit Windows で動作させるか、OTVDM (winevdm) を導入する必要があります。

条件シンボル
VER<nnn>
製品
VER80 Borland Delphi 1

Borland Pascal with Object 7.0 / Turbo Pascal 7.0 for DOS (1992 年)

Borland Pascal (1992 年) は Windows / MS-DOS / DOS エクステンダの開発が可能でした。1992/10/27 リリース。1992/11/02 出荷開始。

image.png

『Borland Pascal with Object 7.0』は開発環境スイートです。『Turbo Pascal for Windows 1.5』相当の Windows 用開発環境である『Borland Pascal 7.0 for Windows』と MS-DOS 用の開発環境である『Turbo Pascal 7.0 for DOS』が含まれます。

また、『Borland Pascal with Object 7.0』付属の『Turbo Pascal 7.0 for DOS』には前版の『Turbo Pascal 6.0 Professional』の Professional 部分に相当するツールが含まれます。

Windows 用のエントリーレベルのプログラミングツールとして『Turbo Pascal for Windows 1.5』はそのまま残され、MS-DOS 用のエントリーレベルのプログラミングツールとして『Turbo Pascal 7.0 for DOS』の単体パッケージが新たに追加されました。

以下『BYTE』誌 1993/01 P.54 からの引用です。

TP 7.0 is positioned as an entry-level language. It's for programmers who want to write DOS applications in real mode (i.e., 8086/8088 compatible) and learn object-oriented programming.
Next up the ladder is Turbo Pascal for Windows 1.5, a Windows-only package that remains unchanged.
BPO 7.0 is the high-end package for professionals who want to write Object-oriented code for either DOS or Windows. It was created by combining all that comes with TP 7.0 and TPW 1.5 and adding some additional goodies as well.

リリース Windows MS-DOS
1992/06/08 Turbo Pascal for Windows 1.5
1992/10/27 Borland Pascal 7.0 for Windows
(Borland Pascal with Object 7.0)
Turbo Pascal 7.0 (Professionl) for DOS
(Borland Pascal with Object 7.0)
1992/10/27 Turbo Pascal 7.0 for DOS
  • DLL の作成が可能です。
  • コードエディタ (TP 7.0) で構文強調表示をサポートするようになりました。
  • break continue が使えるようになりました。
  • Borland Pascal with Objects は 1992 年の Jolt Awards (Languages & Development Environments 部門) を受賞しています。
  • 日本語版は未リリースです。
  • Turbo Pascal 7.0 for DOS の単体版に Professional グレードはありません。
  • Borland Pascal with Object 7.0 の価格は $495 でした。
  • Turbo Pascal 7.0 for DOS の価格は $149.95 でした。
  • Turbo Pascal 7.0 はフランス語版でのみ、フリーウェアとして公開された事があったようです。
条件シンボル
VER<nnn>
製品
VER70 Borland Pascal 7.0 (内包する TP 7.0)
Turbo Pascal 7.0

See also:

Turbo Pascal for Windows 1.5 (1992 年)

Windows 3.1 で動作する Turbo Pascal です。1992/06/08 リリース。

image.png

  • IDE は Windows 上で動作します。
  • Turbo Pascal 7.0 のベースとなっています。
  • コードエディタ (Windows) で構文強調表示をサポートするようになりました。
  • 日本語版は未リリースです。
  • 価格は $149.95 でした。
条件シンボル
VER<nnn>
製品
VER15 Borland Turbo Pascal for Windows 1.5

Turbo Pascal for Windows 1.0 (1991 年)

Windows 3.0 で動作する Turbo Pascal です。1991/02/13 リリース。

image.png

フォームデザイナのない Delphi みたいなもので、『Microsoft Visual C++』の Turbo Pascal 版といった感じの製品でした。Macintosh 向けの各種 Pascal にも似ているかもしれません。

  • IDE は Windows 上で動作します。
  • Turbo Pascal 6.0 がベースとなっています。
  • ヌル終端文字列 (ASCIIZ) に対応。PChar 型が追加されました。
  • クラスライブラリとして Object Window Library (OWL) が導入されました。
  • 『Resource Workshop』や『Turbo Debugger for Windows』 が付属しています。
  • 日本での価格は ¥29,800 でした。
条件シンボル
VER<nnn>
製品
VER10 Borland Turbo Pascal for Windows 1.0

Turbo Pascal 6.0 (1990 年)

MS-DOS 用の Turbo Pascal です。1990/10/23 リリース。

image.png

  • Turbo Vision が使えるようになっています。
  • IDE が Turbo Vision で書き直されており、マウスもサポートされています。
  • マルチウィンドウ対応。
  • forward が予約語ではなくなりました。標準 Pascal 同様に 指令 (directive) となっています。
  • インラインアセンブラが使えるようになっています。
  • 80286 コードの生成が可能になりました。
  • Turbo Pascal 6.0 と Turbo Pascal 6.0 Professional という 2 つの SKU がありました。
  • Turbo Pascal 6.0 Professional には Turbo Debugger & Tools が含まれています。
  • 価格は $149.95 / $299.95 (Professional) でした。
  asm
    mov ah,O        { Read keyboard function code }
    int 16H            { Call PC BIOS to read key }
    mov CharCode,al             { Save ASCII code }
    mov ScanCode,ah              { Save scan code }
  end;

従来は以下のようなインライン機械語しか使えませんでした。

procedure UpperCase(var Strg: Str); {Str is type string[255]}
{$A+}
begin
  inline(  $2A/Strg/  {     LD  HL,(Strg) }
           $46/       {     LD  B,(HL)    }
           $04/       {     INC B         }
           $05/       { L1: DEC B         }
           $CA/*+20/  {     JP  Z, L2     }
           $23/       {     INC HL        }
           $7E/       {     LD  A,(HL)    }
           $FE/$61/   {     CP  'a'       }
           $DA/*-9/   {     JP  C,L1      }
           $FE/$7B/   {     CP  'z'+1     }
           $D2/*-14/  {     JP  NC,L1     }
           $D6/$20/   {     SUB 20H       }
           $77/       {     LD  (HL),A    }
           $C3/*-20); {     JP  L1        }
                      { L2: EQU $         }
end; 
条件シンボル
VER<nnn>
製品
VER60 Borland Turbo Pascal 6.0

Turbo Pascal 5.5 (1989 年)

MS-DOS 用の Turbo Pascal です。1989/05/02 リリース。

image.png

このバージョンからが オブジェクト指向拡張された Pascal であり、これより前の製品はオブジェクト指向言語ではありませんでした。つまり "Turbo Pascal はオブジェクト指向言語である" というのは正確ではありません。オブジェクト指向拡張されたバージョンとそうでないバージョンがあるからです。

image.png

そして、意外に思われる方も多いかもしれませんが、このオブジェクト指向拡張の元を辿れば Apple の Object Pascal (MPW Pascal コンパイラ) 由来なのです (1986 年)。

Borland はこのオブジェクト指向拡張された『Turbo Pascal』を『オブジェクト指向拡張 (Object-Oriented Extensions)』とか『(Turbo) Pascal with Objects』と呼んでおり、少なくとも当時は『Object Pascal』と呼んだ事はなかったようです (マニュアルにも記載がない)。

  • Turbo Pascal 5.5 と Turbo Pascal 5.5 Professional という 2 つの SKU がありました。
  • Turbo Pascal 4.0 以前 -> 5.5 へのアップデート価格は $75 (送料・手数料別) でした。
  • Turbo Pascal 5.0 -> 5.5 へのアップデート価格は $34.95 (送料・手数料別) でした。
  • Turbo Pascal 5.0 Professional-> 5.5 Professional へのアップデート価格は $99.95 (送料・手数料別) でした。
  • 日本での価格は ¥29,800 / ¥59,800 (Professional) でした。

このバージョンはアンティークソフトウェアとして今でもダウンロードできます。

16bit アプリケーションは 64bit Windows では動作しないので、DOSBOX 等で動作させるといいでしょう。

条件シンボル
VER<nnn>
製品
VER55 Borland Turbo Pascal 5.5

Turbo Pascal 5.0 (1988 年)

MS-DOS 用の Turbo Pascal です。1988/08/24 リリース。

image.png

  • オーバーレイが復活しました。但し、使用方法が異なります。
  • オーバーレイやエディタが EMS (Expanded Memory Specification) をサポートするようになりました。
  • ソースレベルデバッガが統合されました。Turbo Debugger が使えるようになっています。
  • ステップ実行ができるようになりました。
  • 変数の値のウオッチが可能になりました。
  • Turbo Pascal 5.0 と Turbo Pascal 5.0 Professional という 2 つの SKU がありました。
  • Turbo Pascal 5.0 Professional には Turbo Assembler & Debuger が含まれています。
  • 価格は $149.95 / $250 (Professional) でした。
条件シンボル
VER<nnn>
製品
VER50 Borland Turbo Pascal 5.0

See also:

Turbo Pascal 4.0 (1987 年)

MS-DOS 用の Turbo Pascal です。1987/11/20 リリース。

image.pngimage.png

  • COM 形式だけでなく EXE 形式の実行ファイルを生成できるようになりました。
  • CP/M のサポートは打ち切られています。
  • 統合開発環境 (IDE) が全面的に書換えられています。
  • コマンドラインコンパイラ (TPC.EXE) が使えます。
  • program 名はユニークである必要があります。program 名はラベルではなくなりました。
  • uses 句 (ユニット) はこのバージョンから使えるようになりました (MS-DOS 版)。
  • インクルードファイルのネスト (8 階層) が可能になりました。
  • いくつかの型、定数、ルーチンは別ユニットに移動しました。このため、uses 句にユニットを記述しないと使えない機能が出てきました。
  • 使われないルーチンがリンクされなくなりました。
  • コンパイラ指令が刷新されました。前バージョンとは意味の異なるものも多いです。
  • {$IFDEF} コンパイラ指令が使えるようになりました。
  • 現在の ShortString 相当の String が使えるようになりました。従来は String[80] のように長さを指定してユーザー型として定義する必要がありました。
  • 整数型に ShortInt(Int8), Word(UInt16), LongInt(Int32) が追加されました。
  • 実数型に Single, Double, Extended, Comp 型が追加されました。
  • 汎用ポインタ型 Pointer が追加されました。
  • 型キャストが強化され、構造が同じであれば型キャストが可能になりました。
  • Addr() の代わりに使える @ 演算子が追加されました。
  • Chain() およびオーバーレイが使えなくなりました。
  • 価格は $99.95 でした。
条件シンボル
VER<nnn>
製品
VER40 Borland Turbo Pascal 4.0

Turbo Pascal for the Mac 1.0 / 1.1 (1986 年)

短い間ですが、Macintosh 用の Turbo Pascal も発売されていました (1986/11?)。

image.png

Turbo Pascal for the Mac では exit が使えたり uses (ユニット) が使えたりします (リソースを埋め込むための {$R} コンパイラ指令もあります)。言語仕様的には他機種用の ver3.0~4.0 相当のようです。

@ 演算子が使えるようになっている事からして、Apple 製 Lisa / Macintosh 用 Pascal を研究した結果を Turbo Pascal for the Mac に反映し、Turbo Pascal 4.0 へも導入したのかもしれませんね。

余談ですが、初めて『Turbo Pascal for the Mac』の広告が載った『Mac World』誌 1986 年 11 月号の PP.119-123 には Object Pascal の記事「Object Orientation」があり、以下のようなコードが載っています。

PROCEDURE TClearAllCmd.DoIt; OVERRIDE;
VAR graphicsDocument: TGraphicsDocument;
BEGIN
  graphicsDocument := TGraphicsDocument;
  graphicsDocument.fHeadOfGraphicsLinkedList := NIL;
  graphicsDocument.SelectGraphicsEntity(NIL);
  SELF.InvalidateEverything;
END;

Apple は随分と先を行っていたのですね。

『Turbo Pascal for the Mac』では Macintosh 固有の機能も使えたようですが、クラスではなくレコード + メソッドで行なうプログラミングにはかなり無理があったと思われます。短命に終わっている一因もここら辺にありそうです。

  • uses 句 (ユニット) はこのバージョンから使えるようになりました。
  • 整数型に LongInt(Int32) が追加されました。
  • 実数型に Double, Extended 型が追加されました。
  • @ 演算子が追加されました。
  • ver 1.1 (1987 年) は Macintosh II をサポートしたバージョンです。32bit MPU (68020) に対応するパッチが行われています。
  • 価格は $99.95 でした。

See also:

Turbo Pascal for Amiga (1985 年)

キャンセルされた Amiga 用の Turbo Pascal です。

image.png

MPU が同じ MC68000 である Macintosh 版の開発に寄与したそうです。

Turbo Pascal 3.0 (1985 年)

CP/M, MS-DOS 用の Turbo Pascal です。日付ははっきりしませんが、1985 年のリリースです。少なくとも 1986/09/17 リリースではないと思われます (これは 3.02A のリリース日?)。

image.png

『BYTE』誌 1985/07 (Vol.10 No.7) P.41 に Turbo Pascal 3.0 の広告が掲載されていますからねぇ?日本でも 1985/08 にリリースされていますし?

  • Turbo Pascal 3 は Intel 8087 数値演算コプロセッサに対応する初めてのバージョンでした (TUBO-87.COM)。
  • 16bit バージョンでは BCD 演算にも対応しています (TUBOBCD.COM)。
  • ファイル処理ルーチンの拡充。
  • コマンドラインパラメータの追加 (エディタ)。
  • コマンドラインパラメータを処理できるようになりました (ParamCount(), ParamStr())。
  • Exit が使えるようになりました。
  • コンパイラ自体の性能も向上しており、(何をもってか不明ですが) 2.0 より二倍速いという触れ込みでした。
  • 価格は $69.95 でした。

このバージョンはアンティークソフトウェアとして今でもダウンロードできます。

今だとマイコンボードで動作させる事も可能です。

image.png
image.png

Turbo Pascal 2.0 (1984 年)

CP/M, MS-DOS 用の Turbo Pascal です。1984/04/17 リリース。

image.png

  • 販売後しばらくは ver1.0 のマニュアルがそのまま付属していたようで、ver2.0 の機能が載っていなかったようです。このため、ver 3.0 リリース後に刊行された書籍には、ver2.0 で実装された機能であるのに、ver3.0 の新機能であるかのように書かれたものがあります。
  • オーバーレイの追加。
  • Mark() & Release() に代わる Dispose() の追加。
  • MS-DOS 版はグラフィック機能やサウンド機能が追加されています。
  • 価格は同じく $49.95 でしたが、Turbo Pascal 1.0 を所持していれば $29.95 で購入できたようです。

オーバーレイというのはバンク切り替えみたいな...英語 Wikipedia のオーバーレイ説明図が解りやすいですね。

image.png

要は (空き) メモリ以上のプログラムを実行するための技術です。

See also:

Turbo Pascal 1.0 (1983 年)

CP/M, MS-DOS 用の最初の Turbo Pascal です。メニューシステムと WordStar ライクなエディタが組み込まれています。1983/11/20 リリース。

  • 高速なコンパイル
  • オンメモリでのコード生成
  • エディタのキー設定カスタマイズ (TINST)
  • 価格は $49.95 でした。

image.png image.png

このバージョンはアンティークソフトウェアとして今でもダウンロードできます。

雰囲気だけでも知りたければブラウザで動作する Turbo Pascal があります。

PolyPascal (1984 年)

PolyPascal は CP/M (CP/M-80, CP/M-86) 及び DOS (MS-DOS, PC-DOS) 用の Pascal で、開発元は PolyData MicroCenter です。$500 程度で売られていたようです。

Compas Pascal (1982 年)

Compas Pascal はフルセットの CP/M 用 Pascal で、開発元は PolyData MicroCenter です。

バージョン 説明
1982 1.00 CP/M-80 用 サブセット。
1983/07 1.01 CP/M-86, MS-DOS 用開発版。
1983/09 3.01 フィールドテストバージョン。
1983/10 3.02 Turbo Pascal 1.0 のベース
1984/07 3.10 名称を PolyPascal に変更

Blue Label Software Pascal (1981 年)

Blue Label Software Pascal (BLS Pascal) はシングルボードコンピュータキット Nascom 用の Pascal で、開発元は PolyData MicroCenter です。BLS Pascal は Pascal のサブセット実装でした。

この Blue Label Software Pascal がアンダース・ヘルスバーグが世に出した最初の Pascal だと言われています。

BLS Pascal は英国の Lucas Logic にもライセンス供与され、NASCOM PASCAL という名前でも販売されていたようです。

image.png

何度も出てくる PolyData MicroCenter はデンマークのコペンハーゲンに本社を置く会社でヘルスバーグが設立、所属していました。Compas Pascal を Borland にライセンス供与したものが Turbo Pascal のようで、Turbo Pascal 発売後も Compas Pascal (3.10 で Poly Pascal に改名) は販売されていました。

そうなると Blue Label Software という会社 (?) にも興味は沸きますが、こちらについては殆ど情報がありません。PolyData MicroCenter が商標を持っているようですが...?

BLS Pascal をエミュレータで動かす

Nascom にはエミュレータがあり、この BLS Pascal を試すことができます。

  1. The Nascom Home Page (nascomhomepage.com) へ行く。
  2. 下にスクロールすると BLUE LABEL SOFTWARE PASCAL というのがあるのでその画像をクリック。
  3. blspas.nas というファイルがダウンロードされる。
  4. Nascom 2 JavaScript emulator 0.2 (thorn.ws) へ行く。
  5. [Load NAS:] で、blspas.nas を読み込ませる。
  6. エミュレータで E1000 とタイプする。

image.png
操作方法は Turbo Pascal に限りなく近いです。

コマンド 機能
E エディタ起動。終了は Ctrl+X
C コンパイル
R 実行

FIZZBUZZ を書いてみました。

image.png

37 年前のコードが、

image.png

最新版 (記事作成時点) の Delphi 10.3 Rio でも動作するのが感慨深いですね。

おわりに

この記事の元になっているのは、2008 年に書かれた以下の記事です。

日本語版 Wikipedia の Turbo Pascal のページに書かれているリリース日の多くは PC-98 版の発売日だと思われます。

調べた結果からすると、より詳しくは、

BLS Pascal -> Compas Pascal -> Poly Pascal
                            -> Turbo Pascal -> Turbo Pascal 
                                            -> Borland Pascal           -> Delphi
                                            -> Turbo Pascal for Windows

こうなんじゃないかと思います。製品ラインが解りづらいのはもはや伝統ですね (w

BLS -> Compas -> Poly -> Turbo の流れについては、一見何の関係もないオープンソースのビジネス戦略についての書籍 "Innovation Happens Elsewhere - Open Source as Business Strategy -" のイントロダクションに書かれていました。

image.png

この書籍は Creative Commons Attribution-NonCommercial-ShareAlike 3.0 で公開されており、誰でも自由に読む事ができます。以下、当該ページです。

ASCII.jp の記事も併せて読むと面白いと思います。

この記事に出てくる共同設立者の一人である Mogens Glad 氏が Turbo Pascal で評判のよかった WordStar 互換エディタを書いたとか。

余談

最近、マイコンボード上の CP/M で Turbo Pascal を動かしていました。

image.png

私自身は MS-DOS の時代だと Turbo C++ を触っていたので Turbo Pascal をリアルタイムで触ったことはなく、後になってアンティークソフトウェアで TP 5.5 をちょっと触ったくらいでした。Pascal という言語を本格的に触ったのは Windows 3.1 の Delphi 1 からです。

追体験して解ったのですが、CP/M の Turbo Pascal はオーパーツとしか思えませんでした。こりゃ売れるわ、と。そしてさらに興味を持ったので、昔さらっと読んだ記事を精査してみようと思った訳です。

ん?

ちょっと待って。そうすると神野甘音は(さん)じゅうななさいという事に...

image.png

おや、誰か来たようだ、こんな時間に誰だろう?

17
8
8

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
17
8