what is 정적(static) & 동적(dynamic) Type
Contents
정의
정적 타입과 동적 타입은 프로그래밍 언어에서 변수나 값의 타입에 대한 접근 방식을 나타내는 두 가지 주요 패러다임.
정적 타입 (Static Typing):
- 타입 선언: 정적 타입 언어에서는 변수의 타입을 컴파일 시점에 명시적으로 선언합니다. 변수가 어떤 타입을 가질지 사전에 정의해야 합니다.
- 컴파일 시 타입 체크: 코드를 실행하기 전에 컴파일러가 변수의 타입을 검사합니다. 이로 인해 컴파일러는 타입과 일치하지 않는 연산이나 잘못된 타입의 변수 사용을 사전에 감지할 수 있습니다.
- 명확한 에러 메시지: 정적 타입 언어에서는 타입 에러가 발생하면 컴파일러가 명확한 에러 메시지를 제공하여 개발자가 런타임에 발생할 수 있는 오류를 사전에 파악할 수 있게 합니다.
- 예시 언어: Java, C++, TypeScript
|
|
동적 타입 (Dynamic Typing):
- 타입 추론: 동적 타입 언어에서는 변수의 타입을 명시적으로 선언하지 않아도 됩니다. 변수는 실행 중에 할당된 값에 따라 동적으로 타입이 결정됩니다.
- 런타임 시 타입 체크: 코드 실행 중에 변수의 타입이 동적으로 결정되므로 런타임에 타입 오류가 발생할 수 있습니다.
- 유연성: 동적 타입 언어는 더 유연하며, 변수의 타입을 중간에 변경할 수 있습니다. 이는 편리할 수 있지만, 예측하기 어려운 동작을 초래할 수도 있습니다.
- 예시 언어: JavaScript, Python, Ruby
|
|
차이점:
-
선언 시점: 정적 타입은 변수를 선언하는 시점에 타입을 명시하고, 동적 타입은 명시적인 선언 없이 런타임에 동적으로 타입이 결정됩니다.
-
타입 체크 시점: 정적 타입은 컴파일 시점에 타입을 체크하며, 동적 타입은 런타임에 타입을 체크합니다.
-
에러 발견 시점: 정적 타입은 컴파일 시점에 타입 오류를 발견하므로 런타임 중에는 타입 관련 에러가 발생하지 않습니다. 반면 동적 타입은 런타임 중에도 타입 에러가 발생할 수 있습니다.
두 접근 방식은 각각 장단점이 있으며, 언어의 특성과 개발자의 선호도에 따라 선택됩니다. 정적 타입은 타입 안정성을 높일 수 있지만 코드 작성 시 더 많은 타입 정보를 추가해야 합니다. 동적 타입은 런타임 플렉시빌리티를 제공하지만 런타임 에러 발생 가능성이 높아질 수 있습니다.