ブログ記事紹介: 動的型付け vs 静的型付け
Matz氏のつぶやきで次の記事を知りました:
Lisp, C++, Java, Pytho, Ruby, Closure, Haskel, OCaml など様々なプログラミング言語に言及しつつ、動的型付け言語と静的型付け言語の優劣を論じ、最終的には「強い静的型付け言語」に軍配を上げています。
面白いのは、筆者が挙げる3つの誤解です:
- Javaは静的型付け言語の代表だ。
- 静的型付けは主にその実行速度によって正当化される。
- 静的型付けは些細なバグしか捕捉しない。
私自身、動的型付け言語の優位性を説明する際、これらの「誤解」を論拠にしていました。要するに、
- 静的型付け言語では、人間が機械のために変数の型を宣言しなければならない。
- 人間の時間は高価で、機械の時間は安価。
- 型宣言ではたいしてバグは減らない。
- だから、静的型付けは無駄だ。
といった論理です。
筆者によれば、弱い静的型付け言語Javaと比較するから話がおかしくなるのであって、HaskelやOCamlに代表される強い静的型付け言語を使えば、確実にバグは減るし、型推論もしてくれるからソースコードの記述量もたいして増えなくて万々歳、ということになるようです。
私にはHaskelやOCamlでプログラムを書いた経験がありませんが、Wikipediaでコード例を見た限りでは、あまり普及しそうな言語には見えません。しかし、もう少しなじみやすい構文を持つ「強い静的型付け言語」*1が存在するなら、試してみてもいいかなと思いました。