フリーソフトの小道   

愛用のフリー・ソフト 第8回
〜 Delphi6(オブジェクトPASCAL) 〜

プログラミング言語の歴史

 プログラミング言語の歴史の最古参のグループとして 科学技術計算処理向きの 「FORTRAN(Formula Transtator)」、 会計データ処理向きの 「COBOL(Common Business-Oriented Language)」、 数式処理などの記号データ処理向きの 「LISP(List Processing)」 などがの代表的な言語としてあげられるが、 それと同時期に、アルゴリズム記述向きの言語として 「ALGOL(Algorithmic Language)」 がありました。

 このALGOLから派生した言語が 「PASCAL」 という言語になります。 したがって、PASCALも随分古い言語の一つで、使用目的としてプログラミング言語学習のために 利用されてきた歴史があります。しかし、一般用途のプログラミング言語としてはそれほど普及しなかった。 理由は明らかに「プログラミング教育目的に特化している」点にありました。 言語の規約(文法で規定されている要素)に自由が少なく、あいまいさを許さないのがその理由といえます。 その対極にあったプログラミング言語が「C [注1]」でした。 「C」言語は言語の規定がゆるく、プログラマの自己責任の元で許される範囲が非常に広かった。 そのため、コンパイラが許してくれる範囲が広くるが、その反面、バグになる恐れが多分にあるというリスクを合わせ持っていました。 プログラマに任される部分が多いことから「C」を愛用するプログラマが増え、 小型のコンピュータ(ミニコン、パソコン)が普及し始めてからの主流言語となっていったのです。 「C」が作られたのは「DEC [注2]」のミニコンシステムの開発に使うために作られたプログラミング言語で、 ミニコンのOS [注3]であった「UNIX [注4]」の中心となる言語として登場したのです。

[注1] C: ミニコンを使いこなす基本ソフトUNIXを構成する中心となるプログラミング言語としてカーニハンとリッチーにより開発された。
[注2] DEC: Digital Equipment Corporation 大型コンピュータの時代からミニコンの時代へと変革の時代に登場したミニコンメーカー
[注3] OS: Operating System 基本的なデータの入出力のプログラムを集約してコンピュータを使いやすくする基本ソフト。 Unix、Linux、Windows、MacOSなどはその代表的なもの
[注4] UNIX: ミニコン用のOSとして始まったが、移植性に優れ、通信機能が豊富なことなど、ネットワークの時代に適応し、現在主流となったOS。 リナックス(Linux)はその派生OS。

 当時、パソコンのCPU [注5]が8ビットから16ビットにパソコンに切り替わろうとしていた 時期(20年前頃)に、8ビットのCPUの世界で使われていた「アセンブラ(機械語)」でのソフト開発を引き継ぐには限界を感じていました。 また、「C」言語が、DECのミニコン開発に使われ、ハードウエアの制御までプログラミングが可能という情報も伝えられ、 「アセンブラ(機械語)」に変わる開発言語として使えるのではとのことから、「C」を勉強するきっかけとなったのです。

[注5] CPU: 中央演算装置(Central Processing Unit) コンピュータの処理機能の中枢。現在では指先ほどの小さなチップとしてLSI化(大規模集積回路化)され、パソコンに入っている。

 日本のワープロ業界の主流となった「一太郎 [注6]」の初代である「Jxw太郎」のとき、 パソコンソフト開発で初めて「C」が登場したのでした(筆者の知っている範囲で)。 その当時「C」を知っていた人はパソコンソフト業界のプロでも非常に少なかった時代で、「C」の参考書もほとんどありませんでした。 当時のパソコンソフトのほとんどは、「BASIC」か「アセンブラ(機械語)」で作られていたからです。
 その頃の「C」言語のコンパイラは市販価格が30万円という高価な価格だったのでアマチュアの人にはなかなか手が届かない高級なコンパイラでした。 当時「C」コンパイラで有名だったのは、「Lattice C」、「Optimizing C」などでした。 しかし、まもなくコンパイラは「Microsoft C」へと流れが変わっていき、現在の「Visual C」至っています。

[注6] 一太郎: 徳島にある「ジャストシステム」による16ビットパソコンの代表的なワープロソフト。当時、圧倒的シェアを占めたが、現在はマイクロソフト・ワードの後塵に甘んじている。

MSDOSからWindowsへの発展と「Delphi」 の登場

 MSDOSの初期では、8ビット時代からの「BASIC」というインタプリタ言語がアマチュアでよく使われていた開発言語です。 その当時登場、アマチュアでも購入できるコンパイラとして「Turbo PASCAL [注7]」が登場しました。 名前の通り、「PASCAL」でハードウエアに直接アクセスする機能などを追加した「拡張PASCAL」でした。 これが今回のテーマ 「Delphi」 の先祖に当たるプログラミング言語処理系です。
 それまでのPASCALは制約が厳しく使いにくいとされていたが、 メモリーやポートに直接アクセスを許したり、ポインターを積極的に導入したりして、 パソコン上での自由度を増すように拡張されたPASCALとなったのだった。 グラフィック処理についてもグラフィックライブラリーを充実し、画像処理ソフトにも対応できるPASCALとなった。 しかし、MSDOSからWindowsへとパソコンOSが変わってゆく中で、 ソフト開発の主流は 「CUI [注8]」 から 「GUI [注9]」 へと移ってゆく。

