The Modernest C++ #0 - 시작하며
안녕하세요! 이번에 게임 개발 포에버에서 연재를 하게 된 게임 그래픽스 프로그래머를 꿈꾸는 지망생 터너라고 합니다. 비록.. 필드 경험은 없지만 5년 동안 달려온(..) 결과로 얻은 프로그래밍 노하우와 지식들을 한번 공유해보자 하여 이렇게나마 연재를 하게되었..는데 그릇이 워낙에 작아서 도움이 되실법한 글을 작성할수 있을런지는 모르겠지만 잘 봐주셨으면 좋겠습니다. :^)
연재할 내용은 Modern C++ Style 위주로 작성 될것 같고 보시는 내내 도움 되셨으면 좋겠습니다. 앞으로 연재할 내용의 오탈자나 이상한 부분은 댓글로 직접 문의하셔도 좋고 제 블로그(http://cloudcie.blog.me/)에서 문의해주셨으면 하는 바램입니다.
시작하며..
C++은 (물론 다른 언어도 그렇지만) 템플릿이라는 강력한 무기를 가지고 있습니다. 우리는 이 템플릿과 포인터를 이용하여 엄청난 기능들을 구현할수 있고 또 프로그래머로 하여금 실수를 줄일수 있는 기능을 만들수 있다는 점에 주목해야 합니다. run-time에 처리할 연산을 compile-time에 처리하여 실행시간을 최소화 시키는데 도움을 주는 템플릿 메타프로그래밍이나, 그를 이용하여 프로그래머는 컴파일 타임에 분기점을 두는 정적 다형성과 같은 유용한 기능들을 구현하고 이용할 수 있습니다.
또한 이런 컴파일 타임의 처리에 중점을 두는 방식이 오래전부터 Modern C++ 스타일로 자리를 잡아가고 있으며 실제로 C++11 에서는 type_traits와 같은 템플릿 메타프로그래밍 라이브러리를 표준으로 채택하기에 이르렀습니다. 제 개인적인 견해로는 꼭 Modern C++ 스타일을 따를 필요는 없지만 좀더 도움을 줄수 있는 형식에 기반을 맞추는것이 도움이 많이 되지 않을까 싶기도 합니다. 이러한 방법은 런타임 연산 시간에 안좋은 영향을 미치는 경우는 거의 없을 것이기도 하니까 말이죠.
제 연재글에서는 기초적으로 boost 라이브러리의 내부 템플릿 메타프로그래밍 라이브러리인 mpl의 if_ 나, is_scalar 와 같은 메타 함수들을 직접 구현해보기도 하면서 템플릿 메타프로그래밍에 대한 기초적인 지식을 좀 더 익혀보고, 의문을 풀어보면서 연재글의 제목처럼 Modern C++ 을 애용하게 되는 길을 한 발자국씩 걸어가는 길을 걷게 될것입니다.
(※ 저도 이 연재 글을 작성하면서 틀린 점이 많을수 있다는 것을 상당히 확신하고(?) 있기 때문에 독자 여러분들도 제 글을 읽어보시면서 저와 함께 토론도 하면서 알아가는 장을 마련해나갈수 있었으면 좋겠습니다 :D)