2007-05-01から1ヶ月間の記事一覧

例外クラスの書き方

C#

http://www.microsoft.com/japan/msdn/columns/csharp/csharp08162001.aspxメモ。特に最後の部分の例外チェッカがコンパクトでよい。

PLINQの資料

C#

PLINQの資料を見つけました。http://www.bluebytesoftware.com/blog/CommentView,guid,200c3151-fbd5-4bfe-bb1e-0d6b90c6442b.aspxこの記事からパワポ資料が落とせます。以前、PLINQについて書いたときはUNIXのパイプライン的な並列化しか考えてなかったんで…

等値性(等価性)と同一性

関連ネタで。 同一性は同じオブジェクトかどうかの比較、等価性は中身が同じ値かどうかの比較。ポインタが基本の言語ならポインタの比較で同一性の比較、中身の比較は等価性と、それぞれ明示的でわかりやすい。参照が基本の言語だと、どちらの比較なのかが==…

.NETクイズ 回答編

.NETクイズの答え。 問題再掲 以下の結果を予想してください。 using System; class Program { static void Main() { Console.WriteLine( double.NaN == double.NaN ); Console.WriteLine( double.NaN.Equals( double.NaN ) ); } }

lifehack?

ちらかりまくった机の上から、LifeHack本を発掘した。ダメ人間っぷりに orz

ちらしの裏 「等値性(等価性,同値性とも)と同一性」の書きかけ

C#

こないだの.NETクイズの回答の書きかけメモ。 C#ではどうしようもないときを除いて「==」使え、ってことでいいのかな?つっこみ、過不足の指摘、ご意見、大歓迎です。

Bjarne Stroustrup's FAQ

C++の生みの親Bjarne Stroustrup氏のFAQを見つけた。 http://www.research.att.com/~bs/bs_faq.htmlJava、C#、C++/CLIをどう思うか書いてあって興味深い。難しい言語を作る人だけあって、書いてある英語もまた難しい(^^; 難しいの基準が人より高いんだろうな…

.NET2.0の知られざるカリー化機能

C#

使いどころがわからないって書いたのにまたカリー化。昨日はC#3.0に最近追加されたカリー化を扱ったけど、実は.NET2.0にもカリー化機能があります。最初に言っておくとスマートじゃないけどね。DynamicMethodを使ってデリゲート化する際にオブジェクトをバイ…

C#3.0にカリー化が入った

C#

Orcas β1にひっそりとカリー化が追加されていました。ついに来たかというか、やっぱり来たかというか。 Extension methods and Curried Delegates によれば、拡張メソッドをデリゲートでカリー化できるようになったそうな。ただし、参照型のみで値型はダメ。…

call と callvirt その4

IL

