例外はなぜ「投げる」と言う? – 専門用語 英語

質問:


例外 exception は、なぜ投げる throw 受け取る catch する、と呼ぶのでしょうか?
他の動詞でなくて throw/catch が使われたのはなぜでしょう。

質問者: 774RR

Kohei TAMURA

例外処理に関するWikipediaのページにこんな記述がありました。

History
Software exception handling developed in Lisp in the 1960s and 1970s. This originated in LISP 1.5 (1962), where exceptions were caught by the ERRSET keyword, which returned NIL in case of an error, instead of terminating the program or entering the debugger.[11] Error raising was introduced in MacLisp in the late 1960s via the ERR keyword.[11] This was rapidly used not only for error raising, but for non-local control flow, and thus was augmented by two new keywords, CATCH and THROW (MacLisp June 1972), reserving ERRSET and ERR for error handling. The cleanup behavior now generally called “finally” was introduced in NIL (New Implementation of LISP) in the mid- to late-1970s as UNWIND-PROTECT.[12] This was then adopted by Common Lisp. Contemporary with this was dynamic-wind in Scheme, which handled exceptions in closures. The first papers on structured exception handling were Goodenough (1975a) and Goodenough (1975b).[13] Exception handling was subsequently widely adopted by many programming languages from the 1980s onward.

なので、MacLispを設計した人に聞いてみないと、本当のところは分かりませんね。言語によってはthrowではなく、raiseを使うこともあるようです。

例外の、「例外を発生させる」、「コードを追って言って、最初にその例外を受け取れるハンドリングコードに処理をあけわたす」を上手く表す動詞が throw して catch するだったからではないでしょうか。

通常の関数呼び出しcall、その戻りreturnがありますが、例外exceptionはそれらを超越して処理されるため、throw / catchなのだと理解しています。C言語にはsetjmp / longjmpが存在しているのでjumpは避けるべきでしょうし。

Windowsの構造化例外だとraise / except(他にfilterなども)が使われていますね。

出典

Related Posts:

