静的型付けとクジラとマグロ
メモ的な簡単なポストですが、静的型付け言語 vs 動的型付け言語の議論についての自分の考えを簡単に紹介します。
- 動的型付け言語: クジラ – 肺で呼吸する
- 静的型付け言語: マグロ – エラで呼吸する
と考えると良いと思います。
クジラもマグロも大海を不自由なく暮らしています。どちらが有利ってことは特になさそうです。でも決定的な違いがあります。動物の生命にとって不可欠な酸素を摂取する方法が大きく異なるのです。
マグロからしたら、「クジラくん、君はエラがないからいちいち水面に出て呼吸をしないといけない。よくそんなので生きていけるなぁ。いちいち呼吸しなければならないから、水面近くで生活しなきゃいけなくて、不自由じゃないかい?」と考えがちです。
でもクジラからしたら「いやいや、結構長く息を止められるし、全然苦労しないよ!僕はキロ単位の深さまで潜水し、ダイオウイカを喰っているけど何か?」って反論するでしょう。
静的型付け言語に慣れている人は、型を使わずに大規模なプログラムを開発するなんて想像できないかもしれません。でも実際にそれをやっているチームはたくさんあります。
じゃ〜、人間も同じように不自由なく海で暮らせるかというと、全然そんなことはありません。あっという間に死んでしまいます。肺呼吸のクジラが海で不自由なく暮らせることと、同じ肺呼吸の人間が数時間でも生きられるかどうかは別問題です。肺呼吸だけの問題ではないのです
同じように静的型付け言語と動的型付け言語の違いは型の有無だけではありません。動的型付け言語は独自の進化を遂げ、静的型付け言語にはない特徴を数多く得ています。お互いにお互いの方法で進化し、大規模開発でも通用するように進化しています。それを無視して議論しても、「クジラもエラ呼吸にすれば良いはずだ!」という方向違いの議論になってしまいます。
型だけに着目せずに、実際に作成されているものをよく見ながら、全体の適応の仕組みの理解する必要があるのではないでしょうか?そして型というのは、実はそんなに決定的に重要なことではないのです。
少なくとも動物の呼吸の根幹に比べれば、型を静的に宣言するか否かというのは軽微な違いにも見えます。
Discussion