Pascalの進化に貢献した機能は何ですか?


17

Pascal言語の詳細な履歴を編集していますが、いくつか欠落している詳細があります。

今日、非常に多くの機能がありますが、当然のことです。Pascalの進化に大きく貢献したのはどの機能で、なぜ重要なのですか?

プラットフォームやフレームワークの機能ではなく、言語の機能を探しています。そのため、演算子のオーバーロードやデフォルトのパラメーターに似ていますが、Linuxサポートや新しいリッチテキストウィジェットではありません。

Pascalにはいくつかの異なるフレーバー(Delphi、Free Pascal、Oxygene、Quick Pascal、Apple Pascalなど)があり、同じ機能を異なる時間に並行して導入したことを知っています。それは大丈夫です。Pascal言語全体と、重要なマイルストーンがいつ発生したか(日付、バージョンなど)を見ています。


@Jimあなたの質問は日付のリストを要求しましたが、なぜ誰かがそれを重要だと考えるのかについての入力を求めませんでした。あなたの質問を書き直してその側面を捉え、再開しました。

2
Turbo Pascal製品がPascalの世界に革命をもたらしたことをご存知ですか?IBM PCの世界もそうですか?特に、文字列を修正したためです。

4
UCSD Pascalを忘れないでください!JavaがSunの目にきらめくずっと前に、バイトコード(pコード)を導入しました。
マクニール

1
+1 @Macneil UCSD p-CodeとSmalltalk VMは、最新のマネージドコード(Java、.NET)について話すときにいつも説明するものです。「モダン」なもの(Appsクライアントサーバーの新しいフレーバーであるなど)が大量にあるのを見ると、デジャヴが楽しいです。
Jeroen Wiert Pluimers

1
@Jeroen Pluimers:私はDVCSが「新しい」というこの話にも面白がっています。SunでSCCS / Teamwareを使用し、TorvaldsはBitKeeperを使用しました。CVSを見たとき、CVSが壊れていたことがわかりました(Torvaldsもそうでした)。SVNについて初めて聞いたとき、「ああ、彼らはついに修正した」と思った。しかし、違います。OSSの世界(およびJoel!)は、CVSがすべてを間違って行ったために非常に被害を受けていました。
マクニール

回答:


10

言語の歴史的な観点から、おそらくパスカルの最大の貢献は強力な型安全性でした。その戦いはほぼ終わりました-パスカルの側が勝ちました-そして産業の転換点はJavaでした。しかし、非常に長い間、Cは、大部分がコーダーを成長させたと考えている人々によってPascalよりも好まれていました。しかし、Pascalの実用的な実装には、判別フィールドを動的にチェックしない共用体のような抜け穴があり、C以外のすべてのポイントへのポインターの本格的な型キャストもありました(Turbo Pascalはこれらの1つでした)。

これと、複雑なALGOL 68仕様[1]の簡略化が出発点かもしれません。

[1] ALGOL 68レポートをいつか読んでみてください-それは間違いなく60年代の製品です!Webのあるサイトでは、「バストークン」、「不可視の生産ツリー」、「原始環境」、「近親相姦」、「概念」、「原始概念」、「メタノション」、「超概念」、「 paranotions 'など


15

パスカルの歴史を通じて最も重要な2つの原動力は次のとおりでした。

  1. 型の安全性:Pascalは、言語において型の安全性が重要かつ重要であるという信念を作成する上で重要でした。
  2. コンパイラーの効率:Pascalは常にシングルパス言語として設計されており、コンパイラーが電力をgivingめずにどれだけ速くできるかを世界に示しました。高速コンパイラーを実現するものは、適切に設計された読みやすい言語を実現するものでもあります。ボーランドの天才は、そのすべてとパフォーマンスも提供することにありました。

PASCALは、コンパイラがPASCAL自体で記述された最初の言語でもなかったのですか?当時のもう1つの注目すべき点は、Pコード-仮想パスカルマシンのコードでした。別のマシンにPASCALを実装するために必要なことは、Pコード用のインタープリターまたはアセンブラーを作成することだけでした。
インゴ

型安全性には、ほとんどのpascalコンパイラで実行時チェックと呼ばれるメカニズムも含まれていたと付け加えます。(ほぼ?)すべてのコンパイラにはそれらがあります。これは、Cコンパイラが好むLINTアプローチとは根本的に異なります。
マルコヴァンデフォールト

11

あなたは本当に起源に戻る必要があります-ニクラウス・ワースの歴史を見つけてください。パスカルは教育言語としての生活を始めました。「アルゴリズム+データ構造=プログラム」が出発点として適切です。

当時、パスカルはアルゴル68やPL / 1よりもはるかにシンプルでした。Fortran4とは異なり、構造と宣言、および強力な型安全性を強制しました(Fortran 77は少し改善しましたが、それでもひどくfast-n-looseをプレイできました)。また、COBOLと比較すると、短く、シンプルで、プログラムの作成が簡単でした。(600ではなく約6行のHello world)。

