바야흐로 2022년 7월 중순 즈음, 언리얼 교육 과정을 같이 듣는 수강생들 중 C++ 문법을 더 공부하고 싶은 사람들끼리 스터디를 만들었다. 처음에는 강사님의 추천을 받아 C++ 기초 플러스라는 책으로 시작했다.

언뜻 보면 아~ 6판까지 나올 정도면 되게 좋은 책인가보다~
할 수 있다.




1,732쪽? … 잠시만요
물론 내용은 알차다. 다만 C++ 문법을 간단히 이해하기 위해 빠르게 훑고자 했던 스터디의 목적과는 달리 책에서는 방대한 양의 지식을 우리에게 알려주려고 했다. 한 번 다 읽었던 사람으로서 책에 대한 한줄평을 남기자면
C++ 기초 ‘플러스', 그러니까 기초를 다 끝낸 후 이전에 사용했던 문법들에 대해 ‘더' 살펴보기 좋은 책
평일 방과후에 스터디를 진행했는데 하루에 1명이 선생님이 되어 1단원을 공부하고 다른 스터디원들에게 알려주는 형식으로 진행했다. 단원 당 기본 500쪽이 넘었기에 기존에 예상했던 1시간이라는 스터디 시간을 훌쩍 넘어 집에 갈 때가 많았다. 아무리 돌아가면서 발표하더라도 처음 배우는 언리얼 엔진을 배우고 익히기에도 바빴고, 프로젝트까지 해야 하다보니 일주일에 자신이 맡은 한 단원 몇 백 페이지를 누군가에게 알려주기란 쉬운 일이 아니었다. 그렇다고 다른 자투리 시간까지 할애해서 완벽하게 이해하는 것도 그리 효율적이라 판단되지 않았다.
우여곡절 끝에 3주 동안 책 한 바퀴를 돌았다. 포기하지 않고 책을 한 번 다 본 것에 만족했다. 그리고 스터디의 목적이 더 뚜렷해졌다.
당장 작성할 수 있을 정도로 쉽게 설명해주는 기초 문법책으로 다시 하자!
당시의 욕심대로라면 비전공자 시선에서 공부했었던 경험을 바탕으로 공부 자료를 새로 만들어보고 싶었지만 그러기엔 내 수준은 너무나도 낮았고, 스터디는 당장 시작해야 하기에 시간 여유도 없었다. 누구나 쉽게 보기 좋은 책을 찾다가 추진력이 좋은 스터디원 덕분에 쉽게 쓰여진 책들 중 이 책을 선택하게 되었다.
그림으로 배우는 C++ Programming Basic

이전에 C#을 겉핥기식으로 공부했던 비전공자의 시선으로 봤을 때, 읽기 좋게 편집도 잘 되어있고 어렵지 않게 설명되어 있어서 책이 두꺼워도 금방 읽혔다. 그래서 처음 문법을 접하기에 부담없이 책장을 넘길 수 있을거라 생각한다.
다만 아쉬웠던 점은 책이 C++ 몇을 기준으로 작성된 지는 모르겠으나 비주얼 스튜디오 17을 사용한 것을 보면 최소 4년 전 글이라고 생각한다. 그러다 보니 본문 내에서는 어떤 기능이 절대 될 수 없다고 써있으나 궁금해서 검색해보니 C++이 계속 발전되어 이전에는 안 됐던 기능이 가능한 경우 등이 더러 있었다. 기술은 머무르지 않고 발전하니 지금 당장 되던 게 될 수도, 안 될 수도 있는 건 당연하다. 그래서 책을 읽으면서 느꼈던 건
책에 나온 모든 내용을 절대적으로 믿지 않고 지식 습득에 대한 유연성을 가져야겠다
이전에 C#이나 다른 문법을 맛 봤을 때에는 정보에 대해 깊은 호기심을 갖지 않았다. 알려주는 객체가 아니라고 하면 아닌거고, 안 알려주면 모르는대로 코드를 짰다. 그러다보니 float 변수
를 비교할 때 ==
로 비교하거나 함수를 직접 짤 때에는 반환자료형에 대한 이해가 없어 void
만 사용하는 등의 프로그래밍이 반복되다보니 쉽게 사용하던 문법에도 호기심이 생기기 시작했다. 전문가 만큼은 아니어도 이렇게 작동하는구나!, 그래서 그렇게 작성해야 됐구나! 가 이해되기 시작하니 문법이 재밌어졌다. 위에서 말한 것처럼 직접 문법을 정리하고 싶다는 생각이 들게 된 계기이기도 하다. 어렵다고 판단해서 시작할 엄두도 안 나는 사람들도 거부감 없이 읽을 수 있는 문법 자료를 만들고 싶었다.
스터디 당시 정리했던 예시


