서평

[서평] 아무도 알려주지 않은 C++ 코딩의 기술

작삼심일 2023. 5. 12. 10:30
로드북에서 책을 제공받아 작성된 서평입니다.

아무도 알려주지 않은 C++ 코딩의 기술 이미지

C/C++에 입문하는 과정에서 언어의 문법보다도 더 나를 괴롭혔던 부분들은 대체로 비주얼 스튜디오에 있었다. 분명 몇 줄 안 되는 코드에 빨간 줄 하나 없이 작성했건만, 비주얼 스튜디오는 어김없는 오류를 뱉어냈다. 몇 시간을 공들여 짧은 영어 실력으로 스택오버플로 글을 토막토막 읽어 나가며 친절한 글쓴이들이 올려주는 이미지를 통해 간신히 해결하면 또 다른 오류가 나를 맞이해 주었다. 자주 겪었던 상황들을 책에서는 '실무'적인 내용이라 잘 알려주지 않는 것들이었다. 이 중 몇 가지 나열해 보면 아래와 같다.

  • 비주얼 스튜디오에 있는 '미리 컴파일된 헤더'
  • 솔루션과 프로젝트의 종속 관계
  • 외부 라이브러리 빌드
  • 그 외..

 "아무도 알려주지 않은 C++ 코딩의 기술"은 C++을 실무에 적용시키려고 하는 초보 개발자들을 위한 책이라 볼 수 있다. C++의 문법이나 빌드 원리, 소프트웨어의 설계 기법, 디자인 패턴, 관용구(Idiom), 외부 라이브러리(Eigen, OpenCV) 활용법 등과 같은 내용은 다른 책들을 읽는 것이 훨씬 좋다. 하지만 이론적인 것들과는 별개로 윈도우에서 비주얼 스튜디오로 입문하는 사람들에게는 가장 답답했던 비주얼 스튜디오의 특정 부분에 대해 속 시원하게 알려준다. 또한 C++ 프로그램을 개발한다면 범용적으로 많이 활용되는 멀티 스레드, 소켓, 네트워크 같은 개념도 컨셉과 함께 코드 수준으로 상세히 설명해 준다. "아무도 알려주지 않은 C++ 코딩의 기술"은 C++교과서 옆에 두고 읽을 만한 좋은 참고서다.

이 책은 C++에 막 입문하였거나, 문법에는 어느정도 익숙하지만 중수가 되지 못한 개발자가 읽기에 아주 좋은 책이다. 앞서 말했듯이 이 책이 다루는 내용 자체가 '입문 과정에서 겪을만한 어려움을 어떻게 해결하는가'이기 때문이다. 또한 대부분의 C/C++에 관한 다른 서적들은 소프트웨어에 대해 충분히 숙지해야 알 수 있는 어렵고 난해한 내용들이 많고, 저수준에 관한 내용을 다루면서 '어디 한번 이해해 보시지'라는 것처럼 컴파일 결과물인 어셈블리 코드를 보여준다거나, 16진법의 숫자들로 이루어진 메모리 구조를 보여준다. 하지만 이 책은 어려워 보일만한 내용은 최소화하고, 초보 독자가 잘 따라올 수 있도록 윈도우 캡처 화면과 C++코드, 그리고 미친 식빵과 미친 감자가 등장하는 짧은 만화가 포함되어 있다.

 

비주얼 스튜디오에서 C++ 코딩을 시작할 때, 하나의 솔루션에 하나의 프로젝트만 사용할 때는 막힘없이 프로그래밍 진도를 뽑아내며 '나 사실 코딩 천재?'라는 생각이 들기도 한다(아닌가?) 하지만, 전혀 본 적 없는 문제가 두 개 이상의 프로젝트를 사용하기 시작하면서 발생한다.

