仕事のことで、C#でツールを作ってもらっているんですけど、
C#の言語仕様になかなかなれない様子で、
リストの sort の評価関数に delegate つっこむのがキモイとか、評判でした。
これのこと?
なんでも、イベントハンドラに delegate はまだ許せるが、
ジェネリックなコレクションクラスを利用するときに、
sort の評価関数に delegate 使うのはどうなんよ?
継承でいいじゃん?って言うことらしい。
自分的には、カスタムな sort するくらいのことに、
継承なんて問題外なんですが、これって、
そもそも Delphi といっしょだよなあ、
慣れだよ、慣れとか……。
そのプルグラマは、C++ 出身なので、特にキモく感じるらしい。
C++ 流だと、継承なのか?と思ったけど、単に、メソッドポインタがないので慣れないせいかも。
それはそれとして、
sort すんのに、呼び出し側で、メソッド定義するのは
面倒という話も聞いたけど、
(C#なら、Delphiと違って、宣言いらない分楽だと思うけど)
それならば、C# 2.0 の匿名メソッドでいけるじゃんよ?
って話しに。
つまり、こう
さらに、Rubyとかやってると、匿名メソッド(というか、ブロック構文ね)とか、普通ですよ?とかいう話にも。
以下は、Ruby で、配列をランダム に sort するワンライナー(一行コード)。
楽ちん?
第一、Javaなんてば、java.util.Comparator 継承して、
delgateの代わりに、new HogeComparator 渡すんだぜ?
なんて話まではいかなかったけど。
何が言いたいかって言うと、
別に、C#に慣れないって話しではなく……。
C#って、
イベントハンドラ周りが delegate だったり、
delegateってようは、メソッドポインタ相当とすると、
Delphiと大してかわらんねー?、
これならいつでも移れるね?という安心感があるなという話。
さすが、Hejlsberg(C#設計者) だぜ?
とはいえ、C# 2.0 の匿名メソッドや、ジェネリック、イテーレタの yield が
うらやましすぎるけど……。
クソー、C#が、ネィティブ対応してれば、今頃は、連邦のモビルスーツな(ry
そういや、
去年くらいから、Ruby流行ってるって言っても、
ピンと来てないらしく、
そのプログラマさんは、
Ruby on Rails もご存じではなかった。
たぶん、Rubyの知名度ってまだまだその程度のなんだろうと思う……。
コメント (2)
Delphiはポインタを隠蔽・安全にしたためか、C++よりもポインタを駆使するケースが多いですよね。
逆にC++はポインタは出来るだけ避けて、クラス継承テクニックで行うケースが多いように感じます。
C++においてのテンプレートの有り難味なんてのは、まさにこの土壌の違いからくるところなんでしょうね。
投稿者: Ko-Ta | 2007年06月21日 10:36
日時: 2007年06月21日 10:36
Delphiのメソッドポインタを駆使する手法は、Delphi設計者ならでわだと思いまする。
C++テンプレートてば、ModernC++Designeとか見ると、変態すぎてこまります。
genericとか言ってるばやいじゃないぜーって言うほど、土壌がちがいますよね。
投稿者: TOBY | 2007年06月23日 13:38
日時: 2007年06月23日 13:38