Review
Effective Modern C++ 후기

C++은 PS를 공부하면서 자주 사용해본 언어다. 그렇지만 PS에서 언어의 다양한 기능을 활용하는 경우는 거의 없었기 때문에, C++을 사용했다기보다도 STL을 통해 몇몇 자료구조를 사용한 것이라고 보는 게 맞다. 사실상 C의 문법도 아주 익숙한 것도 아니다.
그래픽스 API들에 관심이 생기면서 자연스럽게 C++을 공부해야 할 필요성도 생겼다. 인터넷상의 자료들으로 공부하면서 C++에는 다양한 문법적 기능들과 많은 라이브러리들이 있다는 것을 알게 되었다. 한편으로 C++은 오랜 역사를 거치면서 변화해온 언어이기도 하다. 그렇다 보니 처음 C++을 배우는 입장에서는 이 다양한 기능과 라이브러리를 어떻게 사용해야 할지 감을 잡기 어렵다. 만약 그때그때 필요한 기능들을 찾아서 코드를 만들다 보면, 그 코드는 C 스타일과 ‘옛날’ C++ 스타일과 ‘모던’ C++ 스타일이 규칙 없이 마구 섞여 있는 코드가 되지 않을까? 그런 코드가 아주 나쁜 것인지는 모르겠다. 그리고 나는 그런 걸 신경 쓸 만큼 C++에 익숙한 것도 아니다. 그렇지만 나는 이왕 입문하는 김에 좀 더 일관적인 스타일의 코드를 쓰고 싶었다. 그래서 이 유명한 책이 딱 내가 원하던 공부 자료가 될 수 있을 것이라는 기대로 읽기 시작했다.
이 책에서 다루는 모던 C++이라는 것은 C++11과 C++14에서의 코딩 스타일이다. 42가지의 개별적인 주제(아이템)들을 통해서 모던한 C++ 코드를 작성하는 방법을 알려준다. 이 42가지의 주제들은 순서에 상관없이 내용에서 언급되기는 하지만, 책에 배치된 순서를 신중하게 결정했다는 느낌을 받았다. 앞선 주제들을 읽으면서 드는 의문이나 해결되지 않은 고민들을 뒤에서 자연스럽게 해결해준다. 각각의 주제도 모던 C++에서 굉장히 중요한 고민들로 선택됐다는 생각이 든다. 주제 선정도 좋을 뿐만 아니라, 각각의 내용은 구체적인 예시를 통해서 이해하기 쉽게 설명해주면서도 예외적인 상황까지 놓치지 않고 알려준다. 물론 C++ 자체가 복잡한 경우가 많기 때문에 쉽게 이해하기 어려운 부분도 있다.
결론적으로 이 책은 C++ 입문자를 위한 책은 아니었다. 이 책은 옛날 스타일의 C++에 익숙한 독자들이 모던 C++에 익숙해지도록 하는 책이다. 나도 기본적인 문법들은 혼자서 찾아본 적은 있지만 C++으로 개발을 해본 것도 아니었기 때문에, 나 같은 독자의 입장에서는 이 책만으로는 이해할 수 없거나 공감이 안 되는 상황도 있었다. 그렇지만 C++과 클래스에 대한 기초적인 개념이 있다면 충분히 읽어볼 만한 좋은 책이라고 생각한다. 사실 내용을 다 이해하지는 못하더라도 책에서 문법적인 문제 상황을 깔끔하게 해결하는 것도 흥미롭고, 중간중간 나오는 개발자 개그 덕분에 재미있기도 하다.