본문 바로가기

Front End/Javascript

[JavaScript] 정적 타입 (Static Typing) & 동적 타입 (Dynamic Typing)

정적 타입 (Static Typing) : 변수의 타입이 컴파일 시간에 결정되고, 그 이후에는 변경할 수 없습니다.

                                             c/c++, Java ....


동적 타입 (Dynamic Typing) : 변수의 타입이 실행 시간에 결정되며, 실행 중에도 타입이 변경 가능합니다.

                                                  python, javascript......

정적 타입 (Static Typing) 장점
컴파일 시 타입 검사 : 코드를 작성하는 동안 발생하는 많은 타입 오류를 컴파일 시간에 미리 감지할 수 있습니다.
성능 최적화 : 정적 타입 정보를 활용하여 컴파일러가 코드를 더 효율적으로 최적화할 수 있습니다.
IDE 지원 강화 : 정적 타입 정보는 IDE(Integrated Development Environment)에서 강력한 자동 완성 및 코드 분석을 지원합니다.

정적 타입 (Static Typing)  단점
번거로운 타입 어노테이션 : 타입을 명시적으로 선언해야 하므로 코드가 길어질 수 있고, 일부 경우에는 추가적인 작업이 필요할 수 있습니다.
개발 속도 저하 : 더 많은 코드를 작성하고 수정해야 하므로 초기 개발 속도가 상대적으로 느릴 수 있습니다.


동적 타입 (Dynamic Typing) 장점
유연성 : 실행 시간에 타입이 결정되기 때문에 동적으로 변수의 타입을 변경할 수 있어 유연성이 높습니다.
간단한 문법 : 타입 선언이 없거나 간소화되어 코드가 간결할 수 있습니다.
빠른 프로토타이핑 : 초기 개발 속도가 빠르며 코드 작성이 간단할 수 있습니다.

동적 타입 (Dynamic Typing)  단점
런타임 에러 : 실행 중에 타입 관련 오류가 발생할 수 있으며, 이는 실행 시간에만 감지됩니다.
코드 예측 어려움 : 타입 정보가 부족하면 코드를 이해하고 예측하기 어려울 수 있습니다.
성능 감소 : 동적 타입 언어는 런타임에 타입 체크를 수행하므로 성능이 상대적으로 느릴 수 있습니다.

 

 

프로그래밍 언어에서 변수의 타입을 다루는 방식을 기준으로 정적 타입과 동적 타입으로 나눕니다. 동적 타입의 언어는 실행 시간(runtime)에 동적으로 결정되며, 변수가 어떤 값을 가지느냐에 따라 타입이 자동으로 할당됩니다. 이러한 특징으로 타입 안정성과 성능 최적화, IDE 강화에 강점이 있지만, 타입 어노테이션과 개발 속도에 일부 제약이 있을 수 있습니다.
반면, 정적 타입의 언어는 변수를 선언할 때 명시적으로 타입을 지정하고, 이후에는 해당 타입의 값만을 변수에 할당합니다. 동적 타입언어는 유연성과 간편한 분법으로 빠른 프로토타이핑이 가능하게 해주지만, 런타임 오류와 성능 감소가 발생할 수 있다는 점에서 단점이 있습니다.
파이썬은 동적 타입(Dynamic Typing) 언어로, 실행 시간에 동적으로 타입을 결정하여 유연성을 제공합니다.

현대언어에서는 타입 추론과 JIT(Just-In-Time) 컴파일 등의 기술을 통해 두 가지 타입 시스템의 장점을 조합하는 경향이 있습니다.