프로그래밍과 컴파일

Jaemyeong Lee·2024년 12월 6일

게임 서버1

목록 보기
2/220

이번 Step에서 잡아야 할 것

  • CPU가 이해하는 언어: 기계어(0과 1) = 명령어들의 집합
  • 컴파일(Compile): 소스 코드 → 기계어로 “번역”
  • 빌드(Build): 컴파일 + 링크 등 “실행 파일을 만드는 전체 과정”
  • 실행(Run): 만들어진 실행 파일을 OS가 로드하고 CPU가 수행

CPU가 이해하는 것 (기계어와 인스트럭션)

  • CPU는 0과 1(기계어)로 표현된 명령만 처리 가능
  • 이때 “가능한 명령어 목록”이 바로 인스트럭션셋(Instruction Set, ISA)
    • 예: 더하기, 빼기, 메모리에서 값 읽기/쓰기, 점프(분기) 같은 기본 동작...
  • 사람이 기계어를 직접 작성하는 건 현실적으로 어렵습니다(가독성/생산성/실수 위험).

대안: 프로그래밍 언어 + 컴파일러(번역기)

우리가 하는 일은 단순합니다.

  1. 사람이 읽기 쉬운 언어(C/C++ 등)로 소스 코드 작성
  2. 컴파일러가 소스 코드를 분석해 기계어로 번역
  3. 결과물로 실행 파일(.exe) 또는 중간 산출물(.obj 등)이 생성

간단히 흐름을 그리면 이렇게 됩니다.

소스 코드(.cpp) ──(컴파일/링크: 빌드)──> 실행 파일(.exe) ──(실행)──> RAM 로드 ──> CPU가 수행

Visual Studio 기준 “빌드”와 “실행”의 차이

  • 빌드(Build): “번역 + 조립”해서 실행 파일을 만드는 과정
    • 보통 컴파일(번역) + 링크(여러 조각 합치기)가 함께 동작
  • 실행(Run): 만들어진 실행 파일을 실제로 돌리는 것
    • F5: 디버깅 실행(중단점/변수 확인 등)
    • Ctrl+F5: 디버깅 없이 실행

문법 오류(컴파일 에러) 감각 잡기

  • 컴파일러는 “추측”하지 않음, 문법이 틀리면 즉시 실패
  • 예: 세미콜론(;) 누락, 괄호 짝 안 맞음, 타입이 맞지 않음 등

핵심은 다음과 같음.

  • 런타임까지 가기도 전에(실행도 하기 전에) 컴파일 단계에서 한번 거름
  • 따라서 에러 메시지는 “실행 중 오류”가 아니라 번역 실패 이유인 경우가 많음

C++ vs 파이썬 (왜 게임은 C++을 많이 쓸까?)

구분파이썬C++
비유자동 운전수동 운전
장점문법 단순, 개발 속도 빠름성능/제어력/메모리 관리에 강함
단점상대적으로 느릴 수 있음어렵고 실수 여지 큼(대신 강력)
사용처(예)웹, 데이터 처리, 간단한 툴게임, OS, 엔진/서버 코어

체크 질문 (스스로 답해보기)

  • “컴파일”과 “빌드”는 같은 말일까? 다르다면 어디가 더 큰 개념일까?
  • 왜 CPU는 소스 코드를 바로 실행하지 못할까?
  • F5와 Ctrl+F5의 차이를 한 문장으로 설명할 수 있을까?

profile
李家네_공부방

0개의 댓글