[스터디] 정적 타입 언어 vs. 동적 타입 언어

lyshine·2023년 10월 26일
0

스터디

목록 보기
6/7

JavaScript는 Java,C,C++ 등의 정적 타입 언어와 달리 동적 타입 언어이다.

그렇다면 정적 타입 언어와 동적 타입 언어의 차이는 무엇일까?

📖 정적타입 언어 (Static Typed Language)

  • 정적타입 언어는 컴파일 시에 변수의 타입이 결정되는 언어를 의미한다.
  • 자료형이 컴파일 타임에 결정되기 위해서, 소스코드 작성 시 명시적으로 자료형을 지정해주어야 한다.
  • 컴파일 시에 자료형에 맞지 않는 값이 들어있으면 컴파일 에러가 발생한다.
  • 대표적인 언어로는 C, C++, Java, C# 등이 있다.

장점

  • 타입 에러로 인한 문제를 컴파일 타임에 해결할 수 있기 때문에 안정성이 높다.
    규모가 큰 프로젝트 제작에서 선호된다.

  • 컴파일 시에 미리 타입을 결정하기 때문에 실행속도가 빠르다.

단점

  • 컴파일 타임에 타입에 대한 제한으로 코드 작성 시 유연함이 떨어진다.
String name ="yoon" 
int num = 123

📖 동적타입 언어 (Dynamic Typed Language)

  • 동적타입 언어는 런타임 시 자료형이 결정되는 언어를 의미한다.
  • 자료형이 런타임에 결정되기 때문에, 소스코드 작성 시 자료형을 명시적으로 지정해줄 필요가 없다.
  • 대표적인 언어로는 Python, JavaScript, Ruby 등이 있다.

장점

  • 런타임까지 타입에 대한 결정을 끌고 갈 수 있기 때문에 유연성이 높다.
  • 컴파일시 타입을 명시해주지 않아도 되기 때문에 빠르게 코드를 작성할 수 있다.

단점

  • 실행 도중에 변수에 예상치 못한 타입이 들어와 타입에러가 발생할 수 있다.
    런타임 시 확인할 수 밖에 없기 때문에, 코드가 길고 복잡해질 경우 타입 에러를 찾기가 어려워 진다. => 이러한 불편함을 해소하기 위해 'TypeScipt'와 'Flow'가 나오고 되었다.
var num = 1; //따로 타입 선언 없이 num이 ‘1’이란 숫자로 선언
num = “number 1; //num을 string으로 새로 할당하면 타입 에러 없이 컴파일

Reference :
https://algorfati.tistory.com/112?category=939797

0개의 댓글