- PR -

特集「私がJavaからC#に乗り換えた10の理由」について

投稿者投稿内容
andy
会議室デビュー日: 2002/11/22
投稿数: 13
投稿日時: 2003-07-10 10:21
引用:

英-Ranさんの書き込み (2003-07-10 08:59) より:

あの十番目の理由のせいで九番目の理由が記憶からすっとんでいたようです。でも、あれだけではあまりにも不十分ではありませんか(だってsetupが楽だからというだけの理由しか書いてませんよ)。



私は、「.NET固有のコンポーネントから派生した独自コンポーネントを
ちょこちょこっと作って、即効でデバッグテストする。
そして、作った独自コンポーネントをIDEに登録すると、ドラッグだけで
自分のいろいろなソリューションで使えるようになる
(もちろん)プロパティウィンドウも使える」という一連の流れが
スーっと澱みなく進むことに快感を感じています。
いろいろなプログラムを作ると同時にMyコンポーネントライブラリが
自然に作られていきます。
(まさにコンポーネント指向の真髄!?)

ちなみに、これってEclipseでも出来るんですか?
Dandan
常連さん
会議室デビュー日: 2002/01/17
投稿数: 25
投稿日時: 2003-07-10 10:38
引用:

英-Ranさんの書き込み (2003-07-09 22:30) より:

私が指摘したかったのは、
おじま氏の記事は事実に基づいて書かれていないし、センスも悪い
ということです。


というのに同意見です。

例えば「理由3」の"JavaBeans(Java Beanじゃなくてね)"とC#のpropertyの比較ですが、確かにC#にproeprtyがありコンパイラでチェックがかかる、は良くわかりますが「嘆かわしい」を2度使うほどに大げさなものなのでしょうか。そんなことだけで「C#を使いたくなっちゃう」ものなんでしょうか。

なんか不当(大げさ)に相手を貶めて、相対的に価値を高めるようにしか見えない点をセンスが悪いと感じました。もちろん記事じゃなくてこれが、人間相手にやった場合センスが悪いことはわかりますよね。

#これが@ITという"メディア"の特集ページじゃなかったら(例えば一記事や広告記事とかUnisysや個人ページに掲載してたら)別に何も思わなかったんだろうけどね。
なか-chan@最愛のiMac
ぬし
会議室デビュー日: 2002/07/17
投稿数: 385
お住まい・勤務地: 和光市・世田谷区
投稿日時: 2003-07-10 11:41
個人的には、今秋に登場するといわれるJavaの Project RAVE に期待しています。

http://biz.ascii24.com/biz/news/article/2003/06/17/644320-000.html
によると、「Visual BasicベースからJavaベースへの移行を促すための強力な武器」
ということなので、簡単なのかな?と思っています。VSが.netになって簡単に
なったといっても、覚えることが多くてなかなか使いこなせません。
せめてクラス名とか言語間でも統一してくれればよかったのに...
昔の、VB4を始めて使ったときには、これはどう考えても世界一使いやすい!と
本当に感動したものです。(UNIX , C , viしか使ったこと無かったので...^^

#オブジェクト指向より、デベロッパ指向?の開発環境が欲しい...
#今はまだ、やりたいこと以外の手間とか概念が多すぎる気がします。
object
ぬし
会議室デビュー日: 2002/03/20
投稿数: 338
お住まい・勤務地: 香川県高松市
投稿日時: 2003-07-10 12:48
objectです。

引用:

英-Ranさんの書き込み (2003-07-09 22:30) より:
ただ、それを言うのに「delegate」を持ち出すのは適切ではないのではないですか。別に無名Inner Classでも、
コード:
public class EventTest {
    public event ActionListener action;

    public void Main(String[] Args) {
        EventTest et = new EventTest();

        et.action += new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                //ここに処理を書く
            }
        };
    }
}


と、書けばいいだけでdelegateである必然性はないでしょう。delegateは「関数ポインタ」に類する概念を導入する必要があり、オブジェクトの管理とは別にメソッドの参照管理が必要になるという欠点があります。結果的に、おじまさんのお好きな「速度の低下」がC#にもたらされる可能性がありますし、たったイベントひとつのためにオブジェクト指向とは馴染まない新たな概念を持ち込むことにもなります。


私が前のレスで、
「この状況で重要なのは、所謂イベントを「単一のメソッド」にバインド出来る安全な実体としての「イベント」です。」
と書いた意味は、
「イベントに求められているのは、一つ一つのメソッドに対する、安全なメソッドポインタである。」
という事を強調したかったからです。
英-Ranさんは、「無名Inner Class」に胡散臭さを感じませんか?
何故、こんなに汎用的で重要なものが「無名」で、しかも「Inner Class」なのでしょう?
「delegate」は、基本的な問題と関わっていますから、恐らくこのまま続けても水掛け論になって、意味が無いと思いますので一応これでおきましょう。


話を最初に戻して、私が「delegate」に対する問題を、「イベント」に対する問題に提起しなおした事を思い出して下さい。
私は、「プロパティ」の件もありますが、「イベント」をサポートしない言語に不満を持っていました。
もちろん、Javaに対してもです。

「イベント」を言語として実装しているC#に対しては、実装方法にクレームを付け、
「イベント」を実装していない、Javaに対しては全くクレームを付けないのはどうしてでしょう?
英-Ranさんが提起されている「無名Inner Class」で「イベント」を実装すべきなのは、Javaではないでしょうか?

