Java の本当の発明について [Java]
Java が登場してその良さが何かにつけて喧伝されていた頃によく「彼らがあたかも Java の発明であるかのように言っていることは C++ と比べた場合の Java の特徴ではあるかもしれないが、その起源は Java ではなく、ずっと昔からあるものだ」というような反論も合わせて耳にした。
それはいいとして、本当に Java の発明になるものがないかといえば実はあって、「チェック例外」というものがそうだ、と思ったのだけどこれは間違ってるでしょうか。
もうひとつ、Java 以降に現れた言語で Java のチェック例外を真似した言語はない、という気もするのだけど、これは本当でしょうか。(C# には?)
それはいいとして、本当に Java の発明になるものがないかといえば実はあって、「チェック例外」というものがそうだ、と思ったのだけどこれは間違ってるでしょうか。
もうひとつ、Java 以降に現れた言語で Java のチェック例外を真似した言語はない、という気もするのだけど、これは本当でしょうか。(C# には?)
チェック例外のようなものはC++にもありました(例外指定)。ただ、そのチェックは実行時であったため、コンパイル時の処理が好まれるC++では受けませんでした。今では全くと言って良いほど使われていません。
Javaのチェック例外はこの進化形と言えます。
C++はというと、結局、bool値で投げない or 投げると指定するだけのnoexceptという新しい表記が導入されることとなりました。「投げない」保証は、C++コーディング上でも重要視される上、コードの最適化にも使える(そのため、投げない指定はVC++やg++などいくつものコンパイラが独自構文で用意していた)ので、これなら受け入れられるだろうとふんだわけです。
by Egtra (2011-10-01 14:32)