静的型では思いつくままに型を作る

 JavaLL仮説とか僕は主張していたりするんだけど、みねこあさんとの対話から見えてきた誤解のひとつは、「静的型は最初に正しく型を作らないといけない」というもの。

静的型付け言語では、静的な情報こそが「本質」とされます。
(中略)
だからプログラマは神様じみた万能さでプログラム(=運命)を完璧なものにしなくてはなりません。「アカシックレコード」とか、「ティターンズの犬どもめっ!」とか言いたくなります。けれど、人は神のようにはなれないから、そこで「完璧さ」についてよりすぐれたコンピュータ様のお力添えを戴きたくおもい、日々セッセと型について記述します。

という部分と

一方、動的型付け言語では(中略)プログラムは運用中にチョコチョコ繕いつつ使うモノになります。

の対比が、静的型は最初に型を設計せよ、と認識しているのではないかと思わせるんですね。

 動的言語だろうが、静的言語だろうが、プログラムってのはアルゴリズムとデータ構造なんですよね。動的型だからデータ構造を考えなくていい、なんてことはない。

 静的型でも思いつくままにデータ構造を型として書き連ねて、行き当たりばったりにプログラムを書くんですよ。んで、必要があれば繕いつつ使えばいいんです。そして、繕う際には静的型がゆえのIDEによる機械的リファクタリングサポートで楽してデータ構造をいじりまわせるんですね。

 静的型で軽快にプログラムするコツは、型システムをうまく使おうと事前計画を頑張りすぎないこと。動的言語でプログラムするように、適当に書いちゃうのがいい。そうしたら、あとのリファクタリング動的言語以上に楽だから、動的言語以上に軽快に、脳力を消費せずにプログラムできます。