0

静的型付けが最適だと主張しているわけではなく、静的型付けが実際にどのような利点があるのか​​疑問に思っているだけです。私は彼らが次のように思った:

  • より高速なコード
  • いくつかのエラーを早期に発見する

私自身の使用 (Java での) を見ると、私は主にコンパイラーのために働いています。型エラーをキャッチするとき、それは通常、コード エラーではなくtypeのエラーです。

場合によっては、型を厳密にするためにコードを調べました。たとえば、インターフェイス I を実装するクラスのセットがあり、それらのクラスのいずれかを保持できるフィールドに型 I が与えられます。しかし、これで終わりになる可能性があります。 -broad: それらのクラスのサブセットのみを保持できるいくつかのフィールドもある場合があるため、そのクラスのサブセットのみによって実装される新しいインターフェイス J を作成することによって型システムを強化することができ、それらのフィールドには型 J が与えられます。より「正しい」、それは信じられないほど退屈で、何かが変わると非常に脆弱です。

したがって、主流のコンパイル済み言語 (Java、C#、C、C++、objective-C) での静的型付けの主な利点はコードの高速化であり、型安全性ははるかに 2 番目です。集積回路検証用の ml 言語など、非常に役立ちます。また、データベースでは静的型付けが重要であると聞いたことがあります。

しかし、私はもう1つの利点があると思います:

  • ドキュメンテーション

メソッドを見て、有効な引数が何であるかを知ることができるというドキュメント。また、自動生成されたドキュメントの場合、引数の型は、利用可能なインターフェイスと実装にハイパーリンクされています。これは致命的な利点だとは思いませんが、本当の利点です。

明らかに、python や ruby​​ などは、静的な型付けがなくてもうまく機能します。どんなメリットがあるのだろうと思うのですが、どう思いますか? あなたの経験は何ですか?

4

2 に答える 2

4

Java の静的型システムは、静的型付けに対する非表現的で時代遅れのアプローチであり、40 年近く前のものです。最新の静的型付けでは、コードが満たすべき不変条件を豊富に指定でき、マシンはそれらの不変条件を証明できます。Haskell、Agda、ADA などの言語は、(テストなどと比較して) 比較的少ないコストで本格的なソフトウェア検証を行うために型を使用する方法を示しています。

そのため、コンパイラーにより多くの情報を提供するという明らかな利点に加えて、静的型を使用しない場合よりもコードを高速化できることに加えて、最新の型システムは、ソフトウェアのコンピューター支援検証のための重要なツールであるという事実があります。使用している型システムが Java だけである場合、これはわかりません。

于 2012-09-12T12:54:18.460 に答える
0

静的型付けを使用することで、変数に期待されるデータの型を示しています。非静的では、処理を実行する前にデータ型を確認する必要があります。たとえば、メソッドに整数が渡されることを期待するかもしれませんが、誰かが文字列を渡すのを止めるものは何もありません。これは、私見の痛みの世界にあなた自身を開いています。

于 2012-09-12T12:51:03.190 に答える