[Modern C++] 따배씨++ Chapter 0 정리

따베씨++ Chapter 0을 듣고 정리해보자!

Modern C++을 복습하기 위해 인프런에서 홍정모 교수님의 따라하며 배우는 C++를 정리해보자.
C++을 처음 배우는 사람이 대상이다보니, 초반부는 조금 쉽다고 느껴진다.
하지만 기초를 탄탄히 한다는 마음으로 들을 예정이다.

쳅터 1은 C++의 기초적인 사용법이라는 이름으로 되어있다. 그 전에 이번 강의는 Visual Studio 2017을 기준으로 진행하는데, 그전에 몰랐던 기능이나 헷갈렸던 부분을 ‘0.들어가기전에’라는 곳에 정리를 하겠다.

0. 들어가기전에

프로그래밍 언어란

프로그래밍을 공부하기 전 컴퓨터를 이해하는데 필요한 단어들에 대해 이야기를 해보자.

  • 기계어 : 기계(=컴퓨터)가 이해할 수 있는 언어. 즉 2진수로 되어있는 수의 조합 (ex. 01010101111101)

  • 어셈블리 언어 : 사람은 기계어를 이해하기 무척이나 힘들기 때문에 CPU가 하는 단위 기능들을 직접 수행, 컴퓨터 메모리를 직접적으로 제어를 할 수 있는 언어 (최근에는 거의 사용하지 않음.)

  • 고수준 언어 (High level Language) : 사람에게 친숙한 언어로 우리가 대부분 프로그래밍 언어를 배울 때 배우는 C,C++,Python,Java 등이 고수준 언어에 속한다.

  • 컴파일러 : 컴퓨터에게 일을 시키기 위해 코드를 작성하면 컴퓨터가 알고 있는 언어(=기계어)로 번역을 해주는 프로그램. 우리는 코드로 문서를 작성하면 컴파일러를 통해 실행파일을 만들 수 있게 된다.

  • 인터프리터 : 실행파일을 만들지 않고 바로 중앙처리 장치와 메모리를 통해서 프로그램을 실행시킬수 있도록 한다. 대부분 실행파일을 만드는 것이 인터프리터를 활용하는 것보다 더 빠르다. 대표적인 언어는 Python이 있다.

  • 이식성(Portability) : OS마다 컴파일러가 다르다. 컴파일하는 방식이나 문법이 차이가 있을 수 있다. 리눅스와 윈도우의 실행파일이 다르고 호환이 되지 않는다.

프로그래밍 과정

프로그래밍 과정은 다음과 같이 진행된다.

  1. 풀어야 할 문제를 정의한다.
  2. 해법을 설계한다.
  3. 해법을 구현하는 프로그램을 작성한다.
  4. 프로그램을 컴파일 한다.
  5. 오브젝트(object) 파일들을 링킹(Linking)한다.
  6. 테스트해보고 문제가 있으면 고친다. (디버깅)

사람이 주로 하는 단계는 1단계~3단계이다.

4단계에서는 컴퓨터가 자체적으로 수행하는 데 그림으로 표현하면 아래와 같다.

g++은 대표적인 컴파일러이다. 그림처럼 소스 파일별로 컴파일을 하고 오브젝트 파일을 따로 만든다. 윈도우에서는 오브젝트 파일이 (.obj) 형태이지만, 리눅스에서는 오브젝트 파일이 (.o)이다.

그 다음 5단계를 그림으로 표현하면 다음과 같다.

링커라는 것을 활용해 오브젝트 파일들을 합치고 런타임 서포트를 활용하여 빠르게 실행파일을 만들 수 있다.

Visual Studio 2017 기본 사용법

솔루션과 프로젝트의 구조는 다음과 같다.

|- Solution
    | - Project 1
    | - Project 2
    ...

솔루션 안에 여러 프로젝트를 담을 수가 있다. 이때 Visual studio에서 가장 먼저 실행되는 것은 Visual Studio 오른쪽에 보면 “Solution Explorer”에 프로젝트 이름에 Bold 체로 굵게 표시된 부분이 있다. 그 프로젝트가 먼저 실행이 된다.

또한 Debug 모드와 Release 모드는 각각 실행파일을 만드는데 Debug 모드로 만든 실행파일이 Release 모드로 만든 실행파일보다 훨씬 무겁다! 왜나하면 디버깅에 필요한 정보들이 Debug 모드로 만든 실행파일에 많이 담겨있기 때문이다. 따라서 배포를 할 때는 Release 모드로 실행파일을 만들어야 한다.

댓글남기기