ILはごく少数の型しか意識しないそうだ(規格のあちらこちらで意識する型の数が違うような…(^^;)。CLS(共通言語規定)やCTS(共通型システム)はコンパイラなどのIL生成器ががんばるところらしい。 海外のcallとcallvirtの記事 callとcallvirtがJITによってどう…

call と callvirt その3 : struct と callvirt

IL C#

MSDNライブラリの Constrained の説明によると、「通常、callvirt 命令は値型では有効ではありません。」だそうだけど、普通に動いた。ILの世界はおおらかだ。 using System; using System.Reflection.Emit; struct Baz { private int n; public int Value {…

ILの call と callvirt の違い その2

IL C#

nullもガッと鳴いたよ。 using System; using System.Reflection.Emit; class Duck { public void Say() { Console.WriteLine( "ガッ" ); } } class Class3 { static void Main() { // void Do() メソッドを作る DynamicMethod dm = new DynamicMethod( "Do"…

リフレクションのパフォーマンス

C#

同じ筆者によるリフレクションのパフォーマンスの記事。http://www.microsoft.com/japan/msdn/msdnmag/issues/05/07/Reflection/default.aspxリフレクションの何が遅くて何が遅くないのか、また、どうすれば速くできるのかといったあたり。ただし、.NET2.0の…

DynamicMethodによる動的生成の方法

C# IL

http://blogs.msdn.com/joelpob/archive/2004/03/31/105282.aspxデリゲート化は必須ではないみたい。

ILの call と callvirt の違い

IL C#

当面ILとC#と.NETな記録。インサイドかもしれないし、ダークサイドかもしれない実験記です。 実験1 ILの call と callvirt の違いがよくわからないのにプロパティを読もうってのがそもそもの間違いだなと思って、比較するコードを書いてみました。 よくある…

enumの真実

enumは基礎となる型に別名を与える。この言い方にズガンとショックを受けた。でも、そう言われてみればその通りだ…。そんな考え方したことなかった…。

.NETクイズ

以下の結果を予想してください。 using System; class Program { static void Main() { Console.WriteLine( double.NaN == double.NaN ); Console.WriteLine( double.NaN.Equals( double.NaN ) ); } }

Constrained

IL

Constrainedって仮想メソッド呼ぶときにしか使えないだけなのか…。素直にCall使えばよさげ。手抜きできると思ったのに…。

IL Visualizer

C# IL

青柳さんのところで DynamicMethod 用の DebuggerVisualizer の情報を発見。新バージョンのIL Visualizerがあったので、こっちを入れてみました。 http://blogs.msdn.com/haibo_luo/archive/2006/11/16/take-two-il-visualizer.aspx インストールは記事の下…

FastPropertyComparer その3

C# IL

もうかれこれ一週間もこれいじってるのか!間口が広いライブラリを作るのは大変ですねぇ。 で、新しいバグを2件見つけました。再現コード。 using System; using System.Collections.Generic; using SioKoshou; interface IDetarame { char Value { get; } …

スコットガさんのコード

あなごるにスコットガさんのコードが。しかもPascalかよっ! http://golf.shinh.org/reveal.rb?128+bits/scottg/1178313234

コンパイラって

C#

偉大だな、とか思ったりw FastPropertyComparerでNullableも特別なサポートが必要だってわかった。メンドー。 普段使ってるのはNullableジェネリック構造体。比較はNullableクラスにあるCompare。 public struct Nullable where T : struct public static c…

JITの参照範囲チェックをスキップ?

C# IL

id:siokoshou:20070505 のコードにもう一つ問題がありました。 DynamicMethod dm = new DynamicMethod( "Compare", typeof( int ), new Type[] { t, t }, this.GetType() ); (tは typeof( T )) として、動的メソッドを FastPropertyComparer クラスのメソッ…

一方WPFは…

http://msdn2.microsoft.com/en-us/library/ms745786.aspx えーっと…。FastPropertyComparerはいらない子? orz

メタプログラミングと動的生成

C# IL

FastPropertyComparerはいろいろ試しているうちにぶくぶくと大きくなってしまい、ついでに.NETのライブラリを拡張するかのような大きな目標とあいまって、テスト項目が大変なことになってしまってます。MSの波村さんの苦労がちょっとわかりました(^^; 様々な…

FizzBuzz

コンピュータサイエンス学科卒業生の過半数は1から100までの数をプリントするプログラムを書けない http://www.aoky.net/articles/jeff_atwood/why_cant_programmers_program.htm via オレンジニュース 1から100までの数をプリントするプログラムを書け。た…

System.Threading.Parallel

Ecma-335を読んでたら System.Threading.Parallel なんてのがあった。google:System.Threading.Parallelぐぐっても世界で数件しか出てこない…。ParallelFor、ParallelForEach、ParallelWhileなんてあって、OpenMPみたい。sourceforgeに実験的な実装があった…

続 FastPropertyComparer

C#

id:siokoshou:20070505 の FastPropertyComparer ですが、いろいろ問題があるんでもっとまともなのをそのうち出します。 気づいている問題点 IComparable または IComparable じゃない T型だと例外発生 → ToString() して比較する処理を復活させた string の…

FastPropertyComparer

C#

(さらに追記) この日の日記のコードはいろいろ問題があるので、使わないでください。詳しくは id:siokoshou:20070507。 (さらに追記終わり)(追記:訂正) すみません、派手に間違っていました。 以下の FastPropertyComparer は、個別のエンティティ型にあわせ…

SortableBindingList その2

C#

id:siokoshou:20070225 をもうちょっと改良してみるの巻。 CodeZineで同じネタがVB化されてました。 元ネタはこちら。http://www.microsoft.com/japan/msdn/columns/winforms/winforms02182005.aspx CodeZineの記事は明らかに元ネタを参考にしているのに参考…