관심있는 것들 정리
[리뷰] 아무도 알려주지 않은 c++ 코딩의 기술 본문
내돈내산으로 산 책으로 아무런 지원을 받지 않고 쓴 리뷰임.
이 책을 고르려는 어떤 한사람에게라도 도움이 되면 좋겠음 (어이가 마실나가서 쓴 리뷰임)
본 리뷰는 철저히 주관적이므로, 다르게 생각하신다면 본인 생각이 맞습니다.
먼저 책을 읽고 느낀 점은
- 아무도 알려주지 않은 내용은 하나도 없음
- 내용에 깊이 없음
- 대상독자는???
- 주제들에 대해 사례가 몇가지 없고, 사례들도 아무도 알려주지 않는 것이 아니라 초보자부터 계속 겪으면서 프로그래머라면 머리에 각인이 될 만한 내용들이 대부분
- 도대체 코드 나열하는데, 화면 캡쳐는 왜 하는 것인지, 또 캡쳐한 내용이 칼라도 아닌데 그림조차 크지도 않음. 독자에 대한 배려는???
- 그림에서 이런 내용을 아무도 안 알려준다고... 6개월간 구글링해도 안나온다고 하는데... 정말인지 의심스러움
(그런 경험을 왜 나는 못했을까...ㅠㅠ 대부분의 궁금증은 잘 질문하면 되고 정 안되면 stack overflow에 질문하면 다 알려줄텐데... ㅠㅠ)
- 도대체 왜 이 내용없는 책이 3만원이나 하는 지도 이해 안 됨
이렇게 어이없는 책을 산 경위:
- 일단 책 제목에 낚임.
저자의 경력을 보면, 20년 이상 C++ 개발을 하신 것으로 나오고, 온라인에서 책의 내용을 제대로 파악하기 힘들기 때문에 일단 믿고 샀음
리뷰를 쓰는 나도 25년정도 C/C++로 개발을 하며 밥 먹고 살아오고 있음. 하지만 능력자들의 스킬을 좀 더 배워보고 싶은 마음에 혹시 하는 마음에 사 봤음
주저리 주저리 나열을 좀 해보자
보통 컴퓨터 책이 내용의 깊이가 깊지 않더라도, 초보자에게 맞게 특정 주제에 맞춰 친절한 설명과 다양한 예시, 여러가지 상황에 대한 설명들이 있으면, 설령 나에게 큰 도움이 되지 않더라도 좋은 책이라고 주변에 추천해줄 수 있다.
그런데, 이도 저도 없이 내용이 제목과도 동떨어져 있고, 책 내용도 억지 주장하듯이 독자들에게 이건 엄청 중요하고 아무도 안 가르쳐주는 내용이니까 꼭 알아야해 라는 식의 설명을 이끌어가는 책도 있다. 본 도서가 이 부류에 들어간다고 생각된다.
그래서 뭐가 그런데 라고 생각할 수 있는데... 몇가지만 좀 예를 들어보자
1. 첫번째 챕터부터 코딩의 중요성에 대해 나열을 시작한다... 그런데 사실 전체적으로 읽고나면, 코딩의 어떤 게 중요하다는 거지? C 또는 C++ 입문서를 벗어나는 내용이 뭘까? 라는 생각이 (거기다 돈 아깝다는 생각가지...) 막 든다
2. 설명을 하려면 제대로 좀 깊게 친절하게 해 주면되는 데, -fPIC 옵션에 대해서 말을 꺼낸다. 약어가 뭔지, 이게 어떤 원리로 컴파일이 되는지(아무도 안 알려주는 내용이라면 이런거 좀 있어야 하는 거 아닌가?) 그런 내용 없이, 그냥 동적라이브러리를 빠르게 억세스하는 거라 필수란다. 그냥 쓰란다.
3. 위 2번과 연계해서 코딩의 기술이라는데 cross platform 다 설명을 하면서 정작 뒤에는 주로 Windows 내용만 나온다. 뭐 저자 주 개발환경이 Windows 플랫폼인지 모르겠는데... 굳이 코딩의 기술이라 칭한다면 platform 의존성 없는 내용을 이야기하던가 하나의 platform에 대해서만 써도 되는데, 어디는 Windows, Linux, Mac 다 언급하고 어디는 Visual Studio 설정만 언급하고...
4. CMake 내용에 대해서 뭔가를 썼으면... 좀 깊은 내용을 언급해주면 좋겠는데, 아주 간단한 예제 언급하고(인터넷 어디서든 찾아볼 수 있는 튜토리얼 내용 정도), 그리고 끝이다. 책의 제목과 전혀 어울리지 않는다.
5. 정적라이브러리 내용이 open source를 언급하면서 외부 라이브러리 사용 시 힘이든다고 나와있다. 그런데 이것을 해결하기 위해, 언급한 내용을 해결하는 과정이 나오는 것이 아니라 그냥 hello world 내용으로 컴파일 예시만 나온다... 또 책 초반에 CMake 소개를 했으면 CMake로 해결하는 모습을 일관되게 사용해야 할 것 같은데 visual studio 예시만 보여준다...
6. 오픈소스 내용을 잠깐 언급하며 MacOS, Windows에서 컴파일하는 내용이 나온다... 갑자기 NMake 사용한 컴파일 예시가 나오고 build시 platform 설정때문에 겪는 에러가 1페이지 간단히 설명이 나온다... nasm, perl, cmake 이런 것이 잠깐 참조 출연해주는데 그 내용이 저자가 openssl을 주로 컴파일해서 그런지 저자가 아는 내용을 잠깐 보여주려고 한 것 같다. 그냥 원리는 없고 내가 이렇게 컴파일 방법만 써 놨으니 그냥 따라해... 느낌? 아니 도대체 아무도 안 알려주는 코딩의 기술은 어디간 건지..???
7. 얼척없는 naming 사용법이 나온다. 일일이 나열하기도... -- i,j,k 나 상수보다는 이름을 이용해서 내용을 명확히 하라는 건 그냥 언어 tutorial에도 나오는 너무 초보적인것인데, 엄청 대단한 것인양 기술해 놓은 것도 이해가 안 가고 그 외에도 몇가지 없다... 이건 아무도 안 가리쳐주는 코딩의 기술 이라고 쓰면 안 되지 않나요? 그리고 naming은 절대적이지 않아서, 함께 일하는 사람들과 맞춰서 쓰면 됩니다. Manager는 class 이름에 피하라고 되어있지만, Manager, Mgr 등의 내용도 프로젝트에서 오랫동안(10년이상?) 사용돼 왔다면 일관성을 맞추기 위해서 쓸 수도 있겠...
8. 아 지친다 이것까지만 쓰고 더 안 써야지... 무슨... 나열하는데도 스트레스 받는다. 와우 이제는 STL도 나온다. STL 사용시 어떤 주의사항이나 묘수 이런거 이야기하나 했지만... 기본 STL container 중 기초적인 것들 나열하는데... 그 사용법들도 여러가지 경우에 맞춰 나열하지도 않는다. 그냥 map이단 vector든 하나 골라서 원리 그리고 경우에 따라 이런것 저런것 사용하는 예제라도 경우에 맞춰 많이 나열했으면 그나마 나았을텐데... 도대체 어떤 기준으로 이렇게 쓰고 싶은 내용만 기술되어 있는지... 잘 모르겠... 예시도 modern C++은 안쓰고 C++11 이전의 방식으로 예제가 작성되어 있...(이거야 뭐 취향문제지만... 너무 성의가 없다는 느낌도 든다는..). 그리고... STL은 너무 많은 사람이 알려주는 것인데 왜 아무도 안 알려주는 책에 있는 지...
나열을 하다보니, 스트레스가 올라와서 그냥 요까지만...
아 아까운 내 돈... ㅠㅠ