정적언어 vs 동적언어

Hunter Joe·2024년 9월 10일

  • 정적 언어와 동적 언어는 타입 검사 시점에 따라 나뉜다.

1. 정적언어 (Statically Typed Language)

정적 언어에서는 컴파일 시점에 변수의 타입이 결정되고, 이후 변경할 수 없다.

즉, 컴파일러가 소스코드를 컴파일할 때 타입 검사를 하고, 타입 오류가 발생하면 프로그램이 실행되기 전에 알려준다. (타입 관련 오류를 빠르게 캐치 가능)

대표적인 정적 언어

Java, C, C++, Go, TypeScript


2.동적언어 (Dynamically Typed Language)

동적 언어에서는 실행 시점에 변수의 타입이 결정된다.

즉, 변수의 타입을 명시적으로 선언하지 않아도 되고, 실행되는 동안 타입이 동적으로 결정되며 변경될 수 있다.

런타임시에 타입 오류가 발생할수 있으므로 실행 중에 문제가 발견될 가능성이 있다.

대표적인 동적 언어

JavaScript, Python, Ruby, PHP

타입스크립트? ? ?


TS는 정적 타입 언어에 속한다. 하지만 TS는 JS의 상위 집합으로, 기본적으로 정적 타입 검사를 제공하지만, 동적 타입 언어인 JS의 유연함도 가지고 있다.

  • 정적 타입 검사 : TS는 컴파일 시 타입을 검사하여 오류를 발견해 코드를 실행하기 전에 타입 오류를 찾아 낼 수 있기 때문에 코드 안정성을 높인다.

  • 타입 추론 : 명시적으로 타입을 선언하지 않아도, 컴파일러가 할당된 값에 따라 타입을 추론할 수 있다.

  • 기존의 JS 코드도 그대로 사용할 수 있으며, TS로 작성한 코드는 컴파일 후 순수 JS코드로 변환된다.

요약

정적 타입 언어로, 컴파일 시 타입을 검사하지만 JavaScript의 동적 특성을 유지하며, 개발자의 선택에 따라 엄격한 타입 검사를 사용할 수 있다.

profile
Improvise, Adapt, Overcome

0개의 댓글