忍者ブログ
おそらく活動状況とか、他愛もないこととか書きます。 μ崎みのりの気ままで気まぐれなブログです。 作曲とか、ゲーム製作なんかしてます。
[576]  [575]  [574]  [573]  [572]  [571]  [570]  [569]  [568]  [567]  [566
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

ネットサーフィンしていると、Java使い向けのC#講座はあっても、逆は極端に少ないことが分かります。
C#のほうが後発なのだから当然と言えば当然なのですが、C#をメインに扱う私としてはもう少し時代の逆行にも対応してほしいなと思うところが…。

というわけで、一部の方々が熱いC#とJavaの比較でもしてみようかな、と思います。
※以下の文章は全て私の主観です。ご注意ください。

●オブジェクト依存指向(Java) vs 肥大化する言語仕様(C#)
お互いがお互いを否定する理由じゃないかと一番思うところがこれです。
批判的な言い方をしましたが、ようするにJavaが純粋なオブジェクト指向を基盤に置いているのに対し、C#はオブジェクト指向も道具の一部としてマルチパラダイムになっているという大きな差があるわけです。
ネットで見かけるC# / Java 批判はこれを理解してないんじゃないかと思うことさえあります。
これはJava使いから見れば「C#はごちゃごちゃしたいらない機能を追加しすぎ」であり、
C#使いから見れば「Javaはいつまでもオブジェクト指向に固執しすぎ」じゃないかと。


●継承とインターフェイスに対する価値観の差
Javaは純粋なオブジェクト指向ですから、継承とインターフェイスを湯水のごとく使います。
むしろ、これらが使いこなせないと真価を発揮できません。
そのためJavaには匿名クラスなどの構文があり、メソッドは既定でオーバーライド可能です。

それに対し、C#にとって継承は「非常に強力な機能」であり、小規模な用途ではあまり使われません。
"振る舞い"を渡したり、差し替えたりといった用途にはデリゲートを使えばいいんです。
そのためC#には継承関連の糖衣構文がなく、メソッドは既定でオーバーライド不可能です。


●どちらのほうが簡単か
これについては本当に個人差だと思います。
単純に「言語の仕様を覚えたい」というなら間違いなくJavaのほうが簡単です。
言語仕様の大きさはJavaのほうが圧倒的に小さく単純だからです。
また、初級者的なプログラムを作りたいならどちらを使っても大差ありません。
標準ライブラリのクラス名・メソッド名を除いて全く同じコードになることなることすらあります。
中規模~大規模なプログラムを作る場合でも、難易度としては大差ないと思います。
何か新しいことをしようとした場合、C#なら言語の機能を覚える必要がありますし、
Javaなら(広い意味での)デザインパターンを覚える必要があります。

両方を同程度に使いこなした場合、コードはC#のほうが短くなります。
ただし、初心者が上級者のコードを読むために必要な労力はJavaのほうが少なくて済みます。
これは言語仕様の大きさを比べれば当然のことです。


=======================================================
私自身はC#使いですが、どちらかを贔屓しないように書いたつもりです。
この文章に対する批判や意見は大いに受け付けます(ないと思いますが)。
PR
この記事にコメントする
お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
忍者ブログ [PR]