.NET

「C# でリバーシ,どうかく?」

思いがけず揃った感じ.読み比べてみるとおもしろい. 申し訳なし - 東方算程譚 LINQでリバーシ - 菊池 Blog LINQでリバーシ(2) - 菊池 Blog LINQでリバーシ(3) - 菊池 Blog LINQでリバーシ(4) - 菊池 Blog (追記: 増えた!) C#でリバーシ - 菊池 Blog

WPF に HLSL がやってくる

WPF Performance Improvements .NET 3.5 SP1 includes several significant performance optimizations and improvements to WPF. Some of the specific graphics improvements include: Smoother animations Hardware accelerated rendering of Blur and Dr…

k.inaba さんの sub/BtsQ.java を C# に移植してみた

『Generics > Template なところ - d.y.d.』にあった "sub/BtsQ.java" を C# に書き換えてみました.なんか機械的に置き換えるだけでコンパイルが通ってしまったのが怖いような. // original version by k.inaba // http://www.kmonos.net/wlog/85.html#_0…

.NET Generics について一言いいたくなったときに読み直すべき PPT

とりあえず道路族,みたいな. class root { } class derivedA : root { } class derivedB : root { } internal class derived<T> : T where T : root { } まぁダイヤモンド継承のようなMixinに使いたいんだけど、このC<T>もだめ。 ああ、愛しのテンプレート様。 .</t></t>…

Dispose の書き方と確定的破棄に関する戦略

現在の C# はこんな感じだけどvoid Foo() { using (StreamReader file = new StreamReader(@"C:\a.txt")) { // ファイルを使った処理... } // ここで Dispose } D っぽくこう書けるようにならないかなーvoid Foo() { scope StreamReader file = new StreamRe…

TechEd 2008 North America のディープなセッション

開催期間は2008年6月3日から8日. レベル400以上で開発者向け良さげなセッションのリスト。 確かにおもしろそうなのがちらほら.以下のは私も聞きたいな*1. How LINQ Works: A Deep Dive into the Implementation of LINQ (Alex Turner) Want to know what …

はてなキーワードで読み方を調べる

きっかけは arton さんのところにあった読み方ネタ. LINQ本とか書く人がいたら、ぜひとも、リンクと読むとカタカナ表記をしておいて欲しいな。きっとリンキューとか口にする人がいて、最初何を話しているかわからないとかありそうだから。 P.I.Lはピルでは…

特殊化された拡張メソッドの使用例

先日のNyaRuRuさんのエントリ(d:id:NyaRuRu:20080328:p1)の考え方は自分の中に無かった。面白かったです。便利そうだけどパッと応用例が浮かばない・・・。C++屋さんなら得意かもしれませんね。 確かに私もそれほど応用例をすぐに思いつけるわけではないの…

Visual C# の IntelliSense の 2 つの性質,みたいな話

しばしば比較される Visual C# と Visual C++ の IntelliSense ですが,こういう視点で見てみるとどうでしょう? 簡単のためにインスタンスメソッド (拡張メソッドも含む) の補完に話を絞ります. Visual C# では,補完候補に出てくるインスタンスメソッドを…

色々新しいパラダイムもあるけれど,subtype polymorphism も元気ですみたいな話

var children = new List<Child>(); // List<Child> の concept は保存される ICollection<Child> children = new List<Child>(); // ICollection<Child> まで concept を弱める 真の concept-based overload があって,それがライブラリ設計者にとっても利用者にとっても当たり前の世界を考えて</child></child></child></child></child>…

んじゃ F# だとどうよみたいな話

F# 1.9.3.7 にて実験. open System open System.Collections.Generic open Microsoft.FSharp type Util = struct [<OverloadID("1")>] static member Hey (dict:IDictionary<'a, 'b> when 'b:>IEnumerable<'a>) = "HauHau!" [<OverloadID("2")>] static member Hey (dict:IDictionary<'a, 'b> </overloadid("2")></overloadid("1")>…

C# には concept-based overload は (多分) 存在しないみたいな話

拡張メソッドと不思議なパターンマッチ - NyaRuRuの日記 concept-based overload の使い道はそれこそいくらでも…… - Cry’s Diary んーと,C++0x は規格が決まってから見ればいいやと思ってあんまり規格を追いかけてないのですが,とりあえず C# 2.0/3.0 では…

拡張メソッドと不思議なパターンマッチ

あんまり知られてなさそうな,C# 3.0 の不思議な世界. 不思議なパターンマッチ 例えば次のような拡張メソッドを考えます. public static string Hey<T, U>(this IDictionary<T, U> dict) where U : IEnumerable<T> { return "Hey!"; } この拡張メソッドは,インスタンスが</t></t,></t,>…

Andrew Kennedy さんのページ

先ほどのラムダ式の話に絡んで,Polymorphic lambda とか System F とか C# でググっていたら次のようなページを見つけました. http://research.microsoft.com/~akenn/generics/index.html:image:large http://research.microsoft.com/~akenn/generics/inde…

C++0x and Lambda Expression

戻り値型の位置 新しい関数宣言構文auto 関数名(引数リスト)->返却型; これ良いなぁ. そういえば『C++の設計と進化』でも関数戻り値の型を最後に持ってくるのを検討した話が出てきたような.確か template 導入時に,1-pass で処理したいとかでしたっけ. …

