- PR -

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

投稿者投稿内容
英-Ran
ベテラン
会議室デビュー日: 2002/06/12
投稿数: 55
投稿日時: 2003-07-17 09:30
引用:

ぢゃん♪さんの書き込み (2003-07-17 09:10) より:
とありますが、この記述は相当古いうえ、

>Visual J++ 6.0 を動かす環境がないので確認ができないのですが (どなたか
   ……
>されるのではないかと予想します。

と書かれていますけど、この内容は合っているのでしょうか?
また、現在のC#でも、そのまま当てはまっているのでしょうか?



自分で読んで自分で判断してください。ただし、@itで議論されている内容やC#に取り入れられている機構がここにいる人たちにとっては新しい機構に思えたとしても、実際にはそうではないということだけは認識しておく必要があると思います。
cats
大ベテラン
会議室デビュー日: 2002/11/29
投稿数: 221
お住まい・勤務地: 東京
投稿日時: 2003-07-17 09:35
なんか議論がかみ合っていないですね。

delegateは、型(class)そのものですよ。
英-Ranさんの参考のjava-houseの中でも想像されていますが、
ildasmで見てみればはっきりします。

参照先で言っているのは、
・delegateは「型の継承」をしていないものに多様性を与えている
ということです。

「型の継承」の定義は一般的に合意されていないでしょうが、上記主張はその通りでしょう。

但し、参考のjava-houseの中で高木さんは、delegateが「センスの悪い」と言っていますが、これには賛成しかねます。delegateは、よく練られていて洗練されていると思っています。

議論に参加している人は、下記書籍などを読まれることを望みます。

プログラミングMicrosoft .NET Framework
http://www.amazon.co.jp/exec/obidos/ASIN/4891003030/

Essential .NET
http://www.amazon.co.jp/exec/obidos/ASIN/4891003685/
ぢゃん♪
大ベテラン
会議室デビュー日: 2003/06/12
投稿数: 208
お住まい・勤務地: 都内
投稿日時: 2003-07-17 09:55
引用:

catsさんの書き込み (2003-07-17 09:35) より:

ildasmで見てみればはっきりします。



納得しました。想像が根拠ではなく、実際にdelegate==型(class)なのですね。


引用:

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

自分で読んで自分で判断してください。



私が知りたかったことは、内容そのものよりも、「想像上の理論」が根拠だったのかどうか、なのです。
「想像」を元にした内容をいくら読んでも、その疑問には答えてくれません。
幸いcatsさんが示してくれましたが。

以上、この議論そのものには関わりたくないので、このスレッドからは消えます。

[ メッセージ編集済み 編集者: ぢゃん♪ 編集日時 2003-07-17 09:56 ]
未記入
ぬし
会議室デビュー日: 2002/03/28
投稿数: 255
投稿日時: 2003-07-17 09:59
>catsさんの書き込み (2003-07-17 09:35) より:
>なんか議論がかみ合っていないですね。
ひょっとして,C#のdelegateはマイクロソフト地方の方言なのでは?
とすればかみ合わなくても不思議はない.よくある話です.
なか-chan@最愛のiMac
ぬし
会議室デビュー日: 2002/07/17
投稿数: 385
お住まい・勤務地: 和光市・世田谷区
投稿日時: 2003-07-17 10:29
全然関係ないですが、こんなの出てます。
Microsoft Java Language Conversion Assistant 2.0
http://microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=46BEA47E-D47F-4349-9B4F-904B0A973174
(Java 言語のコードを Visual C#に自動的に変換するツール)

VS.NET2003が必要なので試していません。


#そういえば、今日はデビュー1周年=誕生日だ...
object
ぬし
会議室デビュー日: 2002/03/20
投稿数: 338
お住まい・勤務地: 香川県高松市
投稿日時: 2003-07-17 10:34
objectです。

>catsさん
私も一応
「プログラミングMicrosoft .NET Framework」
「Essential .NET」
を読んでいますが、「Essential .NET」はまだ途中です。

私は「delegate」が実際に「class」に変換されているから型そのものだ、というのは少し弱いと思います。
それは、「delegate」が型(Class)である事を確認しただけだと思います。

問題は、
何故「delegate」が型でないといけないか
に対する納得だと私は思いますよ?

「議論がかみ合っていない」様に見えるのは、英-Ranさんが引用だけで議論し、何かあると直ぐに個人攻撃をして、まともに話をしようとしないからだと思います。

私は「オブジェクト指向」は、まだまだスタートしたばかりだと思っています。
その中で、「Class」は抽象データ型を記述する為の、最も原始的で、しかも単なる手段だと思っています。
「Class」至上主義で、「Class」の殻から出ない事に一番の価値を見出している限り、「Class」を超える新しい概念も出て来ないと思います。
実際、この様な場でも本音の議論が出来ないですよね。
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2003-07-17 10:48
.NETフレームワークでは、デリゲート型はSystem.MulticastDelegateを親に持つクラス型です。

問題となっているのは、メソッドの引数と返り値が同じであれば、作成者が意図していない(リンク先の言葉で言う継承されていない)型のデリゲートの値とすることもできるという事です。
それで、前の私の書き込みの
メソッドに明確な型を持たせるというのも面白いかもしれませんね
となるわけです。
引用:
>ya さん
>メソッドを書いた時点でそれが定義ですし。で、問題はパラメータと戻り値が同じならば人間は共通点を見つけるわけで、これはオブジェクト指向的に言うと同じ型から派生したものだと考える事ができるわけですが、しかしC#にはそれはない(delegateとは別物)。これはそれが型の発散を招く(つまり望ましくない)からだと思うのですが。


「共通点を見つける」というのには納得しました。
システム開発でも
1.「田中さん・佐藤さん・鈴木さんがいる。鈴木さんは毎月初めに田中さんに・・・」(現在の物理モデルを作る)
2.「田中さん・佐藤さんは同じ性質を持っているのでグループ化できる。グループの名前は正社員。鈴木さんは別の性質を持っている、名前は派遣社員。正社員と派遣社員もグループに・・・」(クラスを用いた論理モデルを作る)
とすると思いますが(OOでは物理モデルとか論理モデルとか言わないんでしたっけ?)、同じ性質を持っているもの(インスタンス)をグループ(すなわちクラス)化することで、モデルがより捉えやすくなります。
メソッドの「性質」というのがすなわち「引数と返り値」という事なんですよね?だから同じdelegate型で参照できても良いと。
「型の発散を招く」というのも分かりました。想像してみましたが、確かに面倒くさくなりそうです。(ここら辺がC#的。JavaならOO的に正しくするべき、となるでしょう)
「同じ型から派生したものだと考える事ができる」というのは納得できませんでしたが。

引用:
>英-Ran さん
そろそろ、Javaの無名InnerClassの設計がいかによく考えられたものであるかということに気付きませんか?


実は無名InnerClassについて良く分かっていません。
これから調べてみますので、ちょいとお待ちを。


しかし、こういう話をするのって楽しいですね。
私の周りでしようとしても、議論がかみ合う合わない以前に乗ってこないですよ。
飲み会でこんな話振ろうもんなら、「こんな所でまで仕事の話したくね〜」とか言われそうだし。


[ メッセージ編集済み 編集者: 一郎 編集日時 2003-07-17 11:18 ]
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-07-17 11:00
 改めて自分の知識、技術、意欲の不足を感じながら・・・
引用:

一郎さんの書き込み (2003-07-17 10:48) より:

私の周りでしようとしても、議論がかみ合う合わない以前に乗ってこないですよ。
飲み会でこんな話振ろうもんなら、「こんな所でまで仕事の話したくね〜」とか言われそうだし。


同感。とっても理解が進んでいる“気がします”。

#実は、私がサマリーを作りたかったりする(自爆)

で、ここの「規約」を調べたのですが、会議室への投稿は、
すべて@ITの「著作物」になるようです。
仮に議事録なり要約なりを作ったとして、それって、どうやって配る?見せる?
このスレッド内で「スレッド」が複数できているので、
単純なペーパーにするのは難しいなぁ?と、思っているのですが・・・

#「したい」と「する」は違うので、注意

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