정적 타이핑 vs 동적 타이핑.

타입(Type, 자료형)을 체크해주는 것을 나누어 설명한 것이다..

  • 정적(Static)      타이핑 - 컴파일 시간에 미리 체크한다.
  • 동적(Dynamic) 타이핑 - 런타임(실행시간)에 체크한다.

C, Java가 정적 타입 체크의 대표적인 예라 할 수 있으며, Python, Javascript, Lisp는 동적 타입 체크를 한다고 볼 수 있다. 컴파일 언어는 정적 바인딩, 스크립트 언어는 동적 바인딩이라 추측하면 대부분 맞는다고 보면 된다.

정적 타입 언어는 컴파일 시간에 검사를 하므로, 실행시 성능이 올라가고 미리 버그를 잡을 확률 또한 올라간다.

동적 타입 언어의 경우 런타임 때까지 결정을 미루는 것으로, 유연함과 편리성이 보장된다.

즉, 정적 타입 언어는 조금 불편하지만 확실하게!! 동적 타입 언어는 나중은 몰라도 지금 편리하게!! 라 할 수 있다.

요런 특징때문에 동적 타입 언어는 간단히, 빨리 코드를 작성해야 할 때는 좋지만 규모가 커지게 되면 어디선가 에러가 터지는 경우가 생길 가능성이 높다.

이를 보완할 수 있는 것이 점진적 타이핑(Gradual Typing)이다. 점진적 타이핑은 일부 변수와 표현식은 정적으로, 또 유형이 정해지지 않은 것들은 동적으로 검사를 할 수 있게 한 것이다.

대표적인 예가 Javascript의 단점을 보완하기 위해 나온 Typescript다.

* 개인적으로는 정적 타입 언어를 좋아합니다.(사람들은 잔실수가 많거든요.)