Pascal言語の詳細な履歴をまとめていますが、いくつか欠けている点があります。
今日では当然のことと思われる機能がたくさんあります。 Pascalの進化に大きく貢献した機能は何ですか。なぜそれらが重要だったのですか。
プラットフォームやフレームワークの機能ではなく、言語の機能を探しています。つまり、オペレーターのオーバーロードやデフォルトのパラメーターのようですが、Linuxのサポートや新しいリッチテキストウィジェットは違います。
Pascalにはいくつかの異なるフレーバー(Delphi、Free Pascal、Oxygene、Quick Pascal、Apple Pascalなど))があり、同じ機能が異なる時間に並行して導入されていることを知っています。私はPascal言語全体を見ていて、when発生した重要なマイルストーン(日付、バージョン、等。)
言語の歴史的観点から見ると、おそらくPascalの最大の貢献は強力な型安全性でした。その戦いはほとんど終わった-パスカルの側が勝った-そして産業の転換点はJavaだった。しかし、非常に長い間、CはPascalよりも先に、主に自分が成長したコーダーであると考える人々から支持されていました。しかし、Pascalの実用的な実装には、判別フィールドを動的にチェックしない共用体のように抜け穴があり、C以外のすべてのポイントへのポインターの本格的な型キャストさえありました(Turbo Pascalもその1つです)。
これと、複雑なALGOL 68仕様[1]の簡略化が、出発点になる場合があります。
[1] ALGOL 68レポート を読んでみてください-間違いなく60年代の製品です! Web上の1つのサイトで、「バストークン」、「見えない生産ツリー」、「主要環境」、「近親相姦」、「概念」、「プロトコル」、「メタ概念」、「ハイパー概念」、「奇妙な専門用語」について言及していますパラノティオンなど.
パスカルの歴史の中で最も重要な2つの原動力は次のとおりです。
あなたは本当に起源に戻る必要があります-Niklaus Wirthのいくつかの歴史を見つけてください。パスカルは教育言語としての生活を始めました。 「アルゴリズム+データ構造=プログラム」が出発点として適しています。
当時、PascalはALGOL 68やPL/1よりもはるかに単純でした。 Fortran4とは異なり、構造と宣言、および強力な型の安全性を強制しました(Fortran 77は少し改善されましたが、それでもひどくfast-n-looseを再生できました)。また、COBOLと比較して、プログラムを短く、シンプルで、簡単に作成できました。 (Hello Worldは600行ではなく、約6行です)。
それが生まれたとき、Pascalには文字配列のようなものがありました-それは文字列処理のためのものでした。長年にわたって物事は改善しました。
Pascalの歴史を深く掘り下げたい場合は、いくつかの点を考慮する必要があります。
1980年代に戻って、パスカルとCの間には巨大なナメクジフェストがありました。両方のキャンプで、膨大な量の開発と活動が起こりました。
結果として、Bliss-32、ALGOL、PL/1などの奇妙で素晴らしいものがほとんど姿を消しましたが、これらのアイデアがPascalに浸透しました。
編集:いくつかの特別なプロパティを与える文字配列をパックすることができますが、文字列処理として現在知られているものを必要とする場合は、自分で拡張する必要があります。
オブジェクト指向の拡張機能! Object Pascalは、90年代半ばにDelphi(1)がリリースされたときの最大の(非公式の)標準飛躍でした。 1つだけを選択するのは困難ですが、オブジェクトモデルのコア全体が全体として、言語を最新の状態に引き上げるのに役立ちました。残念ながら、今日に至るまで、すべてのコンパイラがコーディングの対称性に準拠する公式の単一の統一標準にはなっていません。
ありがたいことに、Free Pascalプロジェクトの開発者は、BorlandとEmbarcaderoの両方によってDelphiに追加された機能に対応しています。 RemObjectsはそれほど多くはありませんが、少なくともDelphi PrismでのEmbarcaderoとのつながりがあるため、標準からの逸脱(言語を.NETに準拠させるため)は詳細に文書化されます。
MS-DOSでずっと前にPascalを使用して覚えていることは、1つまたは2つだけです。
Turbo Pascalは、多かれ少なかれ80年代にIDEのようなものを導入しました(そして、UCSD Pascalと比較して、コンパイルパフォーマンスは大幅に向上しました。
どういうわけか、90年代半ば頃にボーランドは、名前をターボから ボーランドパスカル に変更しました。最初のステップとして、大規模なプロジェクトを個別のコンパイルユニットに分割できる導入されたユニット。
その後、オブジェクト指向プログラミングも追加しました。
Pascalの核となる進化的ステップの1つは、文字列の適切な概念でした。 ISO 7185(「標準パスカル」)にはそれらがありませんでした。これは一種の恥ずかしいことです。ただし、実際のすべてのプログラマーがそれらを必要とし、実行可能なPascal実装(Borland/Turbo Pascalなど)がそれらを提供しました。
DelphiのPascal言語の革新を振り返って-プロパティ、メソッド、イベント(PME)モデルとクラスの「公開」セクションを追加します。これにより、ネイティブコードが使いやすくなり、コンポーネントのビルドを拡張できるようになりました。コンポーネントは、ブラッドコックスのソフトウェアICの約束を満たしました。
80年代から90年代初頭にかけて、Pascalのさまざまなフレーバー間の戦い。
Apple Pascal 、 Microsoft PascalおよびQuickPascal 、および Turbo Pascal がありました。
すべて導入 Object Pascal いずれかの方法で(QuickPascal 1.0および Turbo Pascal 5.5 ほぼ同じ時間枠)。 Apple彼らは彼らのプラットフォームにそれを必要としたので、MicrosoftとBorlandはOOが「かっこいい」になっていたので(その後QuickPascalはすぐに死に、Turbo Pascal 6.0は妥当なOOフレームワークと呼ばれる Turbo Vision )。
Rudy Velthuisは フォーラム投稿 でこれを完全に完了しています。
DOS 6.22とその時代のいくつかのDOS Pascalコンパイラを含むISOイメージ をダウンロードできます。
Delphi 7とDelphi XEの間の新しい言語機能は、Embarcaderoのこのホワイトペーパーの52ページで説明されています。
http://www.embarcadero.com/images/dm/technical-papers/reasons-to-migrate-to-delphi-xe-white-paper.pdf
私にとって(Cのような他のいくつかの言語の後の)2つの最大のことは、大文字と小文字を区別しないこととコンパイラーの速度でした。
その後、フィンランド語のキーボードを使用して書く方が簡単であるという事実があります。これは、アクセスが難しい{}キーやその他のキーを常に必要としないためです...
私はDelphi2から乗り込んできましたが、数年前からD1を使っていました...
インターフェイスの導入(Delphi 3 IIRCで)は、それを現代のオブジェクト指向言語にするために非常に重要だったと思います。
匿名のメソッドとジェネリックをミックスに追加します。
Dahl、Dijkstra、およびHoareによる "構造化プログラミング" から始めます。ダイクストラのセクションは、今日でも基本です。データ構造化に関するTony Hoareのセクションは、Pascalの基礎をかなり築きました。 (ダールのセクションでは、最終的にオブジェクト指向プログラミングになったものについて話しました。彼はSimula 67でクラスになったものについて説明しました。)
ALGOL-60のバリアントのWirthの実装であるALGOL-Wを調べてください。
同時に、PL/IおよびIBM 360リンクエディター(リンカー)についても知っておく必要があります。アラスカのジュノーで1月に糖蜜よりも実行が遅くなるというマイナーな問題がありましたが、これは一般性の驚異でした。 Pascalは、速度を上げるために1つのパスでコンパイルおよびリンクされるように特別に設計されています。 (これは、言語がCDC 6400ジュニアスーパーコンピューター上で大容量のメモリを備え、1パスコンパイラーを実用的にすることから始まったのを助けました。)
ETHチューリッヒからのパスカルの2つの主要なバージョンが実際にありました。 Pascalとして現在誰もが知っている言語は、実際には2番目のバージョンであるPascal2でした。