정적 타입 시스템의 필요성

기본적으로 모든 프로그래밍 언어에는 타입시스템이 존재한다.

  • 타입 동등 : 타입이 동일할 때 적용됨 (int - int)

  • 타입 호환 : 타입이 정확히 일치하지는 않지만 어느정도 호환이 되는 것 (Any - int)

  • 타입 추론 : 타입을 정의해놓지는 않았지만, 문맥을 통해 유추할 수 있는 것 (a=17 이면, a는 int 타입이겠구나 유추)

언어별 타입 시스템

  • 정적 타입 시스템

    • 컴파일 시에 변수의 모든 타입을 미리 체크하고 틀릴 경우, 오류가 발생한다. 

  • 동적 타입 시스템

    • 런타임 시에 모든 변수의 유형을 결정하고 잘못된 경우, 에러가 발생하게 된다.

정적 타입 시스템의 필요성

요즘에는 동적 타입 시스템을 가지고 있는 언어들도 모두 어느정도는 정적 타입시스템을 이용하는 방향으로 변화하고 있는데,(타입스크립트, 파이썬의 타입 어노테이션 등) 그 이유로는 다음과 같은 것들이 있다.

  • 개발자가 잘못된 타입을 넣는 실수를 컴파일 시에 미리 검사하여 오류를 방지하기 위해서

  • 타입을 명시해서 같이 협업하는 동료가 명시적으로 코드를 파악할 수 있도록 돕는다.

  • 외부 API 를 이용하거나 외부와 같이 협업하는 경우, 사전에 타입을 정해두면, API 작업이 다 끝나지 않아도, 타입에 맞춰 미리 작업을 해둘 수 있다.

Last updated