정적타입 언어 vs 동적타입 언어

한서연·2021년 12월 13일
3
post-thumbnail

프로그래밍 언어는 보통 정적타입의 언어와 동적타입의 언어로 나뉘어진다.
이 두가지를 비교해서 정리하기 전에 먼저 언어에서의 타입은 무엇을 뜻하는지에 대해 알아보자.

프로그래밍 언어에서 타입은 곧 자료형이라는 말이다.


타입이란?

int형, short형, float형, bool형, 객체 등으로 나뉘어진 변수의 종류를 말한다.

타입은 그 변수가 어떠한 값을 가질 수 있는지와 그 자료에 어떤 연산을 할 수 있는지를 제한한다. 변수 선언시 항상 앞에 붙여서 사용한다.


정적타입 언어 (Statically typed language)

컴파일시 변수 타입이 결정되는 언어이다.

정적타입 언어는 작성자가 소스 코드를 보고 변수 타입을 직접 작성하는 언어이다. 정적타입 언어에는 C, C#, C++, Java 등의 언어가 있고, 이들 언어는 변수에 들어갈 값의 형태에 따라 자료형을 지정해주어야 한다. 컴파일 시에 자료형에 맞지 않은 값이 들어있으면 컴파일 에러가 발생한다.

장점

  • 타입 에러로 인한 문제점을 초기에 발견할 수 있어 타입 관련한 런타임 오류를 방지할 수 있고 타입의 안정성이 높음
  • 컴파일 시에 미리 타입을 결정하기 때문에 실행 속도가 빠름
  • 코드의 가독성이 좋아 다수의 협업이나 프로젝트를 할 때 유지보수에 유리함

단점

  • 코드를 작성할 때 매번 타입을 결정해 주는것이 번거로움



동적타입 언어 (Dynamically typed languages)

런타임시 변수의 타입이 결정되는 언어이다.

동적타입 언어는 코드를 실행할 때 알아서 변수 타입을 판단해주는 언어이다.
동적타입 언어에는 요즘 많이 쓰이는 JavaScript, Ruby, Python 등의 언어가 있다. 이 언어들은 컴파일 시 자료형을 정하는 것이 아니고 실행 시에 작성자가 직접 결정하여 작성한다.

장점

  • 코드 실행시 자동적으로 변수의 타입을 판단하여 지정해줌
  • 타입을 매번 지정 하지않아도 되기때문에 써줄 필요가 없기 때문에 작성자가 보다 빠르게 코드를 작성할 수 있음

단점

  • 실행 도중에 변수에 예상치 못한 자료형이 들어와 타입 에러를 발생할 수 있음
  • 타입 관련 에러는 런타임 시 확인 가능하기 때문에 코드가 길고 복잡해질 경우엔 타입 에러를 찾기가 어려워짐

0개의 댓글