본문 바로가기
2. 우당탕탕 개발자/2-2. 상세 노트

정적타입, 동적타입 언어 특징과 차이점

by Little Monkey 2021. 6. 18.
반응형

자바스크립트에 대한 기본을 바로하기 위해 '인사이드 자바스크립트' 라는 책을 읽다가, 정적타입 언어와 동적타입 언어의 특징과 차이점이 궁금했다. 우리가 알고 있는 언어들은 어떤 타입에 해당하는 언어이며, 각각의 타입은 어떤 특징과 장단점을 가지고 있는지 살펴보려고 한다. 

 

정적타입 "컴파일 할 때 타입 체크" <-> 동적타입 "런타임 할 때 타입이 결정되는 언어 "


 

정적타입 언어 (Statically typed language)

  • 정의 : 컴파일 할 때 변수의 타입을 체크하는 언어 Java, C, C++의 언어는 각각의 변수의 타입을 반드시 지정해야한다. Caml, HAskell, Scala, Kotlin과 같은 정적타입 언어들은 타입추론이 가능한 형태를 제공해주기만 해도 된다. 
  • 장점 : 정적타입 언어의 장점은 컴파일러에 의해서 사전에 변수의 타입에 맞게 코드를 잘 작성했는지 여부가 드러난다. 따라서 사소한 버그도 사전에 미리 발견이 가능하다.
  • 예시: C, C++, Java, Rust, Go, Scala

=> 자바스크립트는 소수던/ 긴--- 자연수던 모두 number로 취급하는 것과 달리, C언어는 숫자의 경우에도 다양하게 타입을 나누어 사용하고 있어 놀라웠다. 자리수가 긴지/적은지에 따라 나누는것도 흥미로웠다. 

 


동적타입 언어 (Dynamically typed language)

  • 정의 : 런타임의 변수나 필드, 기타 등등이 선언될 때가 아닌 변수의 값에 따라서 타입이 결정된다. 타입 체크도 이 때 이루어진다.
  • 장점 : 프로그래머들이 타입을 고민할 필요 없이 빠르게 코드를 작성할 수있다는 장점이 있다. 유연하다.
  • 단점 : 사전에 버그를 미리 간파하기 어렵다.
  • 예시: Perl, Ruby, Python, PHP, JavaScript

=> 동적 타입의 언어의 단점을 보완하기 위해 TypeScript가 등장했다. 타입스크립트는 변수를 선언할 때, 해당 변수의 타입을 함께 선언해주어 컴파일 단계에서 타입 오류를 파악할 수 있다. 

 

 


💡컴파일이란?

프로그래머가 작성한 언어를 컴퓨터가 이해할 수 있는 0과 1의 언어로 변환하는 과정

 

💡런타임이란?

프로그램이 실행되고 있는 시간과 공간을 아우르는 말이다. JavaScript를 이용해서 내가 만든 프로그램을 실행시킨다면 실행시키기 시작하는 동안 브라우저에서 작동되는 공간과 작동되고 있는 시간을 의미한다. 

 

 

출처: StackOverflow

반응형

댓글