3

そのため、この問題に関するスタック オーバーフローで同様の質問をたくさん読んだことがありますが、この 2 つの違いをよく理解していると思います。私の質問は、いくつかの操作がプログラマーにとって単純に簡単であるという事実を超えて、強い型付けよりも弱い型付けの利点があるかどうかです。強く型付けされた言語によって、型間の一部の操作が不必要に複雑になることには同意しますが、弱く型付けされた言語を強く型付けされた言語で実行できることはすべて、余分な荷物があればできるようです。

個人的には、強力な型付けの安全性を高めて、特定の操作の小さな煩わしさに対処することを好むと思いますが、それ以上に弱い型付けの利点はありますか? 強力な型付けでは決して同じようにできないことはありますか?

4

4 に答える 4

4

一部の言語は、実行時にオブジェクトまたはクラスの動作を変更するための概念を提供します。メソッドを実装していないオブジェクトは、それにもかかわらず、メソッド呼び出しに応答する方法を見つけることを決定する場合があります。

Objective-C では、委任は、別のオブジェクトがクライアントのメッセージに応答できるようにする一般的な方法です。オブジェクトは、欠落している実装を検出し、メソッド呼び出しをデリゲートに渡すことができます。メソッドが呼び出されたときに、メソッドの実装を動的に追加することもできます。

これらの概念は、弱い型付けと強い型付けではなく、動的なメソッド ルックアップに基づいています。しかし、弱い型付けは動的ルックアップと密接に結びついているため、これは利点として数えられると思います。

于 2011-08-04T16:12:01.860 に答える
2

明らかに、計算可能性はありません...強い型の言語はチューリングと同等である可能性があり、弱い型の言語がチャーチチューリングの理論の反例ではないと仮定すると(これが知られていれば、これは広く公表されると想像されます)場合によっては)、それらは少なくとも弱い型の言語と同じくらい強力です(計算上)。

次に、回線に時間またはスペースの複雑さがあるかどうかを尋ねることができます。ここでの私の直感は、答えはノーだということです。強い型と弱い型の違いは、RAM計算モデルでは(計算の複雑さの観点から)おそらく重要ではありません。私はここで非常に簡単に間違っている可能性があります。ただし、強く型付けされた言語はより厳密なコードにコンパイルされる可能性が高いため、実際のパフォーマンスでは、とにかく強い型付けされた言語が優先される可能性があります。

私の考えでは、明らかな唯一の利点は、プログラム可能性/書き込み可能性/可読性などです。つまり、より厳密な入力規則のある言語でより多くのコードをより多くの労力で書くのと同じ効果を得るために、より少ない労力でより少ないコードを書くことができるため、プログラマーの生活が楽になります。繰り返しになりますが、これも議論の余地があります。強い型付けにより、正確性/堅牢性の保証を簡単に提供できるからです。

于 2011-08-04T16:28:56.480 に答える
2

私にとって、利点はほとんどありません (落とし穴がたくさんあるだけです)。エラーが発生しやすく、デバッグが難しく、単体テストを行うのはああ.... (何を言いたいのかわかりません)、プログラミングの初心者は、プログラミングはとても簡単で、プロジェクトの開始時に設計がないと思い込んでしまいます。 .

COMPILE-ERRORS が必要、動的オブジェクトのデバッグが好きではない、なぜそれが間違っているのか、または.......

于 2012-11-29T21:56:16.573 に答える