と、思ってます(^^;
本来は年始の挨拶ですが、喪中なので、「寒中お見舞い申し上げます」 です(m_m)
C#はちょこちょこと触ってつまみ食い程度に使っていたのですが、JScript/Perlなどの便利なLL言語の手軽さに負けてあまり本気で使っていなかったのですが、とある解説本を読んでC#に傾倒しつつあります。
C# 3.0 になって、これまでのC# 2.0 のときに感じた僕の不満点が一気に解決されていました。特にラムダ式とLINQは、非常に煩わしいコード記述を、まるでスクリプトを書いているような感覚で、うまく使えば非常に読みやすいコードの記述ができる武器になりそうです。 普通ならスクリプトで組むようなものでも、これからは気軽にC#を使っていこうかな、と思うようになってきました。
C#といえば、事実上、Windows の .NET Framework上でしか動作しない、という認識でしたが、オープンソースで開発されている Monoをインストールすれば、Windows以外のプラットフォームでも十分使えるようです。CentOSに mono をインストールして、Windows上でビルドしたプログラムが動くかテストしてみましたが、すんなり動くことにちょっと感動しました(笑) フォームを使ったものも含めて、完全に互換性が保てるようになれば、状況が変わると思いますねぇ。
いままでは、どんな小さなプログラムでも、使うか使わないかは別にしてWebサーバーでの使用も考えて、Perl や PHP を使ってコーディングすることがほとんどでしたが、Mono がもっとオープンソース系のサーバー系OSで普及してくれれば、今まで以上にC# を気軽に使えるんですがねぇ~。どうなんでしょうねぇ~。
よくC# と Java は設計思想が似てて、言語的にC#はJavaを真似してる、という意見もありますが、C# を知れば知るほど、Javaとは全く違う言語だということが分かります。
いろんな意見がありますが、僕的に思うことは、 趣味でプログラムするなら、JavaよりC#の方が断然面白い、です。
が、ちょっと、「それはやりすぎじゃね?」 と思うこともあります。
たとえば・・・
/* C# 2.0のときは、*/ List<string> a = new List<string>();
と記述しますが、C++のtemplateときもそうだったんですが・・・同じ語が繰り返し出てきたりして、ずーーーーーと前から不満でした。が、 C# 3.0になって var キーワードが使えるようになったおかげで、スマートに書くことができますよね。
/* C# 3.0 では・・・*/ var a = new List<string>();
これはいい。a の型をコンパイラが考えてくれる。
/* でもこれは・・・すでに何をやってるのか僕には見当もつきません(^^;;;*/ var ar = new[]{1,2,3}; /* これは下と同じですが */ int[] ar = new int[]{1,2,3}; /* こっちの方がわかりやすいし何をやっているかも一目瞭然だと思うのですが・・・。 */ var ar = new int[]{1,2,3};
こんなやりすぎ感が漂う C# ですが、Perl ほどワケワカメな書き方はできないし、この、程々のやり過ぎ感がちょうどいいんじゃないかと思います(^^;;;
.NET Framework のライブラリが膨大すぎて、必要なクラスがどの名前空間にあるか、すでにライブラリ・クラスの海の中におぼれかけてますが、今年からC#を極力使っていきたいと思います。
でもWindowsでちょっと凝ったことしたいときは、やっぱり Windows APIを直接叩く必要があるのを、次のWindows8でどうにかしてほしいです。。。