静的型付けが最適だと主張しているわけではなく、静的型付けが実際にどのような利点があるのか疑問に思っているだけです。私は彼らが次のように思った:
- より高速なコード
- いくつかのエラーを早期に発見する
私自身の使用 (Java での) を見ると、私は主にコンパイラーのために働いています。型エラーをキャッチするとき、それは通常、コード エラーではなくtypeのエラーです。
場合によっては、型を厳密にするためにコードを調べました。たとえば、インターフェイス I を実装するクラスのセットがあり、それらのクラスのいずれかを保持できるフィールドに型 I が与えられます。しかし、これで終わりになる可能性があります。 -broad: それらのクラスのサブセットのみを保持できるいくつかのフィールドもある場合があるため、そのクラスのサブセットのみによって実装される新しいインターフェイス J を作成することによって型システムを強化することができ、それらのフィールドには型 J が与えられます。より「正しい」、それは信じられないほど退屈で、何かが変わると非常に脆弱です。
したがって、主流のコンパイル済み言語 (Java、C#、C、C++、objective-C) での静的型付けの主な利点はコードの高速化であり、型安全性ははるかに 2 番目です。集積回路検証用の ml 言語など、非常に役立ちます。また、データベースでは静的型付けが重要であると聞いたことがあります。
しかし、私はもう1つの利点があると思います:
- ドキュメンテーション
メソッドを見て、有効な引数が何であるかを知ることができるというドキュメント。また、自動生成されたドキュメントの場合、引数の型は、利用可能なインターフェイスと実装にハイパーリンクされています。これは致命的な利点だとは思いませんが、本当の利点です。
明らかに、python や ruby などは、静的な型付けがなくてもうまく機能します。どんなメリットがあるのだろうと思うのですが、どう思いますか? あなたの経験は何ですか?