0. 컴파일이란

  • 인간이 이해할 수 있게끔 작성해놓은 소스 코드를 컴퓨터가 이해할 수 있는 언어로 바꾸는 일
  • high-level 언어를 low-level 언어로 바꾸는 일
  • 소스 코드를 어셈블리어 혹은 object 코드로 바꾸는 일

 

1. 컴파일러

  • 컴파일을 해주는 프로그램

 

2. 컴파일 과정

  • 전처리 -> 컴파일 -> 어셈블 -> 링크
  • 전처리 : 전처리 구문들 처리, #define, #include#으로 시작하여 세미콜론없이 개행문자로 종료하는 구문들(.cpp -> .i)
  • 컴파일 : 전처리 된 .i 파일을 어셈블리어 파일인 .s로 변환
  • 어셈블 : .s 어셈블 파일을 .o 목적 파일로 변환, 어셈블리어란 기계어보다 하나 위이고 컴퓨터가 바로 읽을 수 있는 언어이지만 인간이 읽기엔 불편한 언어
  • 링크 : .o 파일들과 라이브러리 파일을 연결하여 .exe로 최종 실행 가능하게끔 만들어 줌

 

3. 컴파일러 vs 인터프리터

  • 컴파일러는 위 과정을 거쳐 목적파일을 만들어 최종적으로 .exe 파일을 구동가능하게 함
  • 인터프리터란 컴파일러와 다르게 따로 생성하는 파일 없이 한 줄 씩 읽어 처리
  • 새로 생겨나는 파일은 없겠지만 실행시간엔 그만큼 느릴 수 밖에 없음

 

4. C# vs C++

  • C++ : 객체 지향, 수동 메모리 관리
  • C# : 객체 지향 + 컴포넌트 지향, 자동 메모리 관리
  • 결국 차이는 왜 이 언어를 사용하는가가 될 것 같다.
  • C++는 네트워킹, 드라이버, 게임 프로그래밍, 서비스 측면의 애플리케이션 개발에 유리하고 광범위하게 사용가능함
  • C#은 .NET 프레임워크를 사용한 애플리케이션 개발 가능(.Net 프레임워크는 윈도우에서만 지원하는 프레임워크라고 함), 게임엔진인 유니티에서 C# 사용

 

5. 게임 프로그래밍에서 C++ 사용하는 이유

  • 객체 지향이라는 점이 가장 크게 작용할 것 같음
  • 메모리 관리, 리소스 관리, 최적화면에서 C++이 유리함

+ Recent posts