2009-03-01から1ヶ月間の記事一覧
オブジェクト100万個のコードをコンパイルすると「メタデータを入れる記憶域がありません」みたいなことを言われてコンパイルできない。 50万個だとngenしてもデシリアライズに4分かかる。うーむ。どうもこの100MBのpdbが怪しいんだよなあ。デバッグなしで直…
クラスを7万個作ったらコンパイルしただけでハングしたぞ。うーむ。
1クラスに書けるのが65000行程度のようだなあ。本当か? Controlクラスって65000行しかないのか? 中身はほとんどinternalクラスなのかな。 クラス分割しかないか。くそ。まあたいして可読性は変わらないだろうけど。
クラスの継承は危険そのものなのでなくてもいいように思うが、型引数が長くなりすぎて可読性もへったくれもなくなったジェネリッククラスに名前をつけるのに今のところ必要だ。delegateもFunc<T1,T2,TR>とかでいいじゃんと思うかもしれないが、名前をつけ…
interfaceってなくせないものかな。 C++みたいなconceptというのを考えた。ソースの置き換えみたいな過激なことをせず、かといってinterfaceのように「このメソッドとこのメソッドとこのメソッドが無いとダメ」というのを統一的に設計させるという無理なこと…
LINQの登場により、C#ではコレクションを書き換える場合、列挙すると書き換えた結果をその場で作るIEnumerableを返すのが標準になったと理解している。それは元のコレクションを書き換えない、副作用の無い処理だ。 IEnumerableといっても実際にコレクション…
関数の実行結果をキャッシュすると言うか、keyに対応したvalueが自動生成されるディクショナリ。 class LazyDictionary<TKey, TValue> { Dictionary<TKey, TValue> dic; Func<Tkey, TValue> valueCreator; public LazyDictionary(Dictionary<TKey, TValue> dic, Func<TKey, TValue> valueCreator){ this.dic = dic; this.valueCreato</tkey,></tkey,></tkey,></tkey,></tkey,>…
Hoge[] GetCollection3132() { var a = new Hoge[32598]; a[0] = GetHoge51458(); a[1] = ... ... a[9999] = ... _10000から20000(a); _20000から30000(a); _30000から32598(a); return a; } こんな感じだな。1関数に2万行書けるかわからないけど、とりあえ…
まあ多分通ったんじゃなかろうか。 とりあえずニコチンへの依存を減らさないと学校生活は出来そうに無いので禁煙したい。しかし禁煙すればコードなんか書けない。だからもうさっさと今書いてるのを終わらせて禁煙しようと思う。ニコチンなしで制御できるよう…
本当はこんなことしてる場合じゃないのだが、ちょっと進めた。 new[]{ ... } この配列の中の値を手打ちしていくと、65000を越えたあたりで「型が読み込めない」という例外が飛ぶ。intでもobjectでもなんでもそうだ。それとは別に45000を超えたあたりでdecima…
視覚室と聴覚室を合わせたものが視聴覚室なんだろうか。
参照型かどうかのチェックは(type.IsValueType == false)だと思うのだけど、これが正しいのかどうか良く知らない。けど正しいものとして、とりあえず.NET Frameworkがバージョンアップして、値型でも参照型でもない第三の型が現われた時に、この指定は正しく…
昨日の続き。 そういや自分で言っといて忘れてたけど言語内言語の文法定義に使える。同じオブジェクトにさまざまなinterfaceを実装して遷移させ、インデントはラムダ式を使うとシンプルに書ける。 interfaceをユーザーに実装させるために提供するという道は…
なんか今日は意味もなく酒を飲んだ。 思想の二文字がもっと力を持つ時代に産まれてきたかったなあ。今の時代は馬鹿が一番情報強者だ。騙される奴がいない。騙されたところで2chでネット右翼をやったりXbox360の工作員をやったりだからな。そんなに間違ってる…
クロージャを一々渡してられないようなものもある。GetEnumerator, Count, インデクサ、Dispose辺りはいちいち自分で「Disposeのメソッドはこれです」なんて指定していたら発狂してしまうかもしれない。そういうものにはinterfaceは必要だろう。あとフレーム…
インテリセンスはアルファベット順でそこに入れられるものを全て表示している。でもほとんどは要らないクラスだ。要るクラスを抽出する方法が必要だと思う。 とりあえず自作クラスにはプリフィックスにzとつけている。zはデフォルトだと名前がかぶるクラスが…
SingleLinkedListにIListを実装するとEnumerable.Reverseで大変なことになると思ったのでソースを見てみたが、ぶっちゃけ配列にコピーしてから後ろから順に辿ってるだけなのでまるで関係ない。せめてReverseArrayIteratorとかReverseListIteratorとか作った…
ぐっすり眠って6時半に起きた。昨日ちゃんと眠れなかったのは原因不明のバグに悩まされてたからかもしれない。ソースコードを生成するソースコードを生成するソースコードのあたりで混乱の極みに達していたので、全くバグの原因が分からず解決法も分からない…
識別子なんか数字でいいか。情報はコメントにのせればいいしな。クラス作りまくってるけどそれもどうかと思うし。1クラスに数字のメソッド名、オブジェクトの情報はコメントに書けばいいんじゃないか。全オブジェクトをそれぞれ関数にしても数字10文字あれば…
よし、20万行のソースも関数分割で無事デシリアライズできた。 しかしこれはまだコレクションの中身を関数に分割してるだけで、コレクション自体が100万個とかあったら多分壊れる。あとまれなケースで理論上バグるからそこをどうするかだな。識別子が長くな…
新しい言語表現が旧来の用法と異なるから間違っているというなら、新しい表現に正しいものなんか永久に生まれてこないじゃないか。そうやって正しくない正しくないと言い続けたって言葉は変わっていくんだから、そのうち正しい日本語なんて誰もひとかけらも…
anonymous これでいいじゃないか。
C#大好きharuyutakaさんとしてはプログラミング言語の序列に興味がある。そういえば「C#大好きharuyutakaさんの歌」というのはシャ乱Qの「ラーメン大好き小池さんの唄」にインスパイアされていて、haruyutakaというのはラーメンがおいしくできる小麦粉の名前…
といってカレンダーを見たら今月ほぼ毎日書いている。どうなってるんだ一体。
ブログはRSSリーダーに登録するかなんかして読んでもらう前提で書いているのだが、RSSというのが一般に全然普及していない。RSSも使えない情報弱者に合わせようとすると、毎日更新するハメになる。いくらなんでもそんなに書きたいことはない。 ウェブスライ…
まさか2時半に起きることになろうとは。 しかしこれで夜まで寝なければ今度こそぐっすり眠れるはずだ。 昔から「だらだらする(好きなだけ眠る)」→「コードを書く(2日に1回くらいしか寝ない)」みたいなめちゃくちゃなリズムで生きてきたから、いろんなこと…
子が親への参照を持っているとき、親がdeleteされる時に子が生存し続けるべき状況は存在しない これ自体は間違いなさそうだな。しかしクロージャを入れるのは他人だから、その他人が子だけを参照して親を参照することをやめてしまえば破綻する。よく分からん…
つまり型の定義を循環させないことで、実行パスの循環はまず解決される。再帰は局所的な、1クラスの中に留められる。ポインタの循環も悪性のものを根絶できる。 しかし、しかしだ。なぜ型の定義を循環させなくても工夫すればプログラムが普通に書けちゃうの…
ポインタは循環せざるを得ないとこはあるのだが、クロージャでの使用に留めるべきだろうと思う。クロージャなら暗黙に親への参照は持っているのだが本人はいじれないので問題は無い。クロージャがないならinterfaceのみの使用に留めるべきだという話になるだ…
ボタンがクリックされた時にウインドウをいじりたいなら、ポインタは循環する必要がある。子が親に直接作用するにはポインタが循環する必要がある。これは分かりやすい。 実行パスが循環する必要もある。関数が導入された時、実行パスの循環は局所的な繰り返…