필요성을 모르고 공부하게 되면 머리에 남는 것도 없을 뿐만 아니라 배운 것을 이용하여 활용하기도 어렵다. 대학에 들어가서 공부가 재미있었던 이유는 진학을 위한 공부와는 달리 알고싶고 필요했던 정보를 얻기 위한 공부이다 보니 왜
필요한지 스스로 잘 알았고 흥미도 느껴 시간 가는 줄 몰랐다. 사실 코딩을 할 때 학부 때만큼 너무 재밌어서 흥분하며 코딩할 수 있을까?라는 질문을 스스로에게 묻곤 했다. 처음 배울 때에는 진도를 따라가거나 기간 내에 프로젝트를 제출하기 바빠 흥미를 가질 시간도 없이 주어진 일을 하기 바빴다.
그러다가 교육 기관 수료 이후에 혼자 공부할 시간이 생겼다. 그간 배웠던 문법, CS 지식 등이 갖는 역할에 대해 다시 생각하는 시간이었다. 코딩을 처음 배울 때 컴퓨터 구조를 알려주었는지, 자료형의 크기를 왜 신경 써야 하는지 등의 이전에는 중요하게 생각하지 않았던 부분들이 이해가 가기 시작했다. 이때부터 이게 왜 필요할까? 어떻게 작용할까? 이런 부분은 이게 아쉬운데 다른 방법은 없을까? 등의 질문이 생겨나기 시작했고 이전보다 지식 습득 속도가 빨라졌다.

어릴 때부터 학습 습관은 구어체
였다. 누군가를 알려준다고 생각하면서 선생님이 되어 역할놀이처럼 공부를 했었다. 정리한 내용들을 설명하다가 조금이라도 모르겠다 싶으면 해당 부분을 이해할 때까지 다시 학습한 후에 역할놀이를 진행했다. 전문가 만큼은 아니었지만 어떤 공부를 처음 시작할 때 시간은 오래 걸려도 이만한 좋은 습관이 없었다.
예시 이미지를 보면 알 수 있듯, 글을 정리하면서 알아두면 좋은 내용이나 필자가 애매하게 알거나 잘 모르는 내용, 그리고 글을 읽는 사람들이 궁금할 만한 내용들을 질문자 - 답변자 형식으로 자문자답을 했다. 처음에는 교과서적인 질의응답을 했지만 하다보니 독자들에게도 문법 공부지만 재미있게 읽히는 자료라는 식의 재미 요소를 넣어주고 싶었다. 그래서 이미지도 넣고, 짤도 넣다 보니…

책을 기반으로 스터디를 했기에 위에서 소개한 그림으로 배우는 C++ Programming Basic의 전반적인 흐름을 따라 작성했다. 대부분의 예시는 직접 머리를 쥐어짜내어 만들었다.
#include <iostream>
using namespace std;
// if example
int main()
{
int input;
cout << "가장 좋아하는 숫자를 맞춰볼게요. 숫자를 입력해주세요" << endl;
cin >> input;
if (input == 312)
{
cout << "당신이 가장 좋아하는 숫자는 312입니다" << endl;
}
}
예외 처리 등의 여러 가지 상황을 대비하는 코드는 아니지만, 최대한 이해를 돕기 위해 여러 가지 코드를 짜게 되고 오류나 예기치 못한 결과값을 얻으면서 책으로 공부하는 것과는 다른 재미를 느꼈다. 이 책도 빨리 훑어보는 용이어서 하루에 한 단원씩 나갔는데, 당시 코로나 때문에 정리 못한 단원도 있었다. 하지만 앞으로 게시할 [🐸 킹받는 🤸 씨뿔뿔 시리즈]는 스터디 때처럼 하루에 한 단원을 나가지 않아도 되기에 적절한 분량과 내 궁금증과 그에 대한 해답을 녹여낼 만한 글을 작성할 수 있게 되었다.
이런 식으로 정리하다보니 친근하고 쉽고 재밌게 시작할 수 있는 문법 입문 자료를 만들고 싶었고, 제목부터 장난스럽게 지어 독자들로 하여금 호기심을 유발 시키고 싶었다. 코딩할 때도 간혹 머리가 지끈거리는 이름 짓기… 뭐로 할까 생각하다가 점점 열받는 대화를 주고 받는 자문자답이 떠올라 [🐸 킹받는 🤸 씨뿔뿔]로 정하게 되었다. 어떻게 하면 카테고리 자체도 킹… 아니 열받게 만들지 고심했다.
이 시리즈는 이렇게 작성될 예정
중요
작성자 및 독자에게 부담되지 않는 양
목차 : 그림으로 배우는 C++ Programing Basic 흐름
연재 주기 : 화 / 목
재미 요소 : 킹받는 질문자 🐸 와 절대 뒤지지 않는 답변자 🤸

사실 스터디 했을 때처럼 매일 글을 쓸까 하다가 책 내용을 베끼는게 아닌, 목차만 가져오는 거기 때문에 예시를 만들거나 너무 집요한 궁금증을 해결하기 위한 시간이 오래 걸릴 거 같아 일주일에 2번 이상 쓰는 걸 목표로 잡았다. 프로젝트도 없고, 알고리즘 문제를 풀지 않아도 된다면 하루에 2개씩 써도 상관은 없지만 글을 쓰는 기준으로 해야 할 일이 많다. 시간과 압박에 쫓겨 누가 봐도 읽기 싫은, 흥미 없는 글을 쓰느니 여유롭게 누구든 쉽게 읽을 수 있는 정리를 올리고 싶다.
[🐸 킹받는🤸씨뿔뿔 시리즈] 목차 페이지
해당 페이지에서 [🐸 킹받는 🤸 씨뿔뿔 시리즈] 목차를 확인할 수 있다.
Uploaded by N2T