web-dev-qa-db-ja.com

静的プログラミング言語と動的プログラミング言語の違い

静的および動的プログラミング言語の違いは何ですか?型システムがすべてであることは知っていますが、より明確な説明を探しています。

29
Balaji Reddy

静的入力

静的型付けとは、プログラムを実行する前に型が既知であり、その正確性をチェックすることを意味します。これは、多くの場合、言語のコンパイラによって行われます。たとえば、次の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が呼び出されます。

40
sleeparrow

静的と動的の違いは、プログラムを実行する前に、各変数のデータ型がチェックおよび検証された場合、静的型のプログラミング言語であるということです(たとえば、C++の場合はコンパイラーによって実行されます)。実行時の動的プログラミング言語では、データ型に違反する変数の無効な割り当てがある場合、エラーが発生します。

要約-静的型言語は、プログラムを実行する前に違反をチェックしますが、動的型言語では、プログラムの実行中にエラーが発生し、違反が行われた部分に移動します。

2
Nishant Dwivedi

静的型言語では、プログラムを実行する前に違反をチェックしますが、動的型言語では、プログラムの実行中にエラーが発生し、違反が行われた部分に移動します。

1
Himanshu Sharma