Xperf : Event Tracing for Windows frontend

まとめ コールド起動でパフォーマンスを向上させる最良の方法は、起動時に実行されるコードをできるだけ小さく保つことです。そのためには、遅延が許容される初期化は後で処理されるようにし、各参照についても直ちに読み込む必要があるかどうかをチェックし…

信頼できる書き込み・読み込み

そろそろ一回どこかでまとめたい.とりあえずメモ. Transactional NTFS OS レベルでの 2-phase commit を実現可能 OS がフリーズしてもロールバック可能 Windows Vista / Windows Server 2008 では Windows Update にも使っている ある瞬間の読み取り用 Sna…

自動生成された COM Interop アセンブリのもっと便利な使い方

IDL とコード自動生成の罠 なんで自動生成したタイプライブラリの内容が間違ってるんだろう。char *pStr を ref short pStr に直すなよ…… 実は IDL から TLB に変換したところでその辺の判断に必要な情報が落ちちゃうんですよねぇ.困った話です.私もむかし…

処理の連鎖をどう書くか? - 演算子方式とメソッドチェイン方式

算術演算の拡張 普段あまり意識しないかもしれませんが,算術演算も「処理の連鎖を組み合わせて大きな処理を書く」の一種です.個々の演算で引数の型と戻り値の型がどう対応するかは事前に決まっていて,式全体の型はその組み合わせから自然に導出されます.…

私とC++みたいな話

egtra 2008/03/14 18:36 今更ですけど、C++でもovenはまさにメソッドチェインですよね。使っているとたしかにauto(のconst&)変数で受けたくなることがあります(というかさっき出くわしました)。今回は関数テンプレートにして逃げられましたけど、autoで済…

WPF の binding に驚いた人をさらに唸らせるかもしれない Mathematica の Dynamic

XAML のデータバインディングって「プログラミング言語」っぽいよね? とか一瞬思ったので今日は Mathematica 6.0 の Dynamic の話. Mathematica は学生を除いてお値段がアレ過ぎるので,ほとんどの人はこの機能をご存じないかと思いますが,かなり面白い試…

なぜ C# でメソッドチェインが楽しいのかを考えてみた

未だにモニャド (失礼,かみました) が何なのかよく分かってないんですが,何となく分かってきたような気もするので,とりあえず何か書いてみる試み.とはいえよく分かっていないかもしれない言葉で書くのは怖いので,以下では C# の言葉で何が楽しいのかを…

Query Expression Pattern で Maybe monad を書く

Query Expression Pattern C# 3.0 には Query expression pattern というものがあって,このパターンと同じ構造を持つ型はクエリ式に使うことができます.IEnumerable<T> かどうかは関係ありません.duck-typing みたいですね. delegate R Func<T1,R>(T1 arg1); dele</t1,r></t>…

そもそも「ただの静的型付け言語」ってなんだろう?

この件、もう少し考えてみて、何が起こっているのかやっと理解できたような気がします。 この話って要するに C#3.0は「型を明示しない静的型付け言語」になりました! という派閥と、 C#も(C++0xと同様に)「場合によっては型の明示を省略できるただの静的…

アップキャストと型推論に見る思想の違い

C++ でメソッドチェインが流行らなかったのは参照の寿命管理が厄介だったからじゃね? いやまあ適当に言ってみただけです気にしないで下さい.実は単に偶然の産物という気もします. struct Odd { int dummy; }; struct Even { int dummy; }; Odd ToOdd(Even…

「その場で」と「あとから」と成功体験

昨日のリアルタイムモニタの話を書いた後,色々考えてみたんですが,ちょっと思い出したことがあるのでメモ. リアルタイムデバッグ信仰と成功体験 これは自分でも経験があるのですが,ゲームプログラミングはじめたての頃は,「リアルタイムにパフォーマン…

それはそれとしてモニタ系ツールは面白い

さてさて,「タスクマネージャの数字に一喜一憂しても多分意味ないよ」と書き続けている当日記ですが,それはそれとして私自身はといえば,タスクマネージャの数字ぼけーっと眺めるのが結構好きだったりします.Windows Vista からはリソースモニタという新…

ユーザの感情に作用する遅延書き込みの仕組みを暴け - 記事紹介: Inside Vista SP1 File Copy Improvements (3)

過去の関連記事 Vista のファイルコピーが遅い件について 前回記事 記事紹介: Inside Vista SP1 File Copy Improvements (1) 記事紹介: Inside Vista SP1 File Copy Improvements (2) それではいよいよ最終回にしてメインディッシュ.記事紹介から離れてこの…

クエリ式で総当たり

発端 『C# の yield return の使い道 - u_1rohのカタチ』にコメントを書く. 久しぶりに yhara くんの『Ruby勉強会@関西-16「30分でわかるcallccの使い方」- Greenbear Diar』を読み直す. oxy くんの『Non Determinism - Rubyのある風景』を思い出す. そ…

記事訂正: DLR AST の直接コンパイルは依然として標準サポートでした

Microsoft.Scripting.Ast.TreeCompiler 『C#, DLR AST, meta programming』で「DLR AST の直接コンパイルは public クラスからはできない」と書きましたが,すみません,誤報でした. 荒井さんのエントリ『DLRのASTのみを使う』にあるように,TreeCompiler …