정적 타입 언어와 동적 타입 언어

1 분 소요


정적 타입 언어(Static Typed Language)

컴파일 시점에 변수의 타입이 결정되는 언어

팀 내의 엔지니어 수준 차이가 크거나 팀이 자주 바뀌는 경우 코드의 품질을 일정 수준 이상 유지시키기 위해 사용하고, 주로 대기업이나 금융 쪽에서 많이 사용하는 경향이 있다고 합니다.

대표적인 정적 타입 언어

  • C, C++, C#, Java

정적 타입 언어의 장단점

장점
  • 컴파일 시점에 에러를 찾을 수 있기 때문에 쉽고 빠르게 에러 확인이 가능합니다.
  • 런타임 시 타입 충돌로 인한 에러를 사전에 방지할 수 있습니다.
  • 코드의 가독성이 높아집니다.
단점
  • 타입 지정으로 코드의 양이 많아집니다.

동적 타입 언어(Dynamic Typed Languages)

런타임 시점에 변수의 타입이 결졍되는 언어

빠르게 프로토타입을 개발하고 피드백을 받아 수정하는 스타트업에서 많이 사용하고, 코드의 품질보다는 비즈니스 관점을 우선시 생각하는 개발자들이 많이 선택하는 언어라고 합니다.

대표적인 동적 타입 언어

  • JavaScript, Objective-C, PHP, Python, Ruby

동적 타입 언어의 장단점

장점
  • 타입을 지정할 필요가 없으니 그만큼 코드의 양이 줄어듭니다.
  • Learning-Curve가 낮습니다.
단점
  • 런타임 시 타입 충돌로 인한 에러가 발생할 수 있다.

OPINION

저는 정적인 언어를 선호합니다.😍

최근 리뉴얼한 프로젝트에서도 JDK 1.5 이전 버전을 사용해서 그런지 Collection에 지정된 타입이 없었습니다. 메소드 내부에서 Map 자료구조에 온갖 객체들을 담아 반환하는 방식으로 코드가 작성되어 있어서 가독성이 매우 떨어졌고, 데이터가 조금 꼬여있는 경우에 런타임 시 캐스팅 에러가 빈번히 발생해 해결하는데 어려움을 겪었습니다. 리팩토링을 시도했지만 복잡한 상속 관계로 인해 불가능한 경우도 있었습니다. 물론 불가능하진 않지만 일정을 고려하였을 때 너무 대공사여서 손을 댈 수 없었습니다. 이런 경험을 하고 나니 명시적인 타입 선언에 소중함을 깨달았달까?😅 개발자는 언어나 도구 등을 가리지 말고 사용할 수 있어야 하지만 꼭 필요하지 않다면 저는 정적 타입의 언어를 사용할 것 같습니다.

REFERENCE

카테고리:

업데이트:

댓글남기기