[注7] TurboPascal: Borland社によるMSDOS初期のプログラミング言語で、安価なコンパイラとして広く使われ、業務ソフト、フリーソフトを含めて多くのソフト制作に活躍した。
[注8] CUI:キーボードを中心として、文字を介したユーザーインターフェース
[注9] GUI:画像をマウスでクリックするなど視覚化された操作を中心とするユーザーインターフェース

「Delphi」 が与えた衝撃とは

 パソコンOSがWindowsに変わり、ソフト開発におけるユーザーインタフェースの部分の負担が非常に大きくなり、 プログラム工数(プログラム作成にかかる時間数)が急激に増加した。 その作業を低減化するためにマイクロソフト社が「Visual BASIC」を、ボーランド社が「Delphi」を送り出したのだった。 前者は中間コード化BASICインタープリタ、後者はPASCALは完全コンパイラであったため、 後者の 「Delphi」 の方が、出来上がったアプリケーションソフトの性能が高かった。 しかし、ソフト開発に携わるプログラマにPASCALを勉強しなおす負担が大きい後者には大きな壁が存在した。 筆者は元々 Turbo Pascal の頃からの PASCALユーザーだった関係で、 Ver.1 の時からずっと愛用の開発システムでした。 その後、Linux OS での開発システムとして Kylix(Delphi互換)が発表され話題にも上った。 現在は、商用ソフト開発でなければ、フリー(無料)で使用できるようになったため、 多くのフリーソフトの開発言語として重用されているようです。
 Windowsでのソフト開発におけるGUI対応の開発ツールでVisualBASICのみの状態だったところを Delphiが打ち破り、しかも、高速コンパイラ言語でもあったため、高性能なソフトが次々と生み出されるようになっていった。 同等の開発手法がとれる「C」システムはなかなか登場しないまま、現在に至っている。

Delphiの便利なところ、不便なところ

 コンパイルが速いことは Turbo Pascal 頃からの特徴を生かし、プログラムの開発効率が良い。 出来上がってアプリケーションはコンパイラであるため、非常に高速である。 また、ライブラリなどがアプリケーションソフトと一体化されているためソフト配布の際に余計な手間が要らない。 アプリケーション開発においてもGUI環境でソフト開発が出来ることなど長所は数多くある。
 これらの特徴で、他のコンパイラ言語を圧倒しているが、最適化のレベルはそれほど高くない。 コンパイラの出す 「コードの質 [注10]」 は マイクロソフトのVCでの最適化最大モードにしてのコンパイラには劣っている。 ビジネスツール開発においては、このような弱点はまったく欠点にはならない。 しかし、「素数発見」など、ソフト実行速度を競うようなプログラム開発には適さない。 筆者は、過去に数千行以上の大規模プログラムの開発を Turbo Pascal や Delphi で行ってきた経過もあり、 簡便なプログラミングツールとして現在も最も愛用している開発ツールの一つである。
 その他のDelphiの弱点として、参考書が少ないこと、教えを請う上級者が身近にいないこと、 Delphiシステムを維持、改良してゆく母体が継続的に続く確約がない(ボーランド社1社 [注11]のため)などがあげられる。

[注10] コードの質: プログラミング言語をコンピュータが理解する「機械語」に変換する作業をコンパイルという。変換に無駄が多いとき「質の悪いコード」といい、実行速度が遅くなる。
     質の良いコンパイラと質の悪いコンパイラでは1桁近く実行速度が変わる(数倍以上)ケースもあるようですが、Delphi はそれほど悪くはない。
[注11] コンパイラの継続性: ソフト開発はそのプログラミング言語修得から熟練まで訓練に時間がかかる。 長く続く保証がないコンパイラはプログラマから避けられる傾向にある。

Delph6を使うには

 Delphiを使うにはBorland社のサイトで、ダウンロードし、 ボーランド社のホームページからインストールキー(無料)をメールで受け取り、インストールとインターネット登録すれば使用可能になる。 必要ならマニュアル等は印刷すれば良いように電子文書化(PDFなど)されて、添付ファイルとして含まれている。 「物理の小道」の資料と同じ形式のPDFだから、アクロバットリーダーさえあれば、印刷して製本すれば立派な参考書となる。 ダウンロードを含めて詳しいことは 「Delphi」サイト http://www.borland.co.jp/delphi/personal/ を調べること。
 なお、Delphi(PASCAL)に関する質問などがあれば、管理人(志)まで、メールを頂ければ分かる範囲で相談に応じます。 プログラミングの勉強は時間がかかります。中途半端な気持ちでは修得は不可能です。ぜひ挑戦してみましょう。



 2004/02/19  管理人(志)


「物理の小道」  2003/11/07創立 (c) H.Takata