9

語源ウィザードへの質問:今日のJava/.NET言語で見られるtry/catch/finally構文を最初に使用したプログラミング言語はどれですか。

4

4 に答える 4

6

私はそれがC++だったと思います、そして私はJava / C#がリソースクリーンアップのために最終的に追加されたと思います(最終的にC ++にはありません)。残念ながら、私には参照がありません...まだ

すべての例外構文のすっきりとしたページ:http: //en.wikipedia.org/wiki/Exception_handling_syntax

C++だと思います。そうでない場合、Stroustrupはクレジットを与える必要があります。彼の論文の中で:http: //www.research.att.com/~bs/except.pdf彼は影響について言及しておらず、彼自身以外の他の資料についても言及していません。

于 2011-05-23T20:32:02.200 に答える
5

TwitterにMikeFikesが投稿しPawełKapałaが私と共有しました:

MacLispはERR、エラーを通知する関数を追加しました。ERRフォームの動的コンテキスト内でが呼び出された場合ERRSET、toの引数がフォームERRの値として返されますERRSET

プログラマーはすぐに、エラーをトラップして通知するのではなく、より一般的な制御目的(動的な非ローカル出口)を使用ERRSETし始めました。ERR残念ながら、この使用はERRSET予期しないエラーも静かにトラップし、プログラムのデバッグを困難にします。プリミティブの新しいペア、CATCHおよびは、 1972年6月THROWにMacLispに導入されました[強調鉱山]。これは、エラートラップの意図された使用のために予約することができます。 ERRSET

ERRSETとの教訓CATCHは重要です。の設計者ERRSETとその後の設計者はERR、特定の状況を念頭に置き、その状況に対処するためのプリミティブのペアを定義しました。しかし、これらの機能は便利で強力な機能(エラートラップと動的な非ローカル出口)の組み合わせを提供したため、プログラマーはこれらの機能を意図しない方法で使用し始めました。次に、設計者は戻って、別のインターフェイスを使用して目的の部分を分割する必要がありました。この慎重な設計、意図しない使用、およびその後の再設計のパターンは、Lispの進化において一般的です。

—ガイ・スティールとリチャード・ガブリエルによる「TheEvolutionofLisp」から

下のツイットからのこのテキストの画像 出典:https ://twitter.com/mfikes/status/881943130588753920

<blockquote class="twitter-tweet" data-lang="en"><p lang="en" dir="ltr">“The Evolution of Lisp,” by Guy Steele and Richard Gabriel</p>&mdash; Mike Fikes (@mfikes) <a href="https://twitter.com/mfikes/status/881950560508940288">July 3, 2017</a></blockquote>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>

于 2017-07-07T18:02:18.037 に答える
2

C ++は、例外を導入した最初の主要なプログラミング言語でした(デストラクタは決定論的であるため、最終的にC ++では必要ありません)。Stroustrupの論文から:http ://www2.research.att.com/~bs/hopl2.pdf

C ++例外処理の設計に最も大きな影響を与えたのは、英国のニューカッスル大学でBrian Randellと彼の同僚によって開始され、その後多くの場所で継続された障害耐性システムの作業でした。

于 2011-05-23T20:57:06.150 に答える
1

CommonLispはC++よりもずっと前から存在しており、以前のLispに基づいていました。もちろん、Javaはこれをよく知っているLispの男性によって作成されました。しかし、JavaはCによってLispで汚染されているため、チェックされた例外仕様もナンセンスに追加されました。

Common Lispはさらに進んで、実際にキャッチがスロールーチンと対話できるようにしました。これには、スローを続行するように指示することも含まれます。キャッチが完了するまで、スタックは単純に巻き戻されませんでした。つまり、スローが失敗するだけでなく、メモリ不足などの警告をスローする可能性があります。

于 2019-07-22T00:35:07.310 に答える