[CS] 정적타입 언어 vs 동적타입 언어

✨ 강은비·2021년 10월 30일
1

CS

목록 보기
1/2
post-thumbnail

📌 타입이란?

  • 자료형 : int, short, float, string, 객체 등

📌 정적타입 언어란?

Statically typed language

  • 컴파일 시 변수의 타입이 결정되는 언어
  • 변수에 들어갈 값의 형태에 따라 직접 변수의 타입을 명시해줘야 험.
  • 컴파일 시 자료형에 맞지 않는 값이 들어있으면 컴파일 에러 발생
  • Java, C, C++, C#, Scala,  Fortran, Haskell, ML, Pascal 등

👍 정적타입 언어의 장점

  • 타입 에러로 인한 문제점을 초기에 발견할 수 있어 타입 관련한 런타임 오류를 방지할 수 있고 타입의 안정성이 높음.
  • 특히, 사용자에게 배포되는 앱의 경우 타입 관련한 검증을 컴파일 시에 하지 않고 런타임에 하게 되면 앱 사용 시 타입 불일치로 인한 크래시의 발생 위험이 높아짐.
  • 컴파일 시에 미리 타입을 결정하기 때문에 실행 속도가 빠름
  • 코드의 가독성이 좋음. 다수의 협업이나 프로젝트의 장기 개발 및 유지보수에 유리함.

😒 정적타입 언어의 단점

  • 매번 코드 작성시 변수형을 결정해줘야 하는 번거로움이 있음.



📌 동적타입 언어란?

Dynamically typed language

  • 컴파일 시 자료형을 정하는 것이 아니라 런타임 시 자료형이 결정됨.
  • 타입 없이 변수만 선언하여 값을 지정할 수 있음.
  • Groovy, Python, JavaScript, Ruby, Smalltalk, Lisp, Objective-C, PHP, Prolog 등

👍 동적타입 언어의 장점

  • 런타임까지 타입에 대한 결정을 끌고 갈 수 있기 때문에 유연성이 높음
  • 타입 관련하여 지켜야 할 규칙이 적기 때문에 상대적으로 코드가 짧고 Learning-Curve가 낮다.

😒 동적타입 언어의 단점

  • 실행 도중에 변수에 예상치 못한 자료형이 들어와 TypeError를 발생할 수 있음.
  • 타입 관련 Error는 런타임 시 확인할 수 밖에 없기 때문에, 코드가 길고 복잡해질 경우 타입 에러를 찾기가 어려워짐.
  • 이러한 불편함을 해소하기 위해 TypeScript나 Flow 등을 사용할 수 있음.



참고: 정적타입 언어 vs. 동적타입 언어 특징 비교하기

0개의 댓글