차근차근 모던 C++ 프로그래밍: 1편

모던 C++이란 무엇일까?

컴퓨터는 크게 하드웨어(Hardware)와 소프트웨어(Software)로 구성됩니다. 하드웨어는 CPU, 하드 디스크 등의 부품을 말하며, 소프트웨어는 게임, 운영체제 등의 프로그램을 말합니다. 만약 소프트웨어가 없다면 하드웨어는 예쁜 쓰레기에 불과하며, 하드웨어가 없다면 소프트웨어는 존재할 수 없습니다.

컴퓨터는 내부적으로 이진법을 이용하여 모든 것을 표현합니다. 지금 여러분들께서 읽고 계실 이 웹 페이지도, 컴퓨터의 메모리에 숫자로 변환되어 이진수로 저장되어 있습니다(물론, 여러분들이 양자 컴퓨터를 사용하고 계시다면 이야기가 좀 달라질 수도 있습니다.). 음악과 동영상, 텍스트 파일, 워드 파일 등 컴퓨터에서 처리되는 모든 것은 사실 숫자가 일정한 규칙에 따라 배치된 숫자의 집합일 뿐입니다. 이것은 프로그램도 예외는 아닙니다.

CPU는 숫자 집합을 읽어, 특정한 동작을 수행하는데, 이것을 기계어라고 합니다. 그러나 기계어는 숫자로 구성되어 있어 만들기 사용하기 굉장히 불편했고, CPU마다 규격이 모두 달랐습니다. 이러한 이유로, 어셈블리어, C, Java등의 각종 프로그래밍 언어(Programming Language)가 등장하게 됩니다. 프로그래머는 프로그래밍 언어를 이용해 코드(Code)를 작성하고, 그 코드는 대부분 영어 단어로 구성되어 있어 난이도가 기계어에 비해 상대적으로 많이 낮습니다. 이러한 코드를 컴파일러(Compiler)가 CPU가 인식할 수 있는 기계어로 번역하면 실행할 수 있는 프로그램이 만들어집니다.

C++은 프로그래밍 언어의 한 종류로, 1983년에 비야네 스트로스트룹이 만든 프로그래밍 언어입니다. 여러분들도 아시겠지만, 그때의 컴퓨터 성능은 현대의 컴퓨터 성능과 비교해 정말 나빴습니다. NASA가 달로 우주인을 보내던 시절에 NASA가 사용하던 슈퍼 컴퓨터의 성능은 지금 우리가 굉장히 흔히 사용하는 스마트폰보다 성능이 나빴다는 이야기가 있습니다. 그렇기 때문에 C++은 당시의 컴퓨터에 최적화 되어, 속도가 빠른 대신 프로그래머가 프로그램을 만들면서 신경써야 하는 부분이 굉장히 많고, 언어의 기능도 필수적인 기능을 제외하면 존재하지 않았습니다. 그래서 C++ 표준화 위원회(C++이라는 프로그래밍 언어를 정의하는 곳)는 2011년, C++11이라는 C++ 표준(C++이라는 프로그래밍 언어를 정의한 것)을 시작으로 여러 최신 기능들을 C++에 추가하기 시작했는데, 때문에 C++11 및 그 이후의 표준인 C++14, C++17 등을 모두 묶어 모던 C++이라고 부릅니다. 2018년 9월 기준으로, 최신 C++ 표준은 C++17으로, 2017년에 발표되었습니다.

이 강좌 시리즈는 여러분들이 모던 C++에 입문하여 모던 C++의 매력에 대해 알게 되고, 모던 C++이 널리 퍼지게 하는 목적으로 작성되었습니다. 이번 편의 내용은 다소 어려우셨을 수 있으나, 다음 편부터 시리즈 제목처럼 차근차근 기초부터 설명드릴 것이니 너무 걱정/긴장하시지 않으셔도 됩니다. 감사합니다.