위 그림의 미친 감자처럼 이해할 수 없는 비주얼 스튜디오의 오류창을 보며 파일을 삭제한 뒤 복원 하기도 하고, 비주얼 스튜디오를 지웠다 깔기도 하고, 컴퓨터도 껏다 켜다가, 결국 포맷까지 해보는 지경까지 이른 적도 있었다(보통은 새 솔루션을 만들어서 차근차근하면 되기도 했었다.) 나는 스택 오버플로우 검색을 통해 간신히 알게 되었지만, 이 책에 이 내용이 나왔을 때 어찌나 반갑던지..

다음으로는 비주얼 스튜디오에서 처음 프로젝트를 생성하면 기본 제공하는 미리 컴파일 된 헤더 (precompiled header, pch)도 종종 문제를 만들어 낸다. 개인적으로는 구글 테스트를 솔루션에 포함시키면서 이상한(사실 몰랐던) 문제들을 접하게 되었었는데, 그중 하나가 미리 컴파일된 헤더였다. 테스트 코드를 추가하는 과정에서 단 하나의 실수가 덧붙여진다면, 이상하게 발생하는 오류창 때문에, 발생 원인이 미리 컴파일된 헤더라는 것을 알게 된 순간부터는 항상 프로젝트에서 제외해 버렸다. 

생각보다 미리 컴파일된 헤더를 활용하지 못하는 경우가 많습니다. 하드웨어는 어마어마하게 발달했지만 개발자는 컴파일 시간에서 그 성능을 실감하지 못했다면 이번 절을 유심히 봐주세요. 하드웨어 성능만큼 컴파일 속도도 빨라짐을 확실히 느낄겁니다.
"아무도 알려주지 않은 C++ 코딩의 기술"

미리 컴파일된 헤더는 위의 인용문처럼 컴파일 시간을 단축시켜 준다는 것은 어렴풋이 알고 있었지만 도대체가 사용 방법을 알 수도 없고 컴파일 속도가 문제 될 만큼의 프로젝트가 아니거나 크로스 플랫폼을 타깃으로 하는 경우가 많아 보통은 잊고 살았었다. 이 책에서 미리 컴파일된 헤더를 사용하는 핵심적인 방법을 설명해 주는데, 개인적으로는 매번 보긴 했지만 크게 의식하지 않고 넘어갔던 설정의 사용방법을 드디어 알게 되었다.

마지막으로 C++ 입문을 주먹구구식으로 하면서 가장 힘들었던 부분은 외부 라이브러리를 연결하는 과정이었다. 프로그래밍의 입문을 매트랩으로 시작했었는데, 이 경우에는 외부 라이브러리보다 내부에서 지원하는 툴박스의 강력함 때문에 신경을 써본 적이 없었다. C++ 다음으로 사용했던 파이썬의 경우에는 필요한 라이브러리를 간단한 명령어로 사용할 수 있었다. 이러다 보니 C++의 외부 라이브러리는 골치만 아픈 금단의 비술 같다는 생각을 자주 했었다.

미친 식빵 선생 말처럼 라이브러리의 생성부터 연결까지 상세히 다룬 책은 많이 본 적은 없었던 것 같다. 이 기회를 통해 이미 알고 있던 부분에 대해 확실히 익히고, 몰라던 부분에 대해 새롭게 알게 되며 많은 것을 배울 수 있는 기회였었다.

로드북에서 이 책에 대한 리뷰를 제안해 주었을 때, 주저하지 않고 흔쾌히 하겠다고 말했다. 안 그래도 C++에 관한 다양한 서적들을 수집하듯이 읽고 있는 시기인데, 이 책에 대한 광고를 보며 호기심이 생긴 상태였다. 기대했던 만큼 알찬 내용과 쉽게 풀어쓴 설명 덕분에 많은 것을 알게 되었다. 만약 이제 C++을 입문할 생각이거나 C++에 막 입문한 단계라면, 특히 그중에서도 윈도우의 비주얼 스튜디오를 활용해야 한다면 이 책은 처음 마주하는 공포스러운 오류창을 말끔하게 제거하는데 큰 도움이 될 것이다.

728x90
반응형