Pascal/Delphi

昔の大学の教育用言語の標準

UNIXC言語が一般的になるより以前、大学などの教育機関で学生にプログラミングを教える時の言語として一般的だったのはPascalでした。
今では、UNIXが普及した影響から、C言語を教えることが多く、また最近では教育ではJavaPythonが教えられることも増えていますが、以前はPascalが標準的でした。
僕はDelphiPascalのコードを少しだけ書いた経験があります。
実際のところ、Pascalは教育用としてとても良い言語で、特にDelphiで使うのがおすすめです。それは、Object Pascalを使いながらRADのフォームデザイナーを操作することで、「僕がやりたかった素敵なプログラミング」ができるからです。
Pascalは、代入に「=」ではなく「:=」を使い、また変数の宣言部と手続きの記述部と分けるなど、「きちんとしたプログラミング」を行うための入門的な要素が多いです。

DelphiによるPascal

ボーランド、現エンバカデロ社で開発・販売されているDelphiは、とても教育目的のために優れた環境です。
DelphiにおけるPascalは可読性が高く、コードを読んで何が書かれているのかを把握しやすいです。フォームデザイナーも一級品で、コンポーネントとオブジェクト・インスペクタを使うことで、簡単にプロパティやイベントを設定でき、コンパイル速度や実行速度も速いです。

Delphiによるプログラミング

Delphiでは、まず、RAD(ポトペタとも呼ばれる。VBなどのようにウィンドウをグラフィック操作で実際に表示されるような画面で編集できるエディタのこと)なフォームデザイナーを使ってフォームにコンポーネントを配置します。プロパティの値を変えれば、フォームデザイナー上のコンポーネントに即座に反映されます。
また、コンポーネントのイベントにコードエディタで作成したコールバック関数を登録します。この関数の中で、コンポーネントのプロパティを変更したり、コンポーネントを動的に作成することもできます。もちろん、計算や条件分岐・繰り返しなどの構文も可能ですが、そのためにはObject Pascalという言語を使います。コードエディタでは自動補完のような機能を使うことができ、またイベントエディタ(オブジェクト インスペクタ)の項目をダブルクリックすることでコードエディタを開いて自動的に関数を作ることもできます。
コンポーネントを自分の手で開発することもできます。たとえば2ch専用ブラウザのOpenJane Doeがやっているように、IEコンポーネントを使わずに、ネットワークからダウンロードしたデータを整形して、ビューに表示する軽量なビューコンポーネントを作成したりすることが考えられます。
DelphiではObject Pascal言語を使います。この言語はとても洗練されており、Pascalという教育用言語をオブジェクト指向に拡張したもので、冗長に見えるところもありますが可読性に優れており、BASICなどに比べて生産性が高いことで有名です。
また、Windows APIに比べてはるかに機能的で使いやすいVCLというライブラリを提供しており、これを使ってプログラミングを行うことができます。C++を使いたい場合は、C++VCLの使えるC++ Builderなどの製品もあり、人気です。近年ではクロスプラットフォーム性も重要視されていて、(少し古い情報になりますが)昔リリースされていたKylixというLinux版のDelphiを使うことで、Delphi/VCLで書かれたアプリケーションをLinux/CLX向けに展開することができました。

パネルとプロパティとイベントだけで何でもできる

Delphiの一番の特徴は、「フォームにパネルを追加して、プロパティとイベントをいじながら、コード補完でコードを書いていくだけで、簡単にプログラムが書ける」ということです。
実際のところ、テキストエリアやツリービューのようなパネルをどんどん追加していって、プロパティをいじるだけでUIをいじることができます。
その上で、コードエディタでDelphiの分かりやすいコードを書いて、VCLのとても整然としたライブラリのクラスやメソッドを、それも覚えやすく規則的なメソッドや型を追加していくだけで、プログラムが完成します。
決して簡単ではありません。独自にコンポーネントを作るためには、それなりの知識と技術が必要です。
ですが、僕はこうしたDelphiの特徴が大好きで、本当に素晴らしいと思います。僕はMicrosoft製品の中ではC#が好きですが、Delphiの開発陣を引き抜いて開発しただけはあると思います。Delphiは最高です。

教育用言語としてはBASICのライバル

