静的および動的プログラミング言語の違いは何ですか?型システムがすべてであることは知っていますが、より明確な説明を探しています。
静的型付けとは、プログラムを実行する前に型が既知であり、その正確性をチェックすることを意味します。これは、多くの場合、言語のコンパイラによって行われます。たとえば、次のJavaメソッドはコンパイルエラーを引き起こしますプログラムを実行する前に:
public void foo() {
int x = 5;
boolean b = x;
}
動的型付けとは、型がプログラムの実行中にのみ認識されることを意味します。たとえば、次のPython(重要な場合は3)スクリプト)は問題なく実行できます。
def erroneous():
s = 'cat' - 1
print('hi!')
実際にhi!
を出力します。しかし、erroneous
を呼び出すと:
def erroneous():
s = 'cat' - 1
erroneous()
print('hi!')
TypeError
が発生しますatランタイムwhenerroneous
が呼び出されます。
静的と動的の違いは、プログラムを実行する前に、各変数のデータ型がチェックおよび検証された場合、静的型のプログラミング言語であるということです(たとえば、C++の場合はコンパイラーによって実行されます)。実行時の動的プログラミング言語では、データ型に違反する変数の無効な割り当てがある場合、エラーが発生します。
要約-静的型言語は、プログラムを実行する前に違反をチェックしますが、動的型言語では、プログラムの実行中にエラーが発生し、違反が行われた部分に移動します。
静的型言語では、プログラムを実行する前に違反をチェックしますが、動的型言語では、プログラムの実行中にエラーが発生し、違反が行われた部分に移動します。