ブログ記事紹介: 動的型付け vs 静的型付け

Matz氏のつぶやきで次の記事を知りました:

Lisp, C++, Java, Pytho, Ruby, Closure, Haskel, OCaml など様々なプログラミング言語に言及しつつ、動的型付け言語と静的型付け言語の優劣を論じ、最終的には「強い静的型付け言語」に軍配を上げています。

面白いのは、筆者が挙げる3つの誤解です:

  1. Javaは静的型付け言語の代表だ。
  2. 静的型付けは主にその実行速度によって正当化される。
  3. 静的型付けは些細なバグしか捕捉しない。

私自身、動的型付け言語の優位性を説明する際、これらの「誤解」を論拠にしていました。要するに、

  • 静的型付け言語では、人間が機械のために変数の型を宣言しなければならない。
  • 人間の時間は高価で、機械の時間は安価。
  • 型宣言ではたいしてバグは減らない。
  • だから、静的型付けは無駄だ。

といった論理です。

筆者によれば、弱い静的型付け言語Javaと比較するから話がおかしくなるのであって、HaskelやOCamlに代表される強い静的型付け言語を使えば、確実にバグは減るし、型推論もしてくれるからソースコードの記述量もたいして増えなくて万々歳、ということになるようです。

私にはHaskelやOCamlでプログラムを書いた経験がありませんが、Wikipediaでコード例を見た限りでは、あまり普及しそうな言語には見えません。しかし、もう少しなじみやすい構文を持つ「強い静的型付け言語」*1が存在するなら、試してみてもいいかなと思いました。

*1:筆者は言及していないけど、Scalaはその候補になるかもね。