C#とJavaのどちらが先かという問題は議論の余地がありますが、どちらか一方の言語機能に焦点を当てるのではなく、言語の進化に関係することに焦点を合わせたいと思います。これは、誰も議論することはないと思う1つの事実です。JavaはC#よりも古いです。
言語の動作方法の変更に関する問題:
- 後方互換性を破ると、多くの開発者を怒らせます
- 開発者を怒らせた場合、開発者は開発者をより適切にサポートする別の言語に移行します。したがって、言語を使い続ける理由はありません。
- Javaは、言語を市場に投入するというプレッシャーを受けて、早期に設計上の決定を下しました。希望は、戻っていくつかの空白を埋めることでした。メンテナーが最初の点に違反したくないので、それらの決定はまだ言語を悩ませます。
- Javaは多くの新しい領域を燃やし、ガベージコレクションされた言語を真剣に受け止めることができることを証明しました。
- C#は後で登場し、Javaが偶然見つけた多くの教訓を学びました。つまり、Javaがポイント3のために持っている技術的な制限のいくつかを回避することができました。
- 新しい言語機能は、実際の問題を賢明な方法で解決する必要があります。すべての言語機能が、追加しようとしている言語のコンテキストで意味をなすわけではありません。JavaとC#が類似しているにもかかわらず、異なる言語であり続ける理由はここにあります。
では、C#にはJavaよりも多くの言語機能がありますか?私はそう思う。彼らは便利ですか?私はそう思う。それは、C#がJavaより優れているか、成熟しているということですか?私が同意しないこと。それらは異なり、単純で単純です。C#にはJavaのすべての機能が含まれることはないため、JavaにはC#のすべての機能が含まれることはありません。
Javaの機能の1つであるWindowsでプログラムを作成し、UnixまたはMacに展開する機能は、Microsoftのサポートによって直接実現されることはありません。なぜ聞くの?マイクロソフトが悪だからというわけではありません(それが本当かどうかは、私はあまり気にしません)。それは、彼らがSunが決してやらなかった教訓を学んだからです:一度書くだけで、オペレーティングシステムとハードウェアを共有します。オペレーティングシステムの販売から収益を上げることに関心がある場合、交換してアプリケーションを動作させるのは簡単ではありません。そうした場合、常に安価なオプションがあるため、オペレーティングシステムから利益を得ることはできません。