I   회사소개  I  사이트맵  I  도움말
인기검색어
  ID저장
 
회원가입 I 아이디/비밀번호찾기
ㆍOS / 하드웨어 / 서버군
ㆍOA / 오피스 / 전자출판
ㆍ아이폰 / 안드로이드
ㆍ디지털 포토그래피
ㆍ그래픽 / 홈페이지
ㆍ인터넷 프로그래밍
ㆍ일반프로그래밍
ㆍ게임프로그래밍
ㆍSNS / E-Business
ㆍ데이터베이스
ㆍ기 타
ㆍ길라잡이
ㆍ실력이 탐나는
ㆍ회사 실무에 힘을 주는
ㆍ예제가 가득한
ㆍ그림 한 장으로 보는
ㆍ디지털 포토그라피
ㆍ그래픽/홈페이지
페이스북 블로그 네이버포스트
관련분류 : 일반 프로그래밍 / C/C++/STL
C++ Template Metaprogramming : Boost로부터 배우는 개념, 도구, 기법 - 절판
크게보기 l 차례보기
ㆍ저 자 David Abrahams , Aleksey Gurtovoy
ㆍ역 자 류광
ㆍ구 분 번역서
ㆍ발행일 2005년 06월 25일
ㆍ정 가 20,000원
ㆍ페이지 406 페이지
ㆍISBN 89-5674-267-7
ㆍ난이도 중급.상급
ㆍ출판사 정보문화사
이 책은 오늘날 C++의 가장 강력한 관용구들을 조명한다. 현업 프로그래머들이 오랫동안 기다려온, 실용적인 메타프로그래밍 수단과 기법을 알려주는 책이다.

메타프로그램은 프로그램 코드를 생성하거나 조작하는 프로그램을 말한다. 일반적 프로그래밍에 C++에 도입된 후, 프로그래머들은 컴파일 도중에 프로그램을 조작하기 위한, 본질적으로는 프로그램과 메타프로그램 사이의 장벽을 없애는 다양한 "템플릿 트릭"들을 발견했다. 그러한 능력에 대한 C++ 전문가들의 흥분이 공동체의 관심을 끌긴 했지만, 대부분의 프로그래머들에게 그런 기법의 실질적인 적용은 여전히 먼 나라의 일이었다. 이 책은 메타프로그래밍이 무엇이며 어떤 곳에 사용할 때 가장 빛을 발하는지에 대해 이야기하며, 템플릿 메타프로그래밍을 독자의 실제 업무에 효과적으로 사용하려 할 때 필요한 토대를 제공한다.

이 책은 표준 템플릿 라이브러리(STL)의 관용구들에 익숙한 모든 프로그래머들을 대상으로 한다. 숙련된 C++ 프로그래머라면, 자신의 기존 작업에 대한 새로운 통찰을 얻고 메타프로그래밍 영역에서 새로운 어법과 표현법을 배우게 될 것이다. 고급 템플릿 기법 몇 가지를 익히고 있는 중간 수준의 프로그래머라면 C++ 프로그래밍의 전체적인 상에서 메타프로그래밍 기법이 어디에 어떻게 위치하는지 알게 될 것이며, 그런 기법을 체계적으로 사용하기 위한 개념적인 토대도 얻게 될 것이다. 메타프로그래밍이라는 말을 들어보기는 했지만 여전히 신비스럽게 느끼는 프로그래머라면 메타프로그래밍을 언제, 어떻게, 왜 사용해야 하는지를 명확히 이해하게 될 것이다. 그리고, 모든 독자는 미증유의 위력을 가진 도구, 즉 Boost Meta Programming 라이브러리를 자유자재로 사용할 수 있는 능력을 가지게 될 것이다.

