[서평] Effective C++ : 이펙티브 C++
저의 돈으로 직접 사서 직접 완독 해본 후 써보는 후기입니다. 따라서 장점은 장점대로 칭찬할 것이며, 단점은 단점대로 언급할 것입니다.
<읽은 기간>
2021/02/25 ~ 2021/04/16
<리뷰 순서>
1) 책의 표지
2) 단원별 구성
3) 읽은 소감
우선 저의 글의 앞부분만 보는 분들을 위해 먼저 간단히 3가지에 대해 답해보겠습니다.
Q 이 책을 읽기 전에 필요한 수준/ 지식은?
=> 이 책은 C++을 이미 충분히 숙지한 사람을 대상으로 한 자료구조 기본서이다. 기본 문법 사항들은 알고 있어야 한다.
Q 이 책을 읽어야 할 필요성, 어디에 도움이 될까?
=> C++에 대한 깊은 이해를 돕는다. 내부 작동원리와 많은 tip들, 더 나아가 설계의 원칙과 메모리 관련 이야기 등등 수많은 C++에 관한 tip들을 알려준다. 물론 tip이라고 하기에는 하나하나 좀 무거운 내용들이라 책 한번 읽었다고 실력이 급증하지는 않을 것이다.
Q 이 책을 읽은 후 추후 공부는?
=> 1 회독은 했지만 실질적으로 채화시키려면 많은 프로젝트 경험이 필요할 것 같다. 하지만 당분간 그럴 일이 없을 것 같으니... 우선 나중에 필요할 때 다시 이 책을 꺼내서 읽어보도록 해야겠다.
이책을 읽어 본 후 더 읽어보고 싶은 분들은 같은 저자의 modern effective c++ 이 따로 있다. 난 읽어보지 않겠지만 된다면 읽어보시길!
1. 책의 표지
표지가 나는 마음에 든다. 좀 예전 책 느낌이 많이 나기는 하는데(실제로 예전 책이 맞다) 전공책 느낌이 많이 나서 좋은 것 같다.
우선 예전 책이라고 확신할 수 있는 이유 중 하나가 책 뒷면에 스콧 마이어 행님의 사진이 젊은 시절 사진이다.
최소 10년 전쯤 사진이실 것 같다.
2. 단원별 구성
총 9장까지 로 구성된 책이다. 난 이 중에서 7장 템플릿 부분은 읽지 않았다. 현실적으로 학교 과제하거나, 알고리즘 문제 풀 때 템플릿을 저렇게 까지 심오하게 쓰진 않는 것 같다. 알면 좋겠지만, 당장 사용을 안 하다 보니 이해도 잘 안되서 7장은 건너뛰었다.
여러 항목들 중에서 항목 38번을 갖고 이 책을 설명해 보겠다.
6장 항목38
이 책은 항상 시작 부분에서 문제가 될만한 상황들을 가정하고 시작한다. 어떤 상황에서 어떤 문제가 발생하면 어떻게 해결해야 할까? 이런 방식의 의문을 먼저 독자에게 물어본다.
위의 사진에서도 합성이 무엇인지 그 정의를 던진 후, 문제가 될만한 부분들을 말하면서 글을 시작해 주신다.
또한 단순하게 코드의 설명이 아닌, 코드에 의미를 부여하여 설명해주는 부분이 좋았다.
가령 다른 단원에서 public상속은 is_a의 의미를 갖는다 와 같은 문과적인 느낌의 의미 전달을 해주시려 노력하였다.
위의 객체 합성 또한 2가지 의미를 알려주시려 하였다. 이런 식의 접근 방식은 이해하고 나면 잘 잊혀지지가 않는다.
또한 중간중간 코드 또한 추가하여 코드적으로 어떤 의미가 되는지, 또 글로만 보면 한눈에 파악되지 않을 부분들은 어느 정도의 코드를 통하여 보여주시고 있다.
또한 각 쳅터마다 마지막에 잊지 말자!라는 부분에서 해당 쳅터의 내용에서 핵심만을 정리해주시는 부분 또한 매우 좋았다.
3. 읽은소감
▶ 장점
장점은 무엇보다 C++에 대한 깊은 이해를 돕는다는 점이다. 실질적으로 이 책을 읽고 써먹고 있는 const에 대한 글이 가장 도움되었던 것 같다. 또한 동적 메모리를 반환할 때 delete와 delete []에서 []가 어떤 식으로 작동하는지의 의미와 같은 내부 작동원리를 알 수 있어서 매우 좋았다.
또한 책이 코드의 설계에 있어서 어떤 방식으로 접근해야 하는지, 템플릿의 사용, 제네릭 코드, 상속에서의 의미들 등 단순 코드 설명에서 끝나는 것 이 아니라 의미를 부여하여 좀 더 명확하게 해 주시는 부분이 매우 좋았다.
저자분 스콧 마이어는 지금도 CPP세계에서 매우 유명하신 분 중 한분이다. 그런 분이 CPP코드 작성에 있어서 현실적이고 효과적인 tip을 알려주시니 적용 가능한 범위에서는 나도 의식하고 책의 내용을 적용하려 한 부분들이 많았다.
책의 서술방식이 매우 친근하다. 일반 전공책의 느낌이 아니다. 서양식 조크가 풍부하며, 저자분께서 유머를 아주 좋아하는 사람임을 매 쳅터마다 느낄 수 있었다. 진짜 웃기다고 생각한 부분들도 있었다.
▶ 단점
책이 한 번에 다 이해할 수가 없다. 물론 이건 내가 아직 실무경험이 없어서 그럴 수도 있지만, 대학생보다는 이미 C++로 개발은 한 2년 정도 해보신 분들이 어느 정도 맨땅에 헤딩 좀 해본 후 읽으면 사막의 오아시스와 같은 느낌을 선사할 책인 것 같다.
C++문법만 다 알면 이 책을 읽는대 문법에서 걸리는 부분은 없다. 다만 내용 하나하나가 무거운 파트들이 있어 이런 부분 들은 실제로 내가 겪어보지 않는 이상 크게 와닿지 않는 문제들이 있었다. 나 같은 경우 특히 7장 템플릿에서 와닿지가 않았다. 내가 템플릿을 너무 기초적인 부분만 사용해봐서 그런지 "왜 저런 걸 하는 거지?" 란 생각이 들면서 또 내용도 어려워 흥미가 사라지는 단원이었다.
이렇다 보니 이 책은 한번 읽어서는 건지는 부분이 한 20% 정도밖에 안 되는 것 같다. 그나마 나도 어느 정도 당장 써먹을 수 있는 부분들은 써먹다 보니 어느 정도는 건진 것 같지만 아직 다 체화시키지 못한 부분이 훨씬 많다.
이점 말고는 이 책은 정말 만족스러운 것 같다. 뇌에 고문하는 느낌을 좋아하는 분들께 꼭 이 책을 추천한다.