동적 타입 언어(Dynamic typing language, 動的 - 語言)은 변수나 표현식의 타입이 실행 시점(runtime)에 결정되는 프로그래밍 언어를 의미한다. 이러한 언어에서는 컴파일 시점에 타입 검사가 이루어지지 않으며, 프로그램 실행 중에 타입 오류가 발생할 수 있다.
개요
동적 타입 언어는 개발자가 변수의 타입을 명시하지 않아도 되며, 변수는 다양한 타입의 값을 가질 수 있다. 이는 빠른 프로토타이핑과 유연한 코드 작성을 가능하게 하며, 생산성을 높이는 데 유리하다. 그러나 타입 오류가 실행 중에 발생하므로, 안정성과 성능 면에서는 불리할 수 있다.
특징
- 런타임 시점의 타입 결정
- 명시적인 타입 선언이 불필요함
- 타입 오류가 실행 중에 발생할 수 있음
- 높은 코드 유연성과 간결성
- 빠른 개발과 프로토타이핑에 적합
예시
대표적인 동적 타입 언어에는 다음과 같은 언어들이 있다.
- Python
- JavaScript
- Ruby
- PHP
- Perl
- Lisp
장단점
장점
- 코드가 간결하고 읽기 쉬움
- 타입 선언이 없어 빠른 개발 가능
- 다양한 형태의 데이터 처리에 유연함
- 프로토타입 제작 및 스크립트 작성에 유리함
단점
- 실행 중 타입 오류 발생 가능성 존재
- 대규모 프로젝트에서 유지보수 어려움
- 성능 최적화가 어려움
- 정적 분석 및 리팩토링 도구의 한계
동적 타입과 유사한 개념
일부 언어는 동적 타입 기능을 제공하지만 선택적으로 정적 타입 선언도 허용한다. 예를 들어 TypeScript는 JavaScript에 정적 타입 기능을 추가한 언어이며, Python은 타입 힌트 기능을 통해 정적 분석을 도울 수 있다.
동적 타입 언어와 정적 타입 언어의 비교
동적 타입 언어는 개발 초기의 생산성과 유연성을 중시하며, 정적 타입 언어는 성능과 안정성을 중시한다. 선택은 프로젝트의 목적, 팀 규모, 유지보수 계획 등에 따라 달라진다.
같이 보기
참고 문헌
- Van Roy, Peter and Haridi, Seif. *Concepts, Techniques, and Models of Computer Programming*. MIT Press, 2004.
- Sebesta, Robert W. *Concepts of Programming Languages*. Pearson, 12th ed., 2019.