1. ホーム
  2. programming-languages

[解決済み】動的型言語と静的型言語の比較

2022-04-12 19:50:28

質問

静的型言語と比較して、動的型言語の利点と限界は何ですか?

こちらもご覧ください : 動的言語への愛とは (遥かに議論になるスレッドですが...)

解決方法は?

インタプリタが型や型変換を推論する機能は、開発時間を短縮する一方で、コンパイル時に不具合を検出する静的型付け言語では得られない実行時不具合を引き起こす可能性があります。しかし、どちらが優れているか(あるいは、それが常に正しいかどうか)は、最近(そして昔から)コミュニティで熱く議論されている。

この問題に対する良い見解は、以下の通りです。 Static Typing Where Possible, Dynamic Typing When Needed(可能な限り静的型付けを、必要な場合は動的型付けを)。プログラミング言語間の冷戦の終わり マイクロソフトのErik MeijerとPeter Draytonによるものです。

<ブロッククオート

静的型付けを支持する人たちは、次のように主張しています。 静的型付けの利点は をより早く発見することができます。 プログラミングのミス(例えば ブーリアンに整数を加えること) の形でより良いドキュメントを提供します。 タイプシグネチャ(例. 引数の個数と型は 名前の解決)、より多くの機会 コンパイラの最適化(例) 仮想呼出しを直接呼出しに置き換える の正確な型は レシーバーが静的に分かっている場合)。 実行時の効率性の向上(例. すべての値が動的 型)、そして設計時の 開発者の利便性 (例) IDEは、受信機の型に依存することなく すべてのドロップダウンメニューを表示します。 があります。) 静的型付け マニアは私たちにこう信じ込ませようとする。 「よく型付けされたプログラムは間違うことがない」のです。 これは確かに聞こえは良いのですが 印象的ですが、かなり空虚なものです。 という文があります。静的型チェックは のコンパイル時の抽象化です。 プログラムの実行時動作の したがって、それは必然的に部分的なものでしかありません。 であり、不完全なものです。つまり のためにプログラムがうまくいかないことがあります。 によって追跡されないプロパティ タイプチェッカーが存在すること、そして プログラムでありながら 型チェックができない そのため 静的型付けをより少なくするための衝動 部分的でより完全な型 システムが過度に複雑になる という概念に見られるような、エキゾチックな 幻の型」[11] や 「10]がある。これはまるで マラソンをボールで走ろうとする 脚に鎖で縛られ もう少しで にもかかわらず 最初の1マイルを過ぎたあたりで

動的型付け擁護派 言語では、静的型付けは の柔らかさである。 動的言語 システムのプロトタイピングに最適です。 要件が変化する、あるいは未知である。 他のシステムと相互作用するもの 予測不可能な変化をするもの(データおよび アプリケーションの統合)。もちろん 動的型付け言語は を扱うために不可欠です。 プログラムの動的挙動 メソッドインターセプション、ダイナミックロード モバイルコード、ランタイムリフレクションなど に関するすべての論文の母体である スクリプティング [16]で、John Ousterhoutは次のように論じています。 静的型付けシステム プログラミング言語では、コードが 再利用可能で、より冗長で、安全とは言えない。 動的に比べて表現力が劣る。 型付けされたスクリプト言語である。この という主張は、多くの人が文字どおり繰り返しています。 動的型付け推進派 スクリプト言語 我々は、以下のように主張する。 これは誤謬であり という議論と同じカテゴリーです。 宣言型プログラミングの本質とは 代入をなくす。あるいは、ジョン ヒューズは[8]、それは論理的なものである、と言っています。 言語をより発展させることは不可能である。 機能を省略することで、より強力になる。 すべての 型チェックを実行時に行うことは、良いことです。 というのは、ダチョウ戦術のようなものです。 エラーは発見されるべきであるという事実 開発プロセスのできるだけ早い段階で ということです。