나 역시 그랬지만, 다른 사람의 템플릿 메타프로그래밍(TMP)을 보고 매료되어서 배워보려고 했으나 마땅한 책이나 강력한 도구가 없어서 실망한 경험을 가진 독자도 있을 것이다. 그런 모든 사람들이 기다렸던 책이 바로 이 책이다. 저자 David와 Alesky는 TMP가 이론적인 유희가 아닌 실제 업무의 강력한 수단임을 보여준다. 훌륭한 Boost Metaprogramming 라이브러리를 도구로 해서 읽기 쉬운 문장과 실제적인 예제들을 제공하는 이 책을 통해, "컴파일 시점 STL"이 실행시점 STL만큼이나 유능하다는 사실을 알 수 있게 될 것이다. 훌륭한 튜토리얼이자, 전문가에게는 간편한 핸드북으로도 쓰일 수 있는 이 책이야말로 바로 우리가 기다려온 C++ 템플릿 메타프로그래밍 책이다.
― Chuck Allison, The C++ Source 편집자

◆ 부록 CD에는 모든 Boost Metaprogramming 라이브러리를 비롯한 모든 Boost C++ 라이브러리들과 그 참고 문서, 그리고 책의 예제 코드와 다양한 보조 자료가 수록되어 있다.



[저자 소개]
David Abrahams는 Boost C++ 라이브러리 개발 그룹의 창립 멤버이자 중재자이다. Dave는 1996년부터 ANSI/ISO C++ 위원회의 일원으로 활동하고 있으며, C++ 라이브러리의 예외 처리에 대한 이론, 명세, 구현에 기여한 것으로 가장 잘 알려져 있다. 그의 회사 Boost Consulting은 Boost 관련 지원과 개발 서비스, 그리고 소프트웨어 구축 분야의 전문가 교육 서비스를 제공한다.

Aleksey Gurtovoy는 MetaCommunication의 기술 선임이자, Boost C++ 공동체에 기여하는 일원이다. Aleksey는 또한 Boost Metaprogramming 라이브러리의 원 작성자이기도 하다. 1993년부터 C++을 사용해 온 그는, Krasnoyarsk Technical State University, Russia에서 전산학 석사 학위를 받았다.
 
템플릿 메타프로그래밍은 C++의 응용 방법 중 비교적 최근에 발견된 것인만큼, 많은 C++ 프로그래머들에게 아직도 생소한 분야라고 할 수 있겠습니다. 저는 [Game Programming Gems] 1권의 "템플릿 메타프로그래밍을 이용한 빠른 수학 연산"을 번역하면서 템플릿 메타프로그래밍에 관심을 가지게 되었습니다. 이후 조금씩 공부를 해나가다, Alexandrescu의 [Modern C++ Design]을 읽으면서 오히려 겁을 먹었습니다. 템플릿 메타프로그래밍이 멋지긴 하지만 보통 사람은 접근할 수 없는 신비의 영역이 아닐까하는 생각이 들었던 것입니다.

그런 상황에서 조금은 벗어나게 된 계기는, LuaBind 라는 한 Lua-C/C++ 바인딩 라이브러리의 다음과 같은 멋진 구문을 접하게 된 것이었습니다.

module(L)
[
def("f", &f),
def("g", &g),
class_("A")
.def(construcor),
def("h", &h)
];

함수 f, g, h와 int 두 개를 받는 생성자를 가진 클래스 A를 루아에 등록하는 C++ 코드를 이렇게 간단하고 간결하게 작성할 수 있게 만드는 것이 바로 템플릿 메타프로그래밍이라면, 어렵더라도 배워볼 만한 것이 아닐까하는 생각을 가지게 되었습니다.

C++ 템플릿 자체에 대한 책이나 인터넷에 있는 몇 가지 자료만으로는 성이 차지 않았던 차에, C++ 템플릿 메타프로그래밍의 표준적인 수단이라고 할 수 있는 Boost MPL의 핵심 개발자들이 공을 들여 쓴 이 책을 번역하게 된 것은 제게 행운이 아닐 수 없습니다. 항상 그렇듯이 좀 더 시간을 들여서 번역을 할 수 있었다면 좋았을 거라는 후회는 남아 있지만, 그래도 단순히 문장을 옮기는 사람이 아니라 실제로 이 책을 가지고 공부를 하는 사람의 입장에서 번역을 할 수 있어서 다행이라고 생각합니다.

