본문 바로가기
프로그래밍/키워드 정리

[C++] 복습용 키워드 정리 - 7

by Sik.K 2023. 3. 25.

<컴파일러>

 

특정 프로그래밍 언어로 쓰여 있는 문서를 다른 프로그래밍 언어 혹은 컴퓨터 언어로 옮기는 일종의 번역 프로그램이다.

 

비주얼, 터보, 볼랜드 등 언어에 따라 다양한 컴파일러가 존재하고 보통 high-level 프로그래밍 언어를 실행 프로그램으로 만들기 위한 lower level 언어(ex. 어셈블리 언어, object 코드 등)로 바꾸는 데에 사용된다.

 

컴파일 되기 전의 원래의 문서를 '소스 코드' 혹은 '원시 코드'라고 부른다.

 

이후 컴파일이 된 후 출력된 문서를 '목적 코드'라고 한다.

 

 

컴파일은 최초 코드의 구문을 분석하고 오류가 있다면 사용자에게 전달하며, 명확하지 않은 추상 구문을 분석 및 최적화하고 이후에 오류가 없는 코드를 목적 코드로 생성한 뒤 여러 라이브버리의 목적 코드를 연결하는 링킹 과정을 거친다.

 

이 단계를 4가지로 명명하는데 다음과 같다.

 

1). 전처리기(Prrprocessor) : #include와 같이 #이 붙은 전처리기 구문을 처리함.

2). 컴파일러를 통해 컴파일

3). 어셈블러(Assembler) : 완전히 기계어로 바꾸어주는 역할

4). 링커(Linker) :  여러 개의 오브젝트 파일을 하나로 합치거나, 라이브러리를 합치는 역할

 

 

<인터프리터>

 

컴파일러와 같이 고급 언어로 작성된 프로그램을 번역하는 역할을 가지지만, 한 줄 단위로 받아들여 번역하고, 번역과 동시에 프로그램을 한 줄 단위로 즉시 실행시키는 프로그램이다.

 

프로그램이 직접 실행되므로 목적 프로그램은 생성되지 않는다. 또한 줄 단위로 번역, 실행되기 때문에 시분할 시스템에 유용하며 원시 프로그램의 변화에 대한 반응이 빠르다.

 

번역 속도는 빠르나 프로그램 실행 시 매번 번역해야 하므로 실행 속도가 느리고, CPU의 사용 시간 낭비가 크다. 주로 Python, BASIC, APL, LISP 등의 언어가 사용한다.

 

 

<C#과 C++>

 

C++ 언어는 C 언어의 확장판이다. 기존 C에서 클래스 개념을 추가해 OOP의 프로그래밍을 가능케 하는 언어이다. 때문에 C와 같이 다른 프로그래밍 언어에 비해 low level의 언어이며 기계에 좀 더 가깝기 때문에 속도가 빠르다는 장점이 있다.

 

하지만 C#은 마이크로소프트에서 만든 언어이며 닷넷 생태계를 위한 언어이다. C라는 이름을 달고 있지만 C 보다는 Java에 좀 더 가까운 언어인데 이유는 Java와 같이 수동으로 이뤄지지 않고 컴파일러 등의 도움을 많이 받기 때문이다. 하지만 그만큼 사용자에 친화적이기 때문에 개발자의 입장에서는 좀 더 쉬운 언어에 속한다.

 

 

<게임 개발에서 C++를 사용하는 이유>

 

지금은 unity 엔진에서 C#을 사용하지만 기본적으로 게임 개발에서는 C++를 더 많이 사용한다. 그 이유는 여러가지가 있다.

 

우선 메모리 관리 부분에서의 용이함이다. C++ 언어는 개발자가 직접 메모리를 할당하고 해제를 해주는 언어다. 때문에 특정 상황에서 메모리 할당과 해제를 개발자가 직접 다뤄야 하고 그 말은 효율적인 메모리 관리가 가능하다는 것이다. 때문에 다양한 플랫폼에서 최적화를 할 수 있다는 점이 장점이다.

 

또한 타 언어에 비해 어셈블리어와 가까워 하드웨어 수준 구성 요소와 더 쉽게 상호작용하고 더 빠르다.

 

마지막으로 C++ 언어에는 게임 개발을 지원하는 라이브러리가 있어 게임을 쉽게 구축할 수 있다. 이 점이 게임 개발에서 C++가 사랑 받는 이유이다.

댓글