各処理の名称について質問です [クローズ済み] – 専門用語
質問: 以下の項目について、用語としてどう伝えるのが適切が質問です。 曖昧にしてきたところがあり、これを機に正しく認識させたいです。 1.phpのようにひとつの実行プログラムで完結する仕組みの名称 手続き型言語という呼び方だと明らかにおかしいので、困っています。 一挙完結型?一般的にはどのように呼ぶのが適切なのか。 2.フレームで管理する処理の名称 1フレーム、2フレーム、3フレーム・・・でそれぞれ処理をすることを指します。 フレーム間処理? お手数をおかけいたしますが、よろしくお願いいたします。 追記 シングルスレッド、マルチスレッドあたりがニュアンス的に近いですが、2をマルチスレッドというのが若干違和感がある、と考えています。 追記 要領得てないかつ、質問の意図が伝わってないことと、また一部有意義な意見が出たので整理しなおします。 1に関してはひとつの実行スクリプトで完結することの名称の質問です。 2に関しては「フレーム毎に実行される処理」の名称です。 1と2の関係性についてはそこまで深いわけではないですが、1は一般的にはWebアプリケーション、2はゲームプログラミングなどでよく見かけられるものになります。 範囲が広い、というコメントがありましたがそれらの処理の総称なので狭い領域での話ではありません。 今回、Webでの処理とゲームなどで使われるフレーム間の処理それぞれの名称をなんと呼称すべきか、というところが質問です。 (Web開発の経験しかない場合は2がイメージしづらいかもしれません、正しい名称を把握してないのでいまいち要領得ない質問の仕方になっています) 質問者: Transam KoRoN もとの定義をかなり広義に解釈することになるかもしれませんが、以下の様な用語ではいかがでしょうか。 バッチ処理、もしくは命令型プログラミング イベントドリブン、もしくはイベント駆動型プログラミング リンク先はいずれもWikipediaです。 出典
golang における iota の名前の意味は? – go 専門用語
質問: golang において、列挙型を定義するときに、 iota を使うことで、自動インクリメントして値を付与できる、みたいな記述をウェブで見つけました。 質問 iota, とはどういう意味合いの言葉なのでしょうか? というのも、例えば const, enum, int などは何かしらの略語であるので、ある意味覚えやすいのですが、 iota がなぜ iota なのかが自明ではないなと思い、質問しています。 質問者: Yuki Inoue emasaka 直接的にはSchemeのiota関数(源流はAPL)あたり由来でないですかね。意味は「i」に相当するギリシャ文字。 出典
MySQLはDBなのかDBMSなのか – mysql database 専門用語
質問: DBとDBMSについていまいちピンときていない形です。 DBはデータを一元的に管理するファイルでDBMSはDBMSはSQL文を実行するソフトであるものというのは理解しています。 MySQLをDBと言う人がいますがMySQLをインストールすることでSQL文でテーブルを作ったり、内容を変更できるので個人的にはDBMSなのではないかと思っています。MySQLはDBとDBMSのどちらでしょうか。 質問者: kazu 用語質問がこのサイトにふさわしいかどうかは甚だ疑問なのですが、前半ざっくりと済ませて、後半コーディングに関わる話をさせてもらいます。用語そのものに関して調べたいのであれば、Wikipediaなり、各種の技術用語集なりに直接当たられたほうが良いでしょう。ここではそれらへのリンクや引用も控えておきます。 DBMSと言うのはDatabase Management Systemの略で、「データベースを管理するシステム」と言うことですね。細かいことにこだわりだすとキリがありませんが、概ねMySQL, PostgreSQL, SQL Server, DB2...などのソフトウェア(パッケージ・スイート)を表す時に使われている言葉だといって良いでしょう。 それに対して「DB」(「データベース」「database」と表記しても同じ、個人的に区別している人はいるかもしれませんが、多数のコンセンサスを得ているとは言い難い)と言う言葉はもともと「データの基地(base)」と言う意味で、あまり厳密な定義を気にして使われることの少ない用語だと言って良いでしょう。 「お‌​たくのシステムDBには何使ってる?」「去‌​年のバージョンからPostgreSQLで‌​す」 なんて、会話では上のDBMSの意味で使っていると思われます。システム開発に携わっているもの同士での会話でも、「それ『DB』じゃなくて、DBMSのことでしょ」なんて突っ込みは聞いたことがありません。 「RDBとOODBそれぞれのメリットデメリットって何ですか?」 なんて言い方では、後ろの「DB」の部分はデータの保存の仕方、あるいはその背景にある数学的理論を表している、と言うことになるでしょう。 したがって、「MySQLはDBMS」は正解でしょうし、「MySQLはDB」と言うのも間違いではないと言うことになります。ただし、曖昧さが致命的になりうる文脈の中では、単に「DB」と言う言い方はやめておいたほうが良いでしょう。 と言うわけで、私の主観が散りばめられた用語説明はこの辺にして、これ知らないとコーディング(DDLをメインにしたSQLの記述ですが)で困ることになる場合を上げておきます。 それはMySQLをはじめとした多くのDBMSには(標準SQLの定義にも)DATABASEと言う概念が存在するということです。 複数のテーブルやVIEWをひとまとめにしたもので、DBMS上のデータ管理単位の一つ と言う言い方より、 CREATE DATABASE文で作られる何か と言った方がわかりやすいかもしれません。 MySQL 5.6 リファレンスマニュアル CREATE DATABASE 構文 この意味でのDATABASEと言うものが存在するということを知らない人も開発経験者の中にはおられて、「こっちのサー‌​バにはアプリ用と管理用のDBが2つ切って‌​ある」なんて言い方だけで、個人用開発環境の構築は当人にお任せにしてしまうと、本番用構成では動かないSQLを大量生産されてしまう、なんてことになりかねません。 「DB」と言う言葉は大変曖昧に使われることが多く、「うちのDBはMySQLです」なんて言い方も間違いとは言えない。ただし、きちんとした定義に基づいた使い方をする時には、そのことをはっきりわかるようにしておかないとひどい目に会うことがある、と言うのは覚えておいた方が良いかもしれません。 (ちなみにMySQLでのこの意味のDATABASEは1つの「ファイル」にはなっておらず、「データを一元的に管理するファイル」と言うのがどこからきたのか、よくわからないですね。) ...
クロージャーという言葉が指すのは関数自体かそれとも仕組みか – 専門用語
質問: クロージャに関して読んでいると宣言時の関数外部の変数状態も保存できる仕組みそのものを指している時もあれば、 function outer(){ var x = 1; return function (){ x = x + 1; ...
負の値をとる投票数の英訳 – 専門用語 英語
質問: stackoverflowのような投票機能をruby on railsで実装しようとしています。 「投票数」を意味するカラムを設定するのですが、英訳はvote countで違和感ないでしょうか。 反対票しか入らなかった場合、投票数は負の値をとります。 countは暗に非負の値をさしていないか気にしています。 のちのち他のエンジニアがvote_countというカラムをみたときに、これは非負だ、というように思ってしまわないかが気になっています。 質問者: n0dam1 cubick stackoverflowのソースを覗いてみると、該当箇所(数字の部分)はupvoteCountとなっています。 ちなみにプラス投票が「vote-up」、マイナス投票は「vote-down」のようです。 投票というと、紙の数を数えるイメージが一般的と思いますので、 説明がない限り、多くの人は、0以上を想定するかと思います。 気になったのが、反対票しかない場合に負の値をとる、という点です。 賛成票と反対票の両方があった時、引き算が発生する?と 見ている側が考えてしまう可能性があると思います。 総数という意味で vote_total としても良いかもしれませんね。 出典
compromised の日本語訳は? – security 英語
質問: https://security.stackexchange.com/ などセキュリティ系の情報を読んでいると、しきりに compromised という単語が出てきますが、(例: compromised hardware, compromised OS, etc) compromise された状態とはどういう状態でしょうか。また、日本語に訳すとしたら何になりますか? 質問者: Yuki Inoue Yuki Inoue (クラッカーなどに)侵入された (ウィルスなどに)感染した という意味ではないでしょうか。英辞郎などには「易感染性」のような意味も出ていますから、医学用語由来かもしれませんね。 易感染性という言葉から類推すると、脆弱なだけでまだ侵入されていない場合にも使うのかもしれません。 しかし少なくとも、「侵入された可能性がかなりある」くらいにはマズい状況に使われている気がします。 OP 追記: 医学用語における易感染性とは、免疫が落ちて通常なんでもない微生物にでも感染してしまう状態です。そのような状態に陥ってしまった患者のことを compomised host と呼びます。 なので、ウイルス、クラッカーに侵入された(可能性がある)状態に陥ってしまった、 が一番適切な翻訳だと思われます。 ...
外国のセキュリティポリシーの一文について – security 英語
質問: セキュリティポリシーでよく外国のサイトで見られるのが以下のコメントです。 industry standard technical and organizational security measures 参考URL;https://instagantt.com/privacy.html 具体的にどのようなセキュリティをしているのかが分からないので、そのアプリを使用していいのか迷っています。 「SSLを使っています」などなら分かりやすいのですが。 上記わかる方がいましたら、ご教授願います。 質問者: kazuhiro 出典
reduceやinjectと双対な関数・メソッドの名前について – 英語
質問: 畳み込み関数に対してはfold,reduce,inject等、プログラミング言語や引数の型ごとに色々な名前が使われていますが、これと双対な関数はどのような名前を持つのでしょうか?foldにはunfoldが対応する(F#,Haskell)のですがreduce、injectに対応する関数の名前が分かりません。 このような関数を探したり、自前で定義する際に必要だと思い質問しました。 補足:unfoldの仕様 F#のSeq.unfoldは関数fと初期状態sを引数に取り、シーケンスを返す関数です。fは現在の状態からシーケンスの要素と次の状態のタプルをoptionとして返す関数です。fがNoneを返すことで結果のシーケンスの生成を打ち切ります。 Haskellのunfoldrも同様です。 質問者: letrec 公式ライブラリに含まれていないのだとしたら、多分特にそんなものの名前で、標準的なものはないのではないか、と考えています。特に、自分の把握している範囲だと、 reduce -> python inject -> ruby であって、F# や Haskell に比べれば関数型色が薄いので、そうなっているのではないかと。 最近だと Java の Stream が unfold 相当の機能を実装した様子ですが、 Stream.iterate なのでライブラリの実装次第で割となんでもありなのではないでしょうか。 ...
日本語で深層学習の用語 – 深層学習 日本語 英語
質問: 皆さん、おはようございます。 今履歴書は英語から日本語で翻訳しますのに、日本語はまだ上手じゃないですのが、知らない用語が沢山ありますけど、Wikipediaは助けてない所は多いですので、スタック・オーバーフローに聞いています。 知らない用語は英語で: Viewpoint invariance Combining multiple neural networks to improve generalization Restricted Boltzmann machines (RBMs) Stacking RBMs to make Deep Belief Nets generative pre-training Modeling hierarchical structure with neural nets Image style ...
instance と object のニュアンスの違い – 英語 専門用語
質問: オブジェクト指向の話題でよく出てくる用語に object と instance の2つがあります。 日本語的にはどちらも class 型な変数の意味で用いられていることが多いように感じます。 でも単語も違いますし、ニュアンスは違いそうに思えます。 この2つの用語はどう違うのでしょうか? (あるいはどう同じなのでしょうか?) 質問者: 774RR KSOH Yuki Inoueさんとそう違わない感覚だとは思いますが、 オブジェクト指向のオブジェクトとはもう少し広い概念で... オブジェクトをどうとらえているかはYuki Inoueさんと同じです。 クラスベースではインスタンス=オブジェクトだが... インスタンス=実体という訳を自分は素朴に解釈していてプログラムからみてそれが「何か意味のある情報をカプセル化していてメッセージを送ると何かしてくれるようなものと理解しています。これは特定の言語システムの話をしているなら意味が違ってくると思います。例えばJavaなどではクラスも実体を持っていてプログラムからアクセスできるという意味でオブジェクト(かつインスタンスといっても御幣はない)と解釈しています。一方でC++のようなものだとC++クラスに対して実行時に何かアクセスするようなコードを普通書かない(書けない)ものだと思うのでC++クラスはインスタンスでもないしオブジェクトでもないと思います。 特定の言語システムの話をしているのではない文脈では、クラスとインスタンスという用語を、「振る舞いの定義」と「定義に従って振る舞う個々の実体」として明確に区別したい場合に使い、特に区別する必要がないような文脈では先の定義通りの意味でオブジェクトという用語を使っていると思います。 自分の理解を。 クラスベースのオブジェクト指向言語においては、設計図(クラス)に対する実態(インスタンス)があるので、インスタンスという言葉が使われている。 オブジェクト指向のオブジェクトとはもう少し広い概念で、オブジェクトそれぞれがメソッド(メッセージ)を受け取って特定の処理をする、そのパラダイムのプログラミングの登場人物。 なのでクラスベースではインスタンス=オブジェクトだが、その他のオブジェクト指向ではインスタンスという用語は本来の意味から考えれば使われるべきではない。 と思っていたのですが、ちょっと調べると javascript でも ...
シェル、ターミナル、コマンドプロンプトの違いを教えてください – linux unix 専門用語
質問: 現在、Linuxの勉強をしておりまして、その中で、「シェル」、「ターミナル」、「コマンドプロンプト」という言葉が出てきました。検索して調べてみたのですが、いまいち違いがよく分かりません。 Linuxの勉強を初めて初心者のため、「シェル」、「ターミナル」、「コマンドプロンプト」の違いを教えて頂きたいです。宜しくお願い致します。 質問者: poplot726 シェル ユーザからのコマンド入力を受け取りコマンドを実行するためのプログラムです。 LinuxにCUIの画面では「コマンドプロンプト」が表示されますが、それを表示しているのがシェルです。 また、コマンド入力をテキストファイルに保存することで、保存された一連の操作を実行させることもできます。テキストに書かれたコマンド群を「シェルスクリプト」と呼びます。 シェルスクリプトはデーモンプロセスの起動や停止などでも使われてますし独自のシェルスクリプトを作成して 新しいコマンドとして使用するのもよくある使い方です。 bash, tsch, ksh, zsh など色んな種類のシェルがあります。 ターミナル 日本語だと端末といいます。古くはUNIXと接続する端末装置が由来ですが現在ではそれは仮想化されたソフトウェアになっていて仮想ターミナル(仮想端末)などと呼ばれています。gnone-terminal, rxvt, kterm, xterm などいろんな仮想ターミナルがあります。 コマンドプロンプト 前述のシェルが表示するコマンド入力用のプロンプトを「コマンドプロンプト」といいます。また、Windows用の仮想ターミナルは「コマンドプロンプト」という名前がついてます。この場合はLinuxにはありません。 Shell; シェル 入力を得てプロセスを立ち上げる役目を担います。入力はスクリプトファイルだったり、ターミナルだったりします。 Terminal; ターミナル、端末 現在ではモニタやキーボードなどがのパソコンに直結された構成が一般的ですが、UNIXが登場した時代にはそのような装置は存在せず、端末をシリアル接続していました。VT100なんかが有名です。 このような端末を利用するプログラムが数多くあるため、現在では、既にあるモニタ、キーボードを利用して端末をエミューレートして使います。このため端末エミュレータ・仮想ターミナルなどとも呼ばれます。 コマンドプロンプト Windowsのコマンドプロンプトを想像してしまいますが、UNIXにおいてはシェルがターミナル上で入力を受け付けている行およびその表示を指します。 ...
dirty とは何と訳し、どういう意味にするのが適切でしょうか? – 英語 whoosh
質問: pygame では、dirty Rectという言葉があり、汚れたレクトと表現されます。 今、python 検索エンジンライブラリのWhooshのドキュメントを見ているのですが、 Whoosh was created by Matt Chaput. It started as a quick and dirty search server for the online documentation of the ...
「cookie」の名前の由来とは? – cookie 専門用語
質問: 自動ログインからユーザーの分析にまで幅広く使われることになった cookie ですがそもそもなぜ cookie という名前なんでしょうか? 最初にこの cookie という単語を知った時、「ブラウザが何かモリモリたべるものなのかな?」と思って それから数年間たったいまもこの単語の由来を知りません javascript とか Ajax とかそういうものにはある程度単語からテクノロジーを推測できるものもあるんですがこの cookie だけは単語から連想するのが個人的には食べ物の「クッキー」です。 調べたところ「マジック・クッキー」という単語が由来にありそうなのですが、この「マジック・クッキー」そのものも単語の出処が不詳な謎の単語らしいです。 クッキー 「クッキー」とは、ウェブサイトを訪れた時、コンピューターに一時的に保存される情報のことである。この言葉は、元々同じ意味を持つ「マジック・クッキー」というIT用語を省略したものからきているが、「マジック・クッキー」自体の言葉の由来は定かではない。一説によると、「マジック・クッキー」を手に入れないと先に進めないというテレビゲームが昔あり、そこが発祥なのではないかと言われている。 出典 | 意外に知らない『IT用語』の由来7選 「ブログ」「スパム」「クッキー」など なぜ cookie ...
Internationalization と Localization の違い – 英語
質問: 自作アプリの文言の翻訳をしていてふと思ったのですが、 Internationalization (国際化) と Localization (現地化) と どちらもほぼ同じ事のような気がしてきました。 IT 業界的には、この2つはどう違うのでしょうか? どう使い分ければよいでしょうか? 質問者: 774RR Transam ざっくりいうと、i18nは多言語化対応するよ!l10nは地域にあわせて最適化するよ!みたいな感じです。 自作アプリの文言の翻訳をしていてふと思ったのですが、 Internationalization (国際化) と Localization (現地化) と どちらもほぼ同じ事のような気がしてきました。 ほぼ同じというよりは、l10nをする際の工程にi18nはかかわります。 ...
UDP/IP と言わないのはなぜですか? – network 専門用語
質問: ネットワーク系の用語で TCP/IP という表記はよく目にしますが UDP/IP という表記はあまり見ません。 TCP も UDP も、どちらも IP ネットワーク上で実装されているプロトコルなのに奇妙に思います。 なぜ TCP だけ TCP/IP と表記しがちで UDP は UDP/IP と表記しないのでしょうか? 質問者: 774RR shiraken TCP/IPというのはTCPとIPの組合せのみを指している言葉ではなく、TCP及びIPを含むプロトコル群の総称です。 1974年にはTCP/IPの最初の仕様であるRFC675が制定されましたが、その当時はUDPというプロトコルは存在しませんでした。 UDPは1980年にRFC786が制定されTCP/IPに含まれることになりました。 歴史的な経緯で「TCP/IP」という表現になっていますがその中にはUDPも含まれているということです。 また、総称的な意味であれば「Internet Protocol ...

You Might Also Like

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です