静的

「いつも議論を避けるネタだけれど、静的型について。」
関数の引数が int になっていたとして、int ならなんでもいいのかと言えば、そうではない。ある月の月末日を求める関数なら、"月" を渡さなければならず、12 を超える数値を渡した時の振る舞いは、関数を作った人のセンスによって異なる。int 型なら何を渡してもいいことにはならず、コンパイラでエラーチェックができることは、そんなに大きなメリットではないと考えている。

言ってしまえば、ネイティブ型はコンパイラのための情報に過ぎず、機能上の制約は引数チェック処理のような関数の中の処理に任される。構造体やオブジェクト指向で機能上の制約を持たせる事もできるようになり、上の例で言えば "月" クラスのインスタンスと云う制約は表現でき、一応、納得はできるのだけれど、もっと柔軟な方がいいと思うのだ。その処理ブロックが期待する値を渡す事ができるなら、別に型なんてどうでもいいんぢゃない?

鈴木さんから受け取った書類を処理する仕事を受け持っていたとする。ずっと、鈴木さんから書類を受け取るのが当然と思っていたのだけれど、鈴木さんが病気になった時に田中さんから書類をもらって、鈴木さんとは書類の形式が違うんだけれども、必要な情報さえちゃんと記載されていれば、自分の仕事は滞りなく進む。そんな感じだ。

どうしても厳密な仕様を表現するなら、C++ の抽象クラス、Java のインターフェース、Objective-Cプロトコルで表現するとして、普段は厳密な型にこだわらず、Objective-CRuby みたいに、柔軟なメソッド呼び出しができた方が、面白いことが実現できる。…そんな気がするのだ。