型の無い言語は使いたくない

と、言うと、「いや、xx言語にも型はある」とか、言われる場合が多い。というかさっき言われた(日記)

まあ、言いたいことはわかるし、そういう議論も別に嫌いではないけど、「型の無い言語は使いたくない」と言うとき、話したいのは、そういう議論ではないんだ…


そういう場合、なんて言うのがいいのだろうね?僕は、そういうときは、「static verifierが無いのはいやだ」とか言うのだけど、これもまだ曖昧で、例えばLispの括弧が一致してないのがエラーになるのだって、一種のstatic verifierと言えなくもないよね?

「強いstatic verifierが欲しい」とかどうだろうか?強いとは何?あと強いstatic verifierとか言っちゃうと、検証系言語の話だと思われてしまう可能性もある。


あといきなり「強いstatic verifierが欲しい(キリッ」とか言ってしまうのって文脈が汲み取れなくて、「??」ってなってしまいそう

Lispとかどう?」
「型の無い言語は使いたくない」
Lispにだって型はあるんですが」(ウザいLV1)
「強いstatic verifierが欲しいんです(キリッ」(ウザいLV2)

というように、ウザいレベルエンジン回転数を徐々に上げていくからまだ会話として成立させやすいわけで、いきなり「つよスタ」とか言っちゃうと、

Lispとかどう?」
「強いstatic verifierが欲しいんです(キリッ」(ウザいLV2)
「(うわぁ…)」

ってなってしまいがち…



まあ違う、そうではないんだ…言いたいこととしては、

  • 変数名のタイポが原因のundefined例外を出ないように
  • 関数の引数の数の一致
  • ある程度の値の妥当性

のチェックは、型チェックという機構でカバレッジに関係無く全コードパスについて検証できるのだから、そのぐらいはやってほしい。まあ文字数が増えるという問題があるけど、型名はある程度可読性の向上にも役立つのだから、文字数が増えるのも完全に無駄ではない、と、僕は考えている。


というような話だ。これを、議論が脱線しないように伝えるにはどうすればいいだろうか?


まあちゃんとそれを伝えるべきかな、つまり、

Lispとかどう?」
「変数名のタイポが実行時エラーになる系言語はちょっと…」

と言えるように、毎日訓練してついうっかり、「型の無い言語は使いたくない」とか言わないように心構えをしておこう。