본문 바로가기
【👨‍💻 Programming 】/C++

[Book] 제네릭 프로그래밍과 디자인 패턴을 적용한 Modern C++ Design

반응형

* 출처: 강컴 문정환님의 글
* 정오표

8054-517-ox.hwp
다운로드

먼저 이 서평은 원서를 바탕으로 작성되었음을 알려드립니다.

그러나 거의 1년이라는 번역기간에 부응하듯, 번역서의 미리보기 PDF를 살펴보시면 이 시대 최고의 번역서 중 하나라고 말할 수 있을 거 같습니다. 유치하게 오타 이런 것의 문제가 아닙니다.

Alexandrescu의 생각과, 우리에게 전하고 싶었던 진정한 의미를 정말로 우리의 눈앞에 펼쳐보이고 있습니다. 실제로 1장을 보면 다중상속이 왜 해결책이 될 수가 없는지에 대해서 지금까지의 그 어떠한 책보다도 깊이 있고 명쾌하게 설명하며, 이 단점을 보완하기 위해 사용한 템플릿이 어떠한 장점과 단점을 가지고 있는지 설명합니다. 그리고 이 둘을 병합함으로써 최상의 도구가 될 수 있고, 그것을 2장부터 실제로 눈앞에 보여주기 시작합니다.

이 책을 구입하지 않더라도, 미리보기 PDF만으로도 지금 자신의 실력 여하에 따라 엄청난 컨셉의 전환을 가져올 수 도 있습니다. 하지만 이 책은 결코 누구나 볼 수 있는 책은 아닙니다. 그러니 반드시 먼저 PDF를 보시고 구입하시기 바랍니다.

PDF를 보셨다면 다음과 같은 느낌을 받으실 수 있습니다.
1. Alexandrescu.. 논리의 세계를 이런 식으로 펼쳐나가고.. 이런 식으로 접근해 가는구나.. 하며 직접 저자와 대화를 할 수 있는 사람.
2. 이거 C++언어로만 내용을 기술하고 있다고 했는데.. 너무 생소하고 어렵다.

전자의 경우는 Policy class, code generation, design pattern, type list, template meta programming등 다양한 개념들이 하나로 합쳐지는 광경을 눈 앞에 보면서 마음껏 즐기시면 됩니다. 정말로 어떻게 이렇게 논리정연하게 자신의 생각을 글로 적을수 있는지.. 감동적입니다. 그리고 이 책에 단점이란 존재하지 않는다라는 느낌도 곧 느끼실 수 있습니다.

그러나 후자의 경우는, 선택할 수 있는 두 가지의 길이 존재합니다.

첫째는, Application Programmer역할로서 이 책을 받아드리는 방법입니다. 마치, STL을 만들어보는 방법을 배우는 것이 아닌, 쓰는 방법에만 열중하는 것입니다. 즉, 이 책의 모든 면을 보는 것이 아닌 Loki 라이브러리를 사용하는 방법에만 집중하시면 됩니다. 이럴 경우에는 이 책의 각 장 마지막에 존재하는 Quick Facts이 많은 도움이 될 수 있습니다. 그리고 Loki라이브러리 자체에서도 Sample이 같이 포함되어 있기 때문에 직접 디버깅하시면서 어떻게 돌아가는지 몸으로 파악하실 수 있습니다.

Visual Studio VC++.Net 2003에서는 완벽한 호환성을 보여주며, Visual Studio VC++.Net 2002에서는 Rani Sharoni라는 분께서 포팅을 하셨기 때문에 사용에 문제가 없습니다. 하지만 Visual Studio VC++ 6.0에서는 문제가 발생합니다.

둘째는, 이 책이 기본이 되는 문법 지식과, 도움이 되는 책들을 먼저 읽어보는 것입니다.
이 책을 무리 없이 소화하기 위해서는 다음에 열거하는 개념들에 대해서 기본적으로 능숙하셔야 합니다.
* Function Template
-> Argument Deduction
-> Overloading Function Template
-> Nontype Function Template Parameter

* Class Template
-> Specialization of Class Template
-> Partial Specialization
-> Default Template Argument
-> Nontype Class Template Parameter

* Keyword typename
* The .template Construct
-> [Standard98 : 14.2장 - Names of template specializations 참조]
* Template Template Parameter
* Virtual Member Function과 Template의 연동시의 문제점.
* Friend Template
* Class Template와 Template Class와의 의미상의 차이점.

이와 같은 개념들에 대해서는
C++ Templates : The Complete Guide
에서 모두 얻으실 수 있으며, 이 책을 읽는데 가장 큰 도움을 드릴 수 있을 것 입니다.

이와 더불어 4장. Small-Object Allocation에 대해서는
EFFICIENT C++ : Performance Programming Techniques – Chapter 6,7
가 새로운 방향 또한 제시해 줄 것입니다.

그리고 5장. Generalized Functors에 대해서는
THE C++ STANDARD LIBRARY A TUTORIAL AND REFERENCE – Chapter 8
C++ Templates : The Complete Guide – Chapter 22.
들이 Functor의 개념과 활용방안에 대해서 보다 많은 예제를 제시해 줍니다.

그리고 6장, 8장, 9장, 11장에서 다루는 디자인 패턴과 관련된 이야기들은
Design Patterns -Elements of Reusable Object-Oriented Software
Pattern Hatching -Design Patterns Applied
에서 보다 다양한 패턴과 실용적인 접근법을 익히실 수 있습니다.

어떻게 글을 쓰다 보니 서평보다는 이 책을 읽는 가이드 라인이 되어 버린 느낌도 지울 수 없지만, 이 책을 보다 많은 분들이 읽어, 보다 높은 수준이 되었으면 하는 소망이 간절합니다.

PS>
이 책의 앞부분은 말도 난해하고, 약간은 많이 어려우실 수도 있습니다. 그러나 뒤로 갈수록 그 난이도는 줄어들게 됩니다. 조급하게 생각하지 마시고 천천히 여유를 가지고 읽어보시기 바랍니다.

결코.. 저의 매우 주관적인 견해지만 빠르게 보시면 얻는것도 그만큼 적어지는 책입니다. 많이 생각하시면서 읽으시면 그 많큼 많은것을 얻어 가실 수 있습니다.

반응형