Programming/C++, C#

컴파일언어와 인터프리터언어

GameCook 2018. 6. 4. 21:25

프로그래밍 언어에는 베이직, C++, C#,자바를 포함하는 컴파일러 언어와 
자바스크립트, Perl, PHP, 파이썬과 같은 인터프리터 언어의 두가지 큰 범주가 있다.

인터프리터 언어

:  코드 작성 -> 게임 실행 (두단계 과정)
실행할 때마다 이 코드가 플레이어의 컴퓨터에서 실시간으로 기계어로 변환되는 것을 의미한다.

컴파일 언어

: 코드작성 -> 코드 컴파일-> 컴파일된 프로그램 실행 (세단계 과정)

여기서 코드 컴파일이라는 중간 단계는 
프로그래밍 언어를 인터프리터의 도움 없이 컴퓨터에서 직접 실행할 수 있도록 
실행 파일(애플리케이션이나 앱)로 변환하는 단계를 의미한다.

장/단점

인터프리터 언어는 코드를 실행하는 컴퓨터에 맞게 기계어로 해석할 수 있기에 코드 이식성이 우수하다고 말한다.
이것은 자바스크립트같은 경우 윈도우, 리눅스 iOS, 안드로이드등 어떤 운영체제에서 사용하던지 실행에 제한이 없다는 것을 의미한다.
그러나 이 장점의 이면에는 컴퓨터에서 코드를 해석하는데 많은 시간이 걸리고 언어를 실행하는 장치에 맞게 최적화할 수 없다는 단점도 갖고 있다.

반면 컴파일 언어는 사전에 정의된 프로그래밍 언어와 실행 플랫폼에 대한 정보를 바탕으로 컴파일 중 여러 최적화 기법을 활용할 수 있다. 
게임을 프로그래밍하는 환경에서 이러한 최적화는 직접적으로 프레임 속도 상승이나 그래픽 디테일 향상과 관계가 깊다.
대부분의 상용 게임이 컴파일 언어로 제작되는 이유에는 이러한 최적화의 이점이 있기 때문이다.

그러나 이 이점을 컴파일 언어가 갖는 특성으로 적극 활용하기 위해서는 각 실행 플랫폼 별로 다른 실행파일을 컴파일 해야 한다는 의미이기도 하다. 
PC와 모바일 사이에는 중요한 디자인 설계상의 차이점이 있으므로 플렛폼에 따라 다른 코드를 사용하는것이 일반적인데
유니티에서는 멀티 플랫폼 지원을 꽤 완성도 있게 제공하므로 이를 바탕으로 한 생산성에서 큰 우위를 점하고 있다.