※個人の見解です!!
- コード自体の情報量が多い
- ドキュメントの自動生成が楽(少ないドキュメンテーション作業で質の高いドキュメントが作れる)
- エディタ/IDEの自動補完をより強力にすることができる
- 実行するまでもなく様々なことがコンパイル時に検査される
- 実行速度が速い(言語が多い)
- タイプ量が圧倒的に少ない
- やりたいことの実装に集中できる。いろいろ定義を書くだけのキーボード入力が減り本質に集中できる。
- 静的型言語だって補完機能あるからタイプ数はそんな増えないというのはちょっと違って、そもそもそういう記号を入力しなければいけない、という思考に脳みそを占有されることがデメリットだと思う
- 慣れてくると型が動的に決まることによって起こる問題は書いてて気付くので書く分にはそんなに困らない
- やりたいことの実装に集中できる。いろいろ定義を書くだけのキーボード入力が減り本質に集中できる。
- 動的型言語は書く量が減る => 読みやすい
- と思いきやそうでもないシチュエーションもある
- 型があったほうが読みやすいこともある(エディタのコード追いかける機能も静的型言語の方が強力)
- duck typing
- いろいろできる <=> いろいろできすぎる
- リフレクション
- いろいろできる <=> いろいろできすぎる
- パフォーマンスが必要なもの, 人数の多いチームで実装 => 静的型言語
- 人数が多いとAPI仕様などの共有コストが高い, 静的型言語の方がエディタや型情報からAPIの仕様がわかりやすい
- 実行時パフォーマンスはいわずもがな
- ひとりで気軽にhack, 少人数なチームで実装 => 動的型言語
- ひとりで作ってればだいたいAPIの仕様は頭に入っている(よね?)
- 少人数での開発ならAPI仕様のコミュニケーションコストもそこまで問題にならない
- 自動化テストで多くのことはカバーできる
- JITコンパイラ(各種JavaScript実行エンジン)や型アノテーションありの動的型言語(Dartなど)、動的型言語の特性を持ちながら高い実行時パフォーマンスを出せる時代が来るかも?
- Cython(Python文法のスクリプトをC/C++コードに変換)みたいなアプローチもあったり
- 個人的にはパフォーマンスが必要な部分をc/c++などで実装して動的型言語でうまく繋ぎ合わせて使う、というスタイルがいいなぁと思ってますが、そういう繋ぎ込みがもっと革命的に簡単になったらうれしい。(Cythonは結構便利だと思います。)
積んできた経験によっていろんな視点や考え方があると思います。