이 책은 세 가지의 서로 다른 기술적 요소를 이야기하고 있습니다. 첫 번째로, C++에 있어서 템플릿의 능력과 유연성에 대한 새로운 통찰력을 제공해 줍니다(만일, Typelist의 내용이 여러분의 후두부에 강한 충격을 주지 못한다면, 자신의 감각이 마비된 것은 아닌지 의심해 보는 것이 좋을 것입니다). 두 번째로, 각 기법이나 패턴 구현 코드들이 제공하는 서로 다른 기능들에 대한 독립적 요소들을 확인시켜 줍니다. 이것은 템플릿 디자이너 혹은 패턴의 구현자들에게 있어서 매우 중요한 정보가 됩니다. 하지만 여러분은 다른 어떤 곳에서도 해당 기법과 패턴에 대한 이와 같은 방식의 분석을 찾아보기 힘들 것입니다. 세 번째로, Loki(이 책에서 설명하고 있는 템플릿 라이브러리)는 자유롭게 다운로드받을 수 있으며, 그것을 통해 그가 여기서 논의한 각 기법이나 패턴에 적용되는 템플릿 구현 코드들을 마음대로 연구할 수 있을 것입니다. 여러분의 컴파일러가 제공하는 템플릿 지원 기능에 대한 성능 평가 자료를 제공하는 것과는 별도로, 이 소스 코드는 여러분 자신의 디자인에 있어서 값을 매길 수 없는 소중한 시발점이 되어 줄 것입니다. 물론, 지금 바로 Andrei의 코드를 사용하는 것은 매우 바람직하고, 그리고 완전히 합법적인 일입니다. 제가 아는 바에 따르면, 그는 여러분 자신이 이룬 성과를 통해 많은 혜택을 누릴 수 있기를 바라고 있습니다.
제가 말할 수 있는 바에 따르면, 템플릿의 영역은 제가 저술을 포기했던 1995년 당시와 마찬가지로 매우 빠르게 변화하고 있습니다. 이것은 지속적으로 발전하고 있는 개념이며, 저는 여전히 이 템플릿에 대한 내용은 절대로 저술하지 않으려 합니다. 하지만 다행스럽게도, 몇몇 사람들이 저보다 더 용감한 생각을 가지고 있습니다. 그리고 Andrei는 그러한 선구자들 중 한 명입니다. 저는 여러분이 저와 마찬가지로 이 책을 통해 많은 것을 얻을 수 있을 것이라 확신합니다. - Scott Meyers
Andrei의 제네릭한 스타일의 컴포넌트는 C++가 마치 디자인을 명세하기 위한 언어처럼 느껴지게 만들 만큼 언어의 추상화 수준을 한 단계 격상시켜 주었습니다. 하지만, 디자인을 위한 언어와는 달리, 여러분은 C++의 모든 표현 구문과 그것이 주는 친숙한 문법도 그대로 누리실 수 있습니다. Andrei는 각 디자인 개념들(싱글톤, 비지터, 프록시, 추상 팩토리 등)을 수단으로 하여 프로그래밍 하는 방법을 잘 예시해 주고 있습니다. 게다가 여러분은 아무런 실행 시간의 오버헤드도 없이, 단지 템플릿 인자를 이용하여 구현 코드들의 트레이드 오프를 조율해 낼 수 있습니다. 그리고 여러분은 새로운 개발 도구를 만나 당황해 하거나, 마치 암호처럼 느껴지는 방법론적 문서들을 추가적으로 배워야 할 필요가 없습니다. 여러분에게 필요한 것은 오직 신뢰성 있는 최신의 C++ 컴파일러와 그리고 이 책뿐입니다.
코드 생성기들은 여러 해 동안 수동으로 작성된 코드에 손색없는 코드를 만들어 내리라는 약속을 해 왔습니다. 하지만, 저의 연구 결과와 실전에서의 경험에 의하면, 저는 결국 코드의 자동 생성이란 것이 수동 코드에 비견될 만한 코드를 만들어 낼 수는 없다는 확신을 가지게 되었습니다. 여러분은 코드 생성기를 통해 다양한 문제들을 접할 수 있습니다. 중복 코드의 문제, 코드 자동 생성기를 이용할 만한 가치가 없는 경우의 문제, 유연성이 부족한 생성기의 문제, 도저히 분석할 수 없는 생성 코드의 문제 등이 있을 수 있으며, 또한 자동 생성 코드와 자신의 코드를 집합시킬 수 없다는 것도 중요한 걸림돌이 됩니다. 이 중 어떤 문제라도 중요한 문제로 부각될 가능성이 있습니다. 게다가 이 문제들이 함께 조합되어 나타나게 될 경우, 대부분의 프로그래밍 과제에 있어서 코드 자동 생성기를 이용한다는 것은 바람직하지 못한 해법이 될 수도 있습니다.
만일 우리가 이러한 결점들을 피해서 코드 자동 생성의 이론적 이점 - 빠르고 쉬운 개발, 잉여 코드의 감소, 더 적은 오류 - 을 실현할 수 있다면 얼마나 멋진 일이 될 수 있을까요? 이것이 바로 Andrei의 접근법이 약속해 주는 내용입니다. 제네릭 컴포넌트는 사용하기 쉽고, 서로 조합하여 혼용이 가능한 템플릿을 이용하여 훌륭한 디자인을 구현해 냅니다. 이들은 코드 생성기들이 하는 일과 유사한 일을 해낼 수 있습니다. 즉 컴파일러가 소화해야 마땅한 판박이 코드들을 생성해 줍니다. 그러나 그들의 차이점을 말하자면, 제네릭 컴포넌트는 C++와 별개의 수단을 통하지 않고, 바로 C++ 자체를 통하여 그러한 코드를 생성해 준다는 것입니다. 이러한 결과는 애플리케이션 코드를 멋지게 집대성시켜 줄 수 있습니다. 여러분은 또한 이를 확장하거나, 오버라이드하거나, 아니면 자신의 요구에 맞도록 디자인을 변경시키기 위하여 언어 자체의 모든 기능을 이용할 수 있는 것입니다.
여기에 소개된 몇몇 테크닉들, 특히 3장의 템플릿 메타프로그래밍(역자주 : 이 코드들은 실제 바이너리 코드를 생성하지 않고, 다른 코드를 기계적으로 생성해 내는 논리적 구조를 형성하게 되므로 이러한 명칭을 사용하였다)은 너무나 교묘해서 충분히 이해하는 데 약간의 노력이 필요할 수도 있습니다. 하지만, 일단 이것을 완전히 익히고 나면, 여러분은 제네릭 컴포넌트라는 건물의 그야말로 견고한 기초를 가지게 될 것입니다. 사실, 저는 3장의 메타프로그래밍에 대한 내용만으로도 이 책 한 권의 값은 톡톡히 하고도 남는다고 주장하고 싶습니다. 그리고 새로운 통찰력을 소개하는 내용으로 가득 찬 10개의 장이 더 마련되어 있습니다. "10"이라는 숫자는 꽤나 커다란 숫자입니다. 하지만, 여러분의 작은 투자로 얻게 되는 내용은 그 숫자가 표현하는 것보다 훨씬 더 큰 가치가 있으리라 확신합니다. - John Vlissides
서문
이 책의 주제에 맞게 간결함과 빈틈 없는 C++ 도서 ★★★★★
이 책의 진보적인 템플릿 개념에 대해서는 정말 놀라울 정도이다. 그리고 이 책의 간결함과 빈틈없는 설명 또한 놀라울 정도이다. 여러분들은 작가의 의도를 알기 위해 이 책을 4~5번 정도는 읽어야 하지만, 모든 것이 이 책 안에 있다. 이 책은 진보적인 C++ 프로그래머들이 꼭 읽어야 할 책이다. 왜냐하면, 여러분은 템플릿의 파워에 새로운 시각을 얻게 될 것이다. 정말 놀라운 책이다~!
C++ 프로그래머에게 정말로 추천해 주고 싶다!! ★★★★★
이 책은 C++에서 라이브러리 개발에 관한 새로운 기준을 성립시켰다 해도 과언이 아니다. Modern C++은 제네릭 프로그래밍(generic programming)이나 디자인 패턴(design pattern), 그리고 real world와 같은 이론적인 요소로부터의 빈 공간을 채우고 있다. 이 책은 Design Patterns에 관해서 다소 어렵게 다루고 있지만, 이전의 design pattern에 관한 것들이 도움이 된다고 할지라도, 여러분들은 GoF의 책을 처음에 볼 필요가 없다. 이 책을 시스템 또는 라이브러리 디자이너가 되기를 원하는 모든 C++ 프로그래머에게 추천하고 싶다.
더 이상 C++ 템플릿에 논하지 말자!! ★★★★★
여러분들이 Windows, Unix, Linux 또는 RTOS 중 어떤 것을 쓰던지 간에, C/C++ 개발자들에게 이 책을 강력히 추천한다. 제목은 비록 모던 C++ 디자인이라고 지어졌지만, 실제적으로는 소프트웨어 디자인의 중요성을 강조하고 있고, 어떻게 design pattern이 소프트웨어 프로젝트의 질에 영향을 미치는지를 설명하고, 증명하고 있다.
꼭 읽어야 하는 C++ 도서~! ★★★★★
모든 C++ 프로그래머들은 이 놀라운 책을 꼭 보아야 한다. 나는 이 책이 generic programming과 내가 어떤 곳에서도 찾을 수 없었던 테크닉들에 관해서 여러분들이 더욱 이해하기 쉽게 도와줄 것이기 때문에 이 책을 강력히 추천한다. 이 책은 정말 별 다섯 개를 받을 가치가 충분히 있다.
템플릿은 오직 컨테이너만을 위한 것인가? ★★★★★
이 책은 템플릿에 관한 나의 관점을 바꿔주었다. 나는 오직 컨테이너만을 위해서 써야 한다고 생각했었다. 이 책은 여러분들이 템플릿을 이용해서 소프트웨어를 제작할 수 있는 진보적인 템플릿 테크닉에 대해서 설명해준다. 여러분들이 템플릿을 사용하지 않아도, 이것은 C++ 컴플라이어가 세상을 바라보는 방법을 이해할 수 있게 도와주기 때문에 이 책을 꼭 읽어야 하는 책이라고 추천하고 싶다.
C++ 프로그래머에게 꼭 필요한 책~!★★★★★
Alxanderescu의 책은 C++에 도전하기 위해서는 필수적인 책입니다.
이 책은 대부분 템플릿에 관해서 소개하고 있습니다. 대부분의 modern C++은 템플릿과 관계있다는 주장에 의해서 이 타이틀은 정당화될 수 있습니다. 이런 식으로, 이 책은 Scott Meyers의 STL에 관한 책을 추종하는 훌륭한 책입니다. Stan Lippman이 말했듯이, 이 책은 Visual C++ 아키텍쳐 팀이 좀더 나은 템플릿을 지지하기 위해, 그리고 Loki, Boost와 같이 이 책을 사용해서 작업한 라이브러리를 보증하는 최고의 책 중 하나이다.
아마존 서평