본문 바로가기
  • 사람은 무언가를 배울 필요가 있을때가 되서야 비로소 배우게 된다.
IT 꿀정보

정적언어 vs 동적언어 정리

by YoHaYo 2023. 9. 26.
728x90
반응형
정적언어

 정적언어라는 것은 위에서 언급한 '타입' 즉 자료형을 컴파일 시에 결정하는 것 입니다. 우리가 잘 아는('이름을 잘 아는') C, C#, C++, Java 등의 언어가 있습니다. 이들 언어는 변수에 들어갈 값의 형태에 따라 자료형을 지정해주어야 합니다. 컴파일 시에 자료형에 맞지 않은 값이 들어있으면 컴파일 에러가 발생합니다.

 

예)

[C Language]

int num = 1; // 컴파일 성공

float num2 = 1.03; // 컴파일 성공

bool num3 = 1; // 컴파일 에러

 

장점 : 컴파일 시에 타입에 대한 정보를 결정하기 때문에 속도↑ , 타입 에러로 인한 문제점을 초기에 발견할 수 있어 타입의 안정성↑

요약 : 정적언어. Java / C / C++ 등.. 메모리 미리 할당받음 

(월급을 현금으로만 쓰는 방식. 통장이 빵꾸날일이 없다.)

 

동적언어

 

 요즘 많이들 쓰시는 JavaScript, Ruby, Python 등이 바로 동적언어입니다. 동적 타입 언어의 자료형은 컴파일 시 자료형을 정하는 것이 아니고 자료형을 실행 시에 결정합니다. 다음과 같이 타입 없이 변수만 선언하여 값을 지정할 수 있습니다.

 

예)

[Python]

num1 = 10;

name = "Evan Hwang"

 

장점 : Run time까지 타입에 대한 결정을 끌고 갈 수 있기 때문에 많은 선택의 여지가 있습니다.

단점 : 인터프리터 언어는 배우기는 쉬우나 실행 도중에 변수에 예상치 못한 타입이 들어와 Type Error 를 뿜는 경우가 생길 수 있습니다. 잘 생각해서 사용해야합니다.

 

요약 : 동적언어. 자바스크립트 등.. 그때그때 메모리를 할당받음. 

(월급을 카드로 미리 당겨쓰는 방식 ! 빵꾸날일이 있다! 오버플로우.)

 

정적언어와 동적언어를 비교하는 100점짜리 답변

정적언어 : 메모리 할당 후 실행 ( 컴파일 )

동적언어 : 실행 후 메모리 할당 ( 인터프리팅 )

 

그로인한 차이점은 메모리 안정성 !

정적언어는 메모리가 뻑날일이 없음. 동적언어는 대신 코드의 편의를 준다.

반응형

댓글