どこが良いの.NET

こっち側のタイトルは向こう側に合わせました。
id:akiramei:20051220#p3より

最近は色々な言語を節操なく使っている所為で、状況に合わせてベターな言語使い分けようよ、って感じになってます。

色々やってるとそんなかんじにはなりますね。ただ、習熟したモアベターな言語が利用頻度が下がっていると、頻度の高いベター言語への妥協が結構発生するようになっちゃうので、意図的に色々な言語でいろいろと遊んでいるほうが良い気がしています。
仕事だと、あまり選択できる立場に立たないってことや、仕事でやってる場合には一週間ぐらいのスパンでみて、仕事でプログラミングしてる時間の割合ってのは凄いものがあって、規模によってはかなりの長期間で、どうしてもそれに依っちゃうってのもあります。

Javaに比べてC#の良いところは何ですか?

.NET も C# も 2.0 が出たばかりで時期的な問題があるんですが、

あたりで考えるとよいでしょうかね。良いところっていうより、前段の引用のようなかんじでアドバンテージがあるところっていうべきでしょうか。

たとえば

J2SE 1.3 ではプログラム言語としてメタデータの拡張手段がありませんが、C# 1.2 では属性を利用したメタデータの拡張を行うことができます。しかし、C言語やアセンブリオブジェクト指向プログラミングが可能なように、J2SE 1.3 であってもメタデータを拡張するような設計に対する実装ができないわけではありませんし、そのようなフレームワークをゼロから構築することが必須になるわけでもありません。

たとえば

.NET 2.0/C# 2.0 になっても、enum の扱いは特別なメタデータ構成をした順序値でしかありません。J2SE 5.0 では enum は結構立派なオブジェクトで遊びがいがあります。.NET の enum の実装はパフォーマンス面で大きな影響を与えている(と思っている)ので、メタデータの豊富な順序値であることは気にしていないのですが、メソッドぐらい作らせてくれとは常々思っています。*5

とりあえず

Java のバージョン表記はどう書くのが良いのか困った(苦笑
EA 版では Java 2 Platform Standard Edition 1.5 だった気がしたんだけど、リリース版は Java 2 Platform Standard Edition 5.0 だった。*6

SDK 表記例 補足
1.0 Java 1.0 -
1.1 Java 1.1 -
1.2 Java 2 -
1.3 J2SE 1.3 Java 2 Platform Standard Edition 1.3
1.4 J2SE 1.4 -
1.5 J2SE 1.5 EA Early Access、いわゆるベータ版みたいなもの
5.0 J2SE 5.0 -

でいいだろうか。

*1:.NET 1.1

*2:Java 2 Platform Standard Edition 1.3 - JRE/JDK 1.3

*3:.NET 2.0

*4:Java 2 Platform Standard Edition 5.0 - JRE/JDK 5.0

*5:C# 3.0 では public な操作をメソッドとして外付けできるようになるので、この点に関しては改善される予定です。

*6:.NET 2.0 も開発段階は .NET 1.2 だったみたいなものだろう