DelphiPascalという言語をベースにしていますが、Pascalは教育用として優れた言語で、教育用言語としてはBASICのライバルです。
Visual BasicDelphiのインターフェースや開発・管理・設定のスタイルは良く似ています。ですが、「簡単な言語」というイメージのBASICと比べ、「読みやすく、理解しやすく、コンピュータ技術とはどういうものなのか、プログラミング言語での開発とはどういうものなのかを学ぶ」という意味で、僕はDelphiの方に分があると思います。
Visual Basicと似ているのは、コードデザイナーでの開発の方法や、プロパティやイベントなどの登録の方法も同じです。僕はVBを触る以前にDelphiを触ったため、「こんなにも分かりやすく便利でコンピュータのことが良く分かる環境はない」と思いました。今、VB.NET/C#を触っても、その想いは変わっていません。Delphiが一番優れたツールだと思います。
僕は昔、Delphiの応用として(と言って良いかは分かりませんが)、C#Windows.Formsの開発が好きでした。これは、C#の開発陣にDelphiの開発メンバー幹部をマイクロソフトが引き抜いたことに理由があると思います。DelphiC#は、理想が同じです。Delphiの魂が分かる人には、C#の良さも分かると思います。

VCL/CLX

DelphiVCL/CLXライブラリは、高度なオブジェクト指向の使いやすいライブラリとして人気があります。
素のWindows APIMFCを使うよりも、はるかに分かりやすくて、使いやすいです。

コンポーネント

Delphiはたくさんのコンポーネントが(有料ですが)付属しています。

フォームデザイナー

Delphiには、フォームデザイナーが付属しています。VBなどと同じように簡単に開発出来ます。
コンポーネントの追加は直感的で、イベントやプロパティの操作も使いやすいです。

コードエディター

Delphiのコードエディターでは、Delphi言語(Object Pascal言語)でコードを書いていきます。

イベント・メソッド・プロパティ

Dephiでは、イベントやプロパティの操作が直観的であり、登録や値の変更をGUIで行うことが出来ます。
Delphiはイベントに応じたメソッドなどの登録と実行を、「イベントドリブン」で行うことができます。VBに負けない特徴ですが、VBよりも洗練されたコンポーネントを使って、イベント駆動を高度に行えます。これはとてもパソコンの仕組みとプログラミングの方法を分かりやすく、エレガントに教えてくれます。
メニューやツールバーなどのコンポーネントとアクションリスト(メソッドの登録一覧のようなもの)のようなコンポーネントを使うことで、とても直感的にウィンドウプログラミングが行えます。また、ネイティブな実行ファイルを吐くこと、そして軽くて高速であることはとても大きな強みです。

エンバカデロの下、とても進歩している

Delphiは、現在、エンバカデロという会社で開発・販売されていますが、エンバカデロは馬鹿な会社に見えて、Delphiはどんどん進歩しています。
たとえば、クロスプラットフォーム性が上がっています。macOSやモバイル端末でも、同じコードベースからコンパイルしてビルドできます。Linux向けのサーバー製品や、InterBaseというデータベース製品もあります。
RADツールや、Pascal言語、VCLライブラリなどによる、驚異的な生産性はそのままで、とても賢い製品になっています。
僕の知っていたDelphiの時代は、ボーランドによるDelphi 6のパーソナル版が無料で配布されていて、僕はDelphi 7を買いました。そして、Delphiの言語リファレンスが書かれた書籍がついてきました。そのごろはKylixLinux版のDelphi)や.NETの対応(ほぼDelphiそのままのコードで.NET Framework向けのビルドができる)が進められていましたが、今のDelphiはそれとは比にならないほど進歩しています。
ですが、エンバカデロという社名が悪いのでしょう。今はまた新しい会社に買収されています。これほど賢い技術なのに、発見もされず、使いたい人も居ません。とてももったいないことだと僕は思います。もう一度無料版のDelphiを提供すべきではないかと僕は思っています。

簡単な説明

Delphiについて

DelphiはObject Pascalによる高い生産性や可読性と、イベント駆動(プロパティやイベントにメソッドを登録する)が売りのGUI開発ツール
RAD(ポトペタとも呼ばれる)による高い生産性のため、一部でとても人気があった
クラスライブラリであるVCLWindows APIを生で使うよりもはるかに使いやすい
C#の開発チームはMicrosoftDelphiから引き抜いたチームが設計・開発しており、C#が使いやすいのはそのためだと言われている