動的型付言語と静的型付言語の違いを、Pythonを動的型付言語の例に、Javaを静的型付言語の例にしてコードで比較。
動的型付言語 (Python)
# 変数の宣言時に型を指定する必要がない
x = 10
print(type(x)) # <class 'int'>
x = "Hello"
print(type(x)) # <class 'str'>
# 関数の引数や戻り値に型を指定する必要がない
def add(a, b):
return a + b
print(add(1, 2)) # 3
print(add("Hello", "World")) # HelloWorld
静的型付言語 (Java)
public class Main {
public static void main(String[] args) {
// 変数の宣言時に型を指定する必要がある
int x = 10;
System.out.println(x); // 10
// x = "Hello"; // コンパイルエラー: 型の不一致
// 関数の引数や戻り値に型を指定する必要がある
int result1 = add(1, 2);
System.out.println(result1); // 3
// String result2 = add("Hello", "World"); // コンパイルエラー: 型の不一致
}
public static int add(int a, int b) {
return a + b;
}
}
動的型付言語では、変数の宣言時や関数の引数・戻り値に型を指定する必要がありません。実行時に変数の型が決定され、同じ変数に異なる型の値を代入することができます。
一方、静的型付言語では、変数の宣言時や関数の引数・戻り値に型を指定する必要があります。コンパイル時に型チェックが行われ、型の不一致によるエラーを事前に検出できます。
このように、動的型付言語は柔軟性が高く記述が簡潔になる一方、静的型付言語は型の安全性が高くコンパイル時にエラーを検出できるという特徴があります。