いくつかの点で、Java は C がしばらく前にあった場所にあるように思えます。どちらも当時としてはかなり最小限の言語であり、比較的クリーンでシンプルなコアを構築することができます。(ここでは、ライブラリではなく、コア言語について言及しています。) どちらも非常に人気があります。どちらも共通語であり、レガシー コードが大量に含まれています。どちらも、他の言語のプログラマーが見逃しがちないくつかの最新の生産性機能を欠いています/欠いていました。どちらも非常に慣性に支配されており、変化する世界への適応が遅いようです。
C++ が C にあるように、Java のおおよそのスーパーセットである Java++ を作成することは合理的であるように私には思えます。絶対に必要な場合にのみマイナーな方法を使用し、プレーンな古い Java には欠けている多くの最新の機能を追加し、後で標準化について心配します。良いアイデアと思われる機能は次のとおりです。
- ファースト クラスの関数、デリゲート。
- 閉鎖。
var
C# やauto
Dと同様の静的型推論。- 演算子のオーバーロード。
- C# や D などのクラスとは異なる値型としての構造体。
- プロパティ。
- チェック例外を無視するオプション。
- ファイルで複数の最上位パブリック クラスを宣言する機能。
- 追加などを可能にする、より強力な組み込み配列。
- より良いジェネリック/実際のテンプレート。
- C# 4.0 の dynamic キーワードのようなもので、一般的に静的な言語で必要に応じてダック タイピングを行うことができます。
- Java は主に VM 言語であるため、特定の目的のためにオンザフライでコードを生成するなどのハードコアなメタプログラミング機能が含まれている可能性があります。
そのような言語の需要があると思いますか? そんなことが成功すると思いますか?
編集:ランタイム/バイトコード レベルでの互換性について話しているのではなく、ソースレベルでの Java との互換性について話しているのです。また、はい、Java 7 はこれらのいくつかを追加できますが、Java に機能を追加するための「公式」プロセスは非常に保守的であるようです。本当のポイントは、安定性/標準化よりも革新に重点が置かれている場合に、Java をブランチにフォークするというアイデアです。