でも恐らく、英-Ranさんの
「たったイベントひとつのためにオブジェクト指向とは馴染まない新たな概念を持ち込むことにもなります。」
という発言に全てが明確に表れているのでしょうね!
言語としての「イベント」が不必要であると考えているのであれば、「delegate」と「無名Inner Class」の議論は不毛です!

>ALL
今、ここのスレで起きてる「C#」と「Java」の議論は、非難合戦にしか見えないと思います。
これで良いのでしょうか?

私は、C#に対してはC#ユーザーが、Javaに対してはJavaユーザーが、一番批判的である事が大切だと思っています。
言語に対して批判する権利を持っているのは、まさにその言語を使っているユーザーだと思うからです。

ユーザーが、自分が使用している言語に対して、護りの姿勢に入りだすと、その言語は駄目になると思います。
あらゆるユーザーは、言語ではなく、全ユーザーを護る事、つまり協力する事が大切なんだという事を忘れないで欲しいと思います。
そうすれば、最悪でも議論が非難合戦になる事はないと私は思います。
autumn
大ベテラン
会議室デビュー日: 2001/07/27
投稿数: 215
投稿日時: 2003-07-10 13:17
引用:

C#が他の機能を貪欲に取り込んでおきながら、検査例外を省略した理由はなぜでしょうね。
実装効率?.NET Frameworkの実装上の問題?まさか実行効率?


 もし、これがC#に(Javaの)throwsが無いのはこれで良いのだろうか?という疑問と同じと解釈して良ければ、前に見たなと思ったら、C#のMLで自分で振った話題でした。サーバがメンテ中なのでURLを書けませんが、users.gr.jpのC#メーリングリストの377以降のスレッドです。このスレッド自体、かなり古いもの(2001年2月5日〜)ですが、いろいろな価値観での是非の議論が出ています。効率の問題ではなく、その方が良いから、という意見も出ています。
 私が設計したわけではないので確実には答えられませんが。おそらく、例外をソースコード上に明示する方式は、ソースコードを記述する時点でどのような例外を投げるか分からないメソッドを扱う上で十分に機能を果たすとは言えないので、C#では取り入れていないような気がします。(汎用的なクラスライブラリを作る場合、リフレクションや動的に読み込まれるアセンブリを呼び出す場合など)
 逆に言えば、例外が正しく扱われていることを保障するのは、言語仕様の内側だけでは確実にできないから、別のレイヤーで行われるべき。だから言語仕様の一部ではないのだ、というような考え方があるのかもしれません。(じゃあ、その別のレイヤーとは何かと聞かれても答えられませんが……)
 このスレで問題となっている元記事の著者はC#を効率重視の言語として見ているように思えますが、必ずしもそうではなく、C#なりの理念があって、それに沿った言語設計が行われているように思います。
 一見、C#は何でも取り込む「何でもあり」の言語のように見えますが、実際に使い込んでみると、あえて入れていない機能や、入れても制限を課して自由度を抑えている機能などがあることが分かります。たぶん、それは理念がないとできないことでしょう。
 (その理念が正しいかどうかは別の問題として)
ken
常連さん
会議室デビュー日: 2002/04/29
投稿数: 38
投稿日時: 2003-07-10 13:26
引用:

andyさんの書き込み (2003-07-10 10:21) より:

私は、「.NET固有のコンポーネントから派生した独自コンポーネントを
ちょこちょこっと作って、即効でデバッグテストする。
そして、作った独自コンポーネントをIDEに登録すると、ドラッグだけで
自分のいろいろなソリューションで使えるようになる
(もちろん)プロパティウィンドウも使える」という一連の流れが
スーっと澱みなく進むことに快感を感じています。
いろいろなプログラムを作ると同時にMyコンポーネントライブラリが
自然に作られていきます。
(まさにコンポーネント指向の真髄!?)

ちなみに、これってEclipseでも出来るんですか?




Delphi, C++Builder, JBuilder だと、何年も前から、当たり前の
機能なのですがね。(^^)
autumn
大ベテラン
会議室デビュー日: 2001/07/27
投稿数: 215
投稿日時: 2003-07-10 13:31
引用:

objectさんの書き込み (2003-07-10 12:48) より:
今、ここのスレで起きてる「C#」と「Java」の議論は、非難合戦にしか見えないと思います。
これで良いのでしょうか?


 良くないと思います。大量の無駄な文字が費やされていると思います。
 馬鹿馬鹿しいので、やめることを希望します。
 元記事にいくつかの誤認があるのは事実だと思いますから、そこは著者と編集者が協議して、本当に誤認であれば直せば良いことです。
 客観的な誤認でない部分は、署名記事なのだから、その著者の自分の考えを述べれば良いことです。それが各自の信じることと違うとしても、世の中に様々な考えを持つ人がいるのは当たり前のことです。考え方の違いは、きちんと議論して解消していくべきものでしょう。結論の押しつけではなく、相手の主張を理解した上で、議論して、議論の中から誰もが納得できる結論を導くように努力すべきでしょう。
cats
大ベテラン
会議室デビュー日: 2002/11/29
投稿数: 221
お住まい・勤務地: 東京
投稿日時: 2003-07-10 13:45
> サーバがメンテ中なのでURLを書けませんが、
> users.gr.jpのC#メーリングリストの377以降のスレッドです。

Googleキャッシュ
http://216.239.41.104/search?q=cache:gHahqtS7l0QJ:www.users.gr.jp/ml/archive/CS/377.asp+&hl=ja&ie=UTF-8
(貼っていいのかな?)

スキルアップ/キャリアアップ(JOB@IT)