대규모 C++ I편: 절차와 아키텍처 - 표지

 

길벗 출판사에서 진행하는 도서 리뷰 이벤트에 당첨되어서 도서를 받았습니다.

C++기반의 대규모 프로젝트를 위한 기술서라니!

 

이 책은 C++의 문법이나 고급 trick 같은 것을 설명하는 책은 아닙니다.

C++ 기반의 library/application 프로젝트를 구축하는데 있어서 고려해야 하는 것들을 소개하는 책이었습니다.

소개하는 설계 방법론은 C++ 외의 컴퓨터 언어에서도 사용할 수 있겠으나, 예시 설명이 C++ 기반이기 때문에, C++을 전혀 모른다면 읽기 어려울 수 있어 보입니다.

 

C++ 프로그램을 만드는데 있어서 나타날 수 있는 문제들("나쁜 아이디어")을 소개하고, 그러한 문제들을 해결하기 위한 (유일한 답은 아니겠지만, 상당히 합리적인) 방법들도 같이 소개합니다.

 

책에서 저자는

 📌 C++의 프로그램의 빌드(컴파일 및 링크)에 대한 개념과 내부 동작,

 📌 그로 인해 나타날 수 있는 문제들,

 📌 그러한 문제들을 해결하기 위한 방법을 소개합니다.

 

또한, C++은 자유도가 상당히 높기 때문에 계획 없이 구현하면 스파게티 코드가 되기 쉬운데, 관리가 나빠질 수 있는 경우와 그것들을 방지하기 위한 가이드도 함께 소개합니다.

 

특히, 저자는 나쁜 아이디어라는 이름으로, 문제 상황이 적용된 적절한 예시를 보여주면서, 독자가 최대한 쉽고 직관적으로 문제상황을 인식할 수 있게 해줍니다. 읽다 보면 '아, 그렇지. 이렇게 하면 안되지' 라는 생각이 절로 듭니다.

 

책에서 저자는 지향하는 설계 방법론의 당위성과, 필요한 정보들을 거의 모두 제공하고 있는 것 같습니다.

이 책만 참고하면 저자가 지향하는 설계 방법론을 온전히 재현해낼 수 있을 것 같습니다.

(II편과 III편은 필요합니다 😂)

 

한편, 여러 팀이 여러 라이브러리를 구축하고 통합된 최종 application을 만들어내는 정도의 대규모 프로젝트에서 발생할 수 있(다고 생각이 드)는 문제들도 소개하고 있는데, 저는 간단히 훑어만 보았습니다.

공감이 많이 되지 않는 부분이어서, 그런 내용이 있었다는 것만 알아두고 필요할 때 찾아보려고 합니다.

 

C++은 다른 많은 언어가 제공하는 import 대신 #include 라는 것을 사용합니다.

#include는 copy & paste 동작인 샘인데, 많은 C++ 입문자 또는 주니어 개발자분들은 잘 모르고 반사적으로 사용합니다. 이전 회사의 동기들이나 동료분들도 그러했는데요,

이 책에서는 static, extern, 그리고 inline 등 C++의 다양한 키워드가 컴파일 타임, 링크 타임에 어떤 영향을 주는지도 소개합니다.

 

이러한 키워드들은 보통 경험적으로 사용할텐데요, 경험적인 사용은 통상 성공적인 사용을 토대로 하기 때문에, 잠재적 위험 요인이 무엇이 있는지를 모르고 사용하는 단점이 있습니다.

이제 이 책을 통해 컴파일/링크 동작을 이해한다면, 각 키워드가 어떤 영향을 주는지 알고 사용할 수 있습니다.

저는 C/C++을 접한지는 13년이 넘었고, 연구/실무하면서 사용한지는 8년이 넘은 것 같습니다.

개인적으로 이것저것 많이 찾아보고 테스트해보는 편이었는데도 새롭게 알게 된 것들이 매우 많았습니다.


책에서 저자는 대부분을 C++ 표준에 기반하여 설명하므로, 정의되지 않은/보장하지 않는 동작에 대한 지식도 얻어갈 수 있었고, 몰랐던 부분들도 C++ 표준과 컴파일러의 동작에 기반해서 상세히 설명되어 있어서 읽는 동안 재미있었습니다.

 

 

+ Recent posts