当初、Pascalには文字配列のようなものがありました-それは文字列処理のためのものでした。物事は長年にわたって改善されました。

Pascalの歴史を詳しく調べたい場合は、次の点を考慮する必要があります。

  • ワースのオリジナル(標準パスカル)
  • Vax上のDigital Equipment Corp(DEC)による拡張
  • UCSD p-System(多くのマシン上、特にApple-2上)
  • ターボパスカル
  • Apollo Domain Pascal(Domain / OSオペレーティングシステムの記述に使用され、Aegisとも呼ばれます)
  • オブジェクトとユニットを含むTurbo Pascal(ver 5.5以降。編集:TP 5.5 OOP PDFが見つかりました)
  • デルファイ

1980年代に、パスカルとCの間に巨大なナメクジが発生しました。両方のキャンプで膨大な量の開発と活動が行われました。

結果として、Bliss-32、Algol、PL / 1のような奇妙で素晴らしいものはほとんどなくなりましたが、これらのアイデアはPascalに持ち込まれました。

編集:文字配列をパックしていくつかの特別なプロパティを付与することもできますが、文字列処理として現在わかっているものが必要な場合は、それを自分で成長させる必要がありました。


IIRCのための特別な処理を少量があったpacked array[1..n] of char;読む(LN)と書き込み(LN)に、例えば
ジェリー

はい、readln、writelnは、可変数の文字の入出力を処理できるという点で少し特別でした。また、1980年代後半には、それらがさまざまな数のパラメーターを受け入れたために、悪意と罪深さを持ち、言語構成を破ったということについて、ちょっとした議論がありました。純粋主義者はこれを嫌っていました。私たちの残りは、それについてあまり心配することなくそれを使用しました。
すぐに

「他の」Wirth言語Modula2のモジュール/ユニットシステムかもしれません。(Pascalの標準でそれを取得するための結果的な努力によって間接的かもしれませんが、構文は異なりますが、最終的にExtended Pascal標準を作成しました)
Marco van de Voort

5

オブジェクト指向の拡張機能!Object Pascalは、90年代半ばのDelphi(1)のリリースで最大の(非公式の)標準跳躍でした。1つだけを選ぶのは難しいのですが、オブジェクトモデル全体のコア全体が、言語を最新の状態に引き上げるのに役立ちました。残念なことに、今日まで、すべてのコンパイラがコーディングの対称性に準拠する公式な単一の統一標準にされていません。

ありがたいことに、Free Pascalプロジェクトの開発者は、BorlandとEmbarcaderoの両方によってDelphiに追加された機能に非常に対応してくれました。RemObjectsはそれほどではありませんが、少なくともDelphi Prismの下ではEmbarcaderoと関係があるため、標準からの逸脱(言語を.NET準拠にするため)は高度に文書化されます。


8
Turbo Pascal 5.5でオブジェクトがPascalに導入されました
mcottle

1
プロシージャと関数はデフォルトで静的でした。virtualキーワードを使用して、サブクラスでオーバーライドできるようにする必要がありました。

1
Virtualは、Delphiの予約語ではありません。Delphiの予約語とPrismキーワードのリストは、ここここにあります
デビッドI

2
オブジェクトはAppleによってPascalに導入されました。 en.wikipedia.org/wiki/Object_Pascal#Early_history_at_Apple
カールマナスター

2
@Carl-古典的なMacがPascalでプログラムされていることを忘れていましたが、Wirthが共同作成したPascalのOOバージョンであることを知りませんでした。
mcottle

4

MS-DOSでPascalを使用していたことから、私は1つまたは2つのことを覚えています。

Turbo Pascalは多かれ少なかれ80年代に一種のIDEを導入しました(そして、UCSD Pascalと比較してコンパイルパフォーマンスが大幅に向上しました)

どういうわけか、90年代半ば頃BorlandはTurboからBorland Pascalに名前を変更しました。最初のステップとして、ユニットを導入しました。これにより、大きなプロジェクトを個別のコンパイルユニットに分割できました。

その後、オブジェクト指向プログラミングも追加しました。


Turbo Pascalはシンプルな製品でした。ボーランドパスカルには、アセンブラーなどの余分なものが

2
Turbo Pascal(v4 IIRC)で導入されたユニット。これらは、現在のdcuファイルの前身である.tpu(ターボパスカルユニット)ファイルにコンパイルされました。それらはWirthのModula-2言語の概念に基づいていたと思います。
ジェリー

1
ISTR UCSD p-Systemにもユニットがありましたが、Turbo Pascalに先行していたかどうかはわかりません。
TMN

