동적 타입 언어와 정적 타입 언어
프로그래밍 언어는 변수의 타입을 언제 결정하는지에 따라 동적 타입 언어와 정적 타입 언어로 나뉩니다.
핵심 특징
- 동적 타입 언어는 런타임 시점에 변수의 타입이 결정됩니다. 하나의 변수에 다양한 타입의 값을 자유롭게 재할당할 수 있어 코드 작성이 유연하지만, 실행 중에 타입 오류가 발생할 가능성이 상대적으로 높습니다. 대표적으로 JavaScript, Python, Ruby가 있습니다.
- 정적 타입 언어는 컴파일 시점에 변수의 타입이 결정됩니다. 변수의 타입을 미리 선언해야 하며, 코드 작성 단계에서 타입 오류를 사전에 방지할 수 있어 안정성과 가독성이 높습니다. 대표적으로 Java, C, 타입스크립트가 있습니다.
예시
// JavaScript(동적 타입) — 재할당 시 타입이 자유롭게 바뀜
let value = 10;
value = "Hello";
// TypeScript(정적 타입) — 선언된 타입과 다른 값을 할당하면 컴파일 오류
let value: number = 10;
value = "Hello"; // ⚠️ 컴파일 오류 발생
비교
| 항목 | 동적 타입 언어 | 정적 타입 언어 |
|---|---|---|
| 타입 결정 시점 | 런타임 | 컴파일 타임 |
| 타입 선언 | 불필요 | 필요 |
| 타입 오류 발견 시점 | 실행 중 | 코드 작성/컴파일 단계 |
| 개발 유연성 | 높음 | 상대적으로 낮음 |
| 안정성·가독성 | 상대적으로 낮음 | 높음 |
| 대표 언어 | JavaScript, Python, Ruby | Java, C, 타입스크립트 |
선택 기준
- 빠른 프로토타이핑이나 개발 유연성이 중요한 경우 동적 타입 언어가 유리합니다.
- 코드의 안정성과 유지보수성이 중요한 대규모 프로젝트에서는 정적 타입 언어가 더 적합합니다.
핵심 정리
동적 타입 언어는 런타임에, 정적 타입 언어는 컴파일 타임에 타입이 결정됩니다.
정답은 없으며 프로젝트 성격과 팀의 선호도에 따라 선택하는 문제입니다.