프로그래밍언어

정적 타입 시스템 vs 동적 타입 시스템

지식소 채움이 2025. 5. 8. 13:49

정적 타입 시스템 vs 동적 타입 시스템

코딩을 하다 보면 정적 타입 언어동적 타입 언어라는 말을 듣게 됩니다. 타입은 데이터의 종류(숫자, 문자열 등)를 뜻하며, 둘은 타입을 언제 결정하고 검사하는지가 다릅니다.

정적 타입 언어란?

정적 타입 언어에서는 변수의 타입이 프로그램 실행 전에 미리 결정됩니다. 예를 들어 C나 Java에서는 변수 선언 시 타입을 지정합니다. 한 번 정해진 변수 타입에는 그에 맞는 데이터만 담을 수 있어, 다른 타입의 값을 넣으면 실행 전에 오류가 발생합니다.

int age = 20;
age = "스무 살";  // 오류: int 변수에 문자열 할당 불가

즉, 정적 타입 언어는 실행 전에 이런 타입 오류를 잡아줍니다.

  • 장점: 실행 전에 오류를 발견해 안정적이고, 미리 타입이 정해져 있어 실행 속도가 빠른 편입니다.
  • 단점: 변수마다 타입을 명시해야 하므로 코드 작성이 번거로울 수 있습니다.

동적 타입 언어란?

동적 타입 언어에서는 변수의 타입이 실행 중에 결정됩니다. 예를 들어 Python이나 JavaScript에서는 변수를 선언할 때 타입을 쓰지 않고, 값이 할당될 때 타입이 정해집니다.

age = 20          # age는 지금 숫자(int)입니다
age = "스무 살"   # 이제 age는 문자열 (오류 없음)

위 예에서 age 변수는 처음에 숫자였다가 나중에 문자열로 바뀌어도 오류가 없습니다. 동적 타입 언어는 유연하지만, 타입 오류는 실행 중에 발견될 수 있다는 단점이 있습니다.

  • 장점: 코드가 간결하여 개발 속도가 빠르고, 변수 하나에 여러 종류의 값을 담을 수 있는 유연성이 있습니다.
  • 단점: 오류는 실행 시에만 발견되어 디버깅이 어렵고, 실행 중 타입 검사로 성능이 떨어질 수 있습니다.