1997년 11월 어느 날, C++ 관련 뉴스그룹에는 C++ 언어의 창시자인 Bjarne Stroustup의 글이 하나 포스트되었다.
Friday, Nov 14, the ISO C++ Standards committee unanimously approved a 'final draft international standard' (FDIS) for C++. This means that all technical work on the C++ standard has been completed.
Personally, I'm very pleased with the new standard.
- Bjarne
참 기나긴 시간이었다. 장장 8년여에 걸친 C++ 표준화 작업이 마침내 결실을 보게 된 것이다. 1980년대 초반에 C++이라는 이름을 달고 이 세상에 태어나 8년 간의 성형 끝에 드러낸 모습에는 많은 변화가 있었지만, 그 중에서도 가장 눈에 띄는 것은 역시 C++ 표준 라이브러리(C++ Standard Library)였다. 특히, 우리가 STL(Standard Template Library)이라고 부르는 부분은 이 표준 라이브러리의 가장 핵심적인 부분으로, C++ 프로그래밍의 패턴을 바꿀 정도로 설계 사상 측면에서 매우 신선한 라이브러리이다. 그만큼 STL은 단순히 표준화된 클래스 라이브러리가 아니라 모든 것이 템플릿으로 구성된 템플릿 라이브러리이며, 기존 C++의 추상화(abstraction) 수준을 한 차원 높였다는 측면에서 평가받을 수 있는 라이브러리이다.
컴퓨팅 산업뿐만 아니라, 프로그래밍 언어사에 있어서 인터넷이 끼치고 있는 영향력에 관해서 새삼 언급할 필요는 없겠으나, C++이 인터넷에서 그 강력함을 인정받고 있는 여타 언어들에 비해 관심과 열의가 다소 떨어진다는 점은 인정하고라도, 여전히 C++은 간단한 데스크탑 애플리케이션에서부터 시스템 프로그래밍, 실시간 프로그래밍 및 대규모 트랜잭션을 소화하는 서버급 애플리케이션에 이르기까지 세계 수백만 프로그래머의 모국어로서 이 지구상에 존재하는 거의 모든 기종의 컴퓨터에서 사용되고 있는 언어이다. 1985년에 처음 C++ 상용 버전이 출시된 이래로, 어언 15년동안 나름대로의 역할을 인정받아온 C++이 이제 STL이라는 날개를 달고 새로운 모습으로 나타났지만, 아직 그 날개를 활용하지 못하고 있는 프로그래머들이 많다. 언제까지 동적 배열, 선형 리스트, 이진 트리를 구현하기 위해서 데이터 구조 책을 뒤져가며 시간을 허비할 것인가? 언제까지 메모리 누수(memory leak)를 찾기 위해 디버거와 씨름하며 밤을 지새울 것인가? 이제는 원하는 컨테이너와 알고리듬을 STL에서 골라 쓰기만 하면 된다. 그리고, 남는 시간은 가족과 애인, 그리고 자신에게 할애하자. 하지만, 공짜란 없다. 우선 STL의 사상과 개념을 제대로 이해해야만 한다. 이제 단순히 C++ 언어의 확장 라이브러리로서가 아니라 C++ 언어의 핵심 부분으로서 STL을 받아들이고 준비해야 한다. 그리고, 그 과정에서 이 책은 큰 도움이 되어 줄 것이다.
알렉산더 스테파노프(Alexander Stepanov)가 서문을 쓰고, 데이빗 뮤서(David Musser)가 first author로 참여했다는 이유만으로도 충분히 주목할만한 가치가 있는 이 책은 1996년에 처음 초판이 출간되었고, C++ 표준이 확정된 뒤 변경 사항을 반영하여 2001년에서야 제2판이 발간되었다. 표준이 확정된 지 어느덧 3년 넘게 세월이 흘렀으나, 아직까지 STL을 쉽고 자세히 다룬 책을 고르기란 쉽지 않다. 이 책에는 STL의 창시자가 직접 설명하는 STL의 설계 사상에 관한 내용과 프로그래밍시 참고할 수 있도록 친절한 설명이 곁들여진 100여개가 넘는 예제, 그리고 레퍼런스 가이드가 수록되어 있어, 학습서로서 뿐만 아니라, 컴퓨터 가까이 두고 필요할 때마다 찾아볼 수 있는 레퍼런스로서도 활용이 가능하다.
철학자는 언어를 통해 세상을 사유하지만, 프로그래머는 프로그래밍 언어를 통해 컴퓨터를 사유한다. 아무쪼록 이 책을 통해 C++ STL이 프로그래머 여러분에게 선사할 사고의 자유로움을 한껏 만끽할 수 있기를 바란다.
--- 역자의 말