同値関係
あるインスタンスnがある。このインスタンスの真の型(動的な型)は問わないものとする。反射律:nの静的な型がAであるならば、nをAにキャストできる。 対称律:nの静的な型がAであり、これをBにキャストできるならば、再度Aにキャストできる。...
View ArticleSystem.Drawing.Point
2次元座標を表す、おなじみのPoint構造体。こいつがSystem.Drawing名前空間にあることは、ちょっとした不満である。理由は簡単で、2次元座標とは、何も描画するときだけに使うものではないからだ。たとえばControl.Locationプロパティに使われるが、Locationプロパティを設定することは、何かを描画しているという意識なく行われるだろう。だが、Windowsはウィンドウの移動を裏...
View Article制約
「どんなデータでなければならないか」をプログラミング言語で書くのは容易だが、「どんな処理をしなければならないか」を書くのは困難である。「その処理をした後にデータはどうなっていなければならないか」なら書けるが、それでは「どんな処理をしなければならないか」を完全に代替できない。
View Article眠れぬ夜の空想
これはなかなか寝付けない夜にとりとめもなく考えていた空想であり、そのまま考えていては朝になってしまうので強制的に打ち切った思考の断片である。人間を、年齢層と性別で分けることを考える。年齢層10歳未満10代20代30代…性別男 A 女 B...
View Articleぶっくまーく
コンパイル時ダックタイピング中の人がどう思っているかと,外からどう思われているかStructural C++C++ と Structural Polymorphism と型推論LLとOO面倒になったので列挙ストップ。あとは各ページのリンクなりトラックバックなりを辿るべし。しかし、何が書いてあるんだかさっぱり理解できねぇじゃねーかちくしょうめ。
View Article喜ぶべきか悲しむべきか
オブジェクト指向を突き詰めていくと、どうしても動的言語に行き着いてしまう気がする。考えれば考えるほど、「基底クラスと派生クラスの関係」と「クラスとインスタンスの関係」に違いがないように思えてくる。「静的型チェック」は「プログラミング」に要請されることではあるが、「オブジェクト指向」に要請されることではないものなぁ。
View Article車なんて…っ!
思わずこんなタイトルをつけてしまったが、車ではなくてオブジェクト指向のお話。車はガソリンがなければ動きません(ディーゼル他、非ガソリン車はとりあえず置いといて)。最近高いですね、ガソリン。ご存知のように、ガソリンにはレギュラーと廃屋ハイオクがあります。レギュラー用のエンジンにハイオクを入れても大丈夫ですが、ハイオク用のエンジンにレギュラーを入れると壊れてしまいます。面倒なのでコードは載せません。各々...
View Articleインターフェイスの要件は最小であるべきか?
なんだかぱっとしないタイトル。ここで言う「インターフェイス」とは、多重継承できるあの interface じゃなくて、もっと一般的な意味でのそれです。約束事、みたいな。例えば、メソッドの引数に何かコレクションを受け取るとして、その型はどう宣言すべきか、と。IEnumerable<T> か、ICollection<T> か、IList<T> か、はたまた T[]...
View ArticleWeb時代の分散オブジェクト指向?
注:これはまとまっていない思考の断片である。オブジェクト指向とは、端的に言えば、現実世界に存在する何らかの対象を、プログラム上に抽象化して表現する手法である。抽象化というのは、対象が持つ無限の性質のうち、関心のある一部だけをとりあげることだ(残った無関心な部分を捨てることを「捨象」と言い、抽象と捨象は常に表裏一体である)。たとえば、りんごオブジェクトがどのような特性を備えるべきかは、どんなシステムを...
View Article汎用型を使うときはちょっと注意して欲しい
コードを抽象化して汎用的な部分を切り出す。 基本的にはいいことなのですが、過ぎたるは及ばざるが如しということわざもあります。 KeyValuePairが意外に使える件続きを読む
View Article
More Pages to Explore .....