興味深いことに、Atari 2600用の「BASIC PROGRAMMING」カートリッジは、1980年にCodeView画面に驚くほど似たプログラミング画面を提供しました。画面の1つの領域でプログラム(現在の実行ポイントが強調表示されている)、2番目の変数の値、3番目の "print"ステートメントからの出力を表示できます。残念ながら、プログラマーが使用できるRAMの量は非常に制約されていたため、単に「おもちゃ」アプリケーションに制限されたわけではなく、あまりおもちゃではありませんでした。それでも...とプラットフォームのための興味深い技術的成果
supercat

...なんと128 バイトのRAM(スクリーンポインターに必要な24バイトを含む)、および4KのROM(キャラクターシェイプを含む)に適合する開発システム全体を備えています。これらの制約を考えると、ユーザーが64バイトのRAMにプログラム、変数、および出力を保持できるようにすることは、非常に巧妙なトリックでした。Atariは、「SARA」チップ(RAMを128バイトから256バイトに倍増)を開発する前に、Basic Programmingをリリースしました。プログラムに128バイトのRAMを使用し、変数と出力に64バイトを使用できると、すべてに64バイトを使用するよりもはるかに優れているでしょう。
supercat

4

Pascalの主要な進化ステップの1つは、ストリングの適切な概念でした。ISO 7185( "Standard Pascal")にはそれらがありませんでしたが、これはちょっと恥ずかしいことです。ただし、すべての実際のプログラマーはそれらを必要とし、実行可能なPascal実装(Borland / Turbo Pascalなど)がそれらを提供しました。


4

DelphiのPascal言語の革新を振り返って-プロパティ、メソッド、イベント(PME)モデルとクラスの「発行済み」セクションを追加します。これにより、ネイティブコードが使いやすくなり、コンポーネントの構築が可能になりました。コンポーネントはBrad CoxのソフトウェアICの約束を実現しました。



3

80年代から90年代初期のパスカルの多くのフレーバーの戦い。

あなたは持っていたアップルパスカルマイクロソフトパスカルとQuickPascal、およびターボパスカルを

いずれもObject Pascalを何らかの形で導入しました(QuickPascal 1.0とTurbo Pascal 5.5は同じ時間枠で導入されました)。Appleはプラットフォームにそれを必要としていたため、MicrosoftとBorlandはOOが「クール」になっていたためです(その後QuickPascalはすぐに消滅し、Turbo Pascal 6.0はTurbo Visionと呼ばれる妥当なOOフレームワークを追加しました)。

これについては、Rudy Velthuisがフォーラムの投稿で完全に説明しています。

DOS 6.22およびその時代のDOS Pascalコンパイラのいくつかを使用してISOイメージをダウンロードできます。


2

インターフェイス(Delphi 3 IIRC)の導入は、最新のオブジェクト指向言語にするために非常に重要だったと思います。


インターフェースの継承はそれ自体オブジェクト指向ではありませんが、ポリモーフィズムの真の形式の1つであると考えられていることに注意してください。COMと同じVMT形式を共有しているため、COMとの相互運用がはるかに容易になりました(これは良いことでも悪いことでもあるという意見が広く知られています<g>)。
Jeroen Wiert Pluimers

2

匿名のメソッドとジェネリックをミックスに追加します。


1
たぶん、Delphiの最新バージョンに。私はDelphi 7まで使用したので、もちろん匿名のメソッドもジェネリックも使用しませんでした!
フランクシェラー


2

私にとって2つの最大のこと(Cなどの他の言語の後...)は、大文字と小文字を区別しないこととコンパイラの速度でした。

そしてその後、フィンランド語のキーボードで書くのが簡単になったという事実があります。なぜなら、{}やその他の届きにくいキーを常に必要としないからです...

私はDelphi2から乗っていますが、仕事で2年ほどD1を使用していました...


1

Dahl、Dijkstra、Hoareによる「構造化プログラミング」から始めます。ダイクストラのセクションは今日でも重要です。データ構造化に関するトニー・ホアのセクションは、PASCALの基礎の多くを築きました。(Dahlのセクションでは、最終的にオブジェクト指向プログラミングになるものについて説明しました。Simula67でクラスになるものについて説明しました。)

ALGOL-60のバリアントのWirthによる実装であるALGOL-Wを調べてください。

また、PL / IおよびIBM 360リンクエディター(リンカー)についても知っておく必要があります。アラスカ州ジュノーでは、1月の糖蜜よりも遅いという軽微な問題を伴う、一般性の驚異でした。PASCALは、高速化のために1つのパスでコンパイルおよびリンクされるように特別に設計されました。(多くのメモリを備えたCDC 6400ジュニアスーパーコンピューターでこの言語が使用されるようになり、ワンパスコンパイラーが実用的になりました。)

実際、ETH ZurichのPASCALには2つのメジャーバージョンがありました。PASCALとして現在誰もが知っている言語は、実際には2番目のバージョンであるPASCAL2でした。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.