Modern C++ Design

디클

·

2004. 12. 4. 03:38

사용자 삽입 이미지

 

제목: 제네릭 프로그래밍과 디자인 패턴을 적용한 Modern C++ Design
저자: Andrei Alexandrescu 
역자: 이기형 
출판사: 인포북

 

 

하드코어를 원하십니까?

 

바로 이 책이 C++계의 하드코어 격인 책이다.
C++의 특징을, 그중에 template 쪽의 테크닉을 극대화 시킨 책이다.

 

C++에 대해 어느정도 이해 하고 있어야 하고 특히 template 부분을 이해 할수 있어야 책을 볼수 있다.

 

기본적인 구성은 저자인 Andrei Alexandrescu가 제작한 Loki - Boost, STLport, ACE 등의 라이브러리의 스케일은 아니지만 나름대로 인정받고 사용될 수 있는 라이브러리 이다. - 라는 라이브러리를 가지고 그 철학과 구성, 사용방법에 대해 설명해 나가는 방식으로 진행한다.

 

이 책에서 얻을수 있는 것을 한마디로 표현 하자면 "단위전략 기반의 클래스 디자인" 이다.

 

"단위전략 기반의 클래스 디자인"이란..
해당 객체의 쓰레드동기화 전략, 알고리즘에 관한 전략등과 같이 객체의 핵심기능 혹은 일부분 기능을 담당한는 객체를 주객체에 template 인자로 전달하여 template의 이점인 컴파일 타임에 타입을 결정하여 타입안정성및 동적 바인딩의 오버헤드를 줄이고 업무 로직을 위임하여 객체의 융통성및 성능을 향상을 가져오는 방법이다. (헥헥헥~)

 

간단한 예를 들자면 해당 객체가 Single Thread모드에서와 Multi Thread 모드의 동기화 행동을 해당 객체가 처리하는것이 아니라 template 인자로 넘겨 각각에 맞는 동기화방법을 결정 할수 있도록 융통성을 준것이다.

이런 방법들과 디자인 패턴이 만나 가장 C++적인 골격이 나오는 코드를 만들어 내는것이다.


1장은 "단위전략 기반의 클래스 디자인"에 대한 필요성과 설명에 대해 나오고
2장부터  머리에 아주 번뜩이는 아이디어로 무장된 라이브러리를 하나하나 설명 하는 식으로 진행된다.

 

물론 번뜩이는 아이디어 라고 표현을 했지만 뒷부분에 가면 갈수록 사실 머리에 약간 쥐가 날 정도로 쳐다봐야 이해가 간다.
그리고 최신 컴파일러가 아닌 이상 컴파일도 제대로 해내지 못한다.

다행이 내가 이책을 봤을 당시는 이것들을 컴파일 할 수 있는 최신 컴파일러들이 존재 했었고 Output에 대해 무리없이 확인 할수 있었다.


2장: 기본적인 타입을 확인하고 검사할수 있는 유틸리티 객체에 대한 설명이다.
3장: Typelist라는 타입들의 리스트을 담을 수 있는 구조를 template 으로 구현 하는것에 대해 설명한다.
4장: 풀링이 되는 작은 메모리 할당기를 제작한다.
5장: Command 객체를 이용한 일반화(제네릭) 방법에 대해 설명한다.
6장: 수명을 관리 할수 있는 싱글톤 객체에 대해 설명한다.
7장: 여러가지를 제어 할수 있는 스마트 포인터에 대해 설명
8장: 객체의 생성에 대한 설명

등등 ..


Andrei Alexandrescu의 이러한 비슷한 시도는 boost와 같은 라이브러리에서도 간간히 선보이고 있다.


직접 실무에는 이용해 보지는 않았지만 실무에 사용 가능 되도록 설계되었으므로 언젠가 한번 이용해 봄직 하다.
친철하게 구닥다리 VC++ 6 의 컴파일러에서도 실행할수 있도록 VC++ 6 버전용도 다른 사람에 의해 포팅이 되어 있다.

 

이 책에서 template template parameter 란것도 처음 봤다. -_-


모든 것은 여기서 확인 하라 !!

http://www.moderncppdesign.com/

 


'책읽기' 카테고리의 다른 글

Exceptional C++ Style  (0) 2005.05.16
C++ Coding Standards: Rules, Guidelines, and Best Practices  (0) 2005.04.20
Modern C++ Design  (0) 2004.12.04
Effective C++  (0) 2004.12.02

0개의 댓글