정적 언어, 동적 언어란? 프로그래밍

1.정적 언어

프로그래밍 언어는 프로그램에서 사용할 값에 대한 변수를 가지고 있다. 정적 언어에서는 이 변수의 타입을 선언한다.
C언어로 예를 들자면 이렇게 말이다.

int num=1; // integer의 약자로 정수 타입이다.

변수의 타입은 메모리에서 사용할 공간과 용도를 컴퓨터에게 알려준다. 변수 타입의 선언은 컴퓨터가 몇가지 실수를 잡아 빠르게 실행할 수 있도록 도운다. 대신 프로그래머는 타입을 선언할때 신중하게 선택해아 한다. (컴파일 시 자료형에 맞지 않은 변수가 들어가 있으면 오류가 나기에 조심해야한다.)
그런데 이들을 왜 정적언어라고 부를까?
이들 변수는 자신의 타입을 변경할 수 없기 때문이다. 한번 정수는 영원한 정수다. 그것을 정적이라고 표현한거다.

정적 언어의 장점은 즉 속도가 빠르고 타입 에러를 초기에 발견 할수 있다는데 있다.

정적 언어로는 C,C++,C#,java등이 있다.  

2.동적 언어

반면에 동적 언어(스크립트 언어라고도 한다.)는 변수 타입 선언을 강요하지 않는다.
num=1이라고 적으면 동적언어는 변수 num이 선언 되었고 그 값이 정수 1이라는 것을 알고 있다.
동적 언어는 적은 코드로 많은 일을 수행 할 수 있다. 형 변환 같은거로 프로그래머를 고통스럽게 할 일도 없고 말이다.
코드를 해석 할때 컴파일러가 아닌 인터프리터를 사용하는 것도 다르다.
옛날에는 동적 언어가 정적 언어 보다 느렸다. 그래서 보통은 잛은 프로그램을 짤때 사용했다. 하지만 최근에는 인터프리터의 최적화로 인해 속도가 향상되고 있다. 오늘날에는 큰 프로그램을 처리하기도 한다.

동적 언어의 장점은 '배우기 쉽고 사용하기도 쉽다'에 있다고 생각한다.
물론 정적 언어 처럼 단점도 있다. 인터프리터가 발전했다고 해도 여전히 느리기에 연산이 많은 프로그램을 실행할 때 사용하기에는 적합하지 않다.

동적 언어로는 JavaScript,Ruby,Python등이 있다.

 

덧글

  • 뇌빠는사람 2018/08/10 17:25 # 답글

    저라면 num이 정수였다가 다섯 줄 아래에서 문자열로 바뀌거나 하는 코드가 있다면 모니터 째로 씹어먹어버리고 싶어질 것 같습니다만...
댓글 입력 영역