Modern C++만큼은 아니지만, 분야가 분야인만큼 이 책은 좀 어려운 편입니다(물론 부족한 번역 탓도 있겠습니다). 앞에서 LuaBind를 언급했는데, 독자 여러분도 그와 비슷한 계기나 목표를 가진다면 중간에 포기하지 않고 계속 나아갈 수 있을 것입니다. LuaBind 예제에 감명을 못했다고 해도 걱정할 필요는 없을 것입니다. 1장에서 3장까지에 흥미로운 예제들이 많이 있으니까요. 혹시 그 예제들에서도 뭔가 감을 받지 못했다면 11장을 먼저 읽어보시길 권합니다. FSM이라면 당연히 자료 주도적(data-driven) 접근이 정석이라고 생각하거나 교묘한 매크로에 의존했던 분들에게는 어느 정도 충격적이기까지 할 것입니다.

그리고 책의 상당 부분이 MPL을 이야기하는데, MPL을 이해하는 데에는 STL에 대한 좋은 책을 한 권 읽어보는 것도 도움이 될 것입니다. 개별 컨테이너, 알고리즘의 활용법만 다루는 책보다는 개념, 모형, 정련, 순차열, 요구사항, 전제조건 등 STL이 근거하는 개념적인 프레임웍도 충실하게 설명하는 책이 좋을 것입니다. MPL은 그러한 STL의 프레임웍을 많이 반영하고 있기 때문입니다. 그런 STL 책으로는 Matthew H. Austern의 [Generic Programming and the STL]이 있습니다. 번역서도 곧 나올 것입니다.

물론, C++ 템플릿 자체에 대한 어느 정도 자세한 지식은 반드시 가지고 있어야 합니다. 그 부분에 대해서는 Bjarne Stroustrup의 [The C++ Programming Language]와 함께 Vandevoorde 및 Josuttis의 [C++ Templates]라는 책을 꼽는 분들이 많을 것입니다. 두 권 모두 번역서를 구할 수 있을 것입니다.

참고로, 이 책은 원서의 2004년 12월 제2쇄를 기준으로 번역했으며 2005년 5월 2일자 원서 정오표 를 반영했습니다. 항상 그렇듯이 제 홈페이지 occam's Razor 에 이 책에 대한 추가적인 정오표와 새로 갱신된 내용을 담은 페이지를 마련해 두겠습니다. 오류 보고나 책에 대한 의견도 환영합니다.
 
모든 Boost Metaprogramming 라이브러리를 비롯한 모든 Boost C++ 라이브러리들과 그 참고 문서, 그리고 책의 예제 코드와 다양한 보조 자료가 수록되어 있다.
 
"Infobook-C++ in Depth" 관련도서는 총 11권 입니다.
- Accelerated C++ : 예제로 배우는 진짜배기 C++ 프로그래밍
- Essential(에센셜) C++
- C++ Template Metaprogramming : Boost로부터 배우는 개념, 도구, 기법
- C++ 코딩의 정석 : 101가지 규칙, 가이드라인, 좋은 습관들
- Exceptional C++ Style : 40개의 새로운 프로그래밍 퍼즐과 문제 그리고 그 해답
- C++ Network Programming Volume 2 : ACE와 프레임워크를 이용한 체계적인 재사용 기법
- Applied C++ : 향상된 소프트웨어를 개발하기 위한 실용적인 기술
- 제네릭 프로그래밍과 디자인 패턴을 적용한 Modern C++ Design
- Exceptional C++ : C++ 프로그래머를 자극하는 47개의 재미있는 퍼즐 문제
- C++ Network Programming Volume 1 : ACE와 패턴을 사용한 객체지향 네트워크 프로그래밍
- Essential(에센셜) C++
 
                                  
회사소개      개인정보취급방침      고객센터     사이트맵      도움말