공식 사이트
1. 개요
C++ 기반의 템플릿 라이브러리 집합.[1]2. 특징
오픈소스로 MIT 라이선스와 비슷한 독자적인 라이선스를 따른다.또한 자유 소프트웨어이기 때문에 몇 가지 준수 사항만 지키면 상업적 목적의 사용을 포함하여 자유롭게 가능하다.
UNIX 및 Windows 등을 포함하여 거의 모든 최신 운영체제에서 동작하며, 헤더 파일[2]로만 이루어진 라이브러리도 존재한다.[3] 다만, 라이브러리 간 의존성이 높기 때문에 별도로 분리해서 사용하기는 어렵다.
3. 여담
부스트 개발진 중 상당수가 C++ 표준 위원회에 속해있다고 한다. 그래서 그런지 부스트에 있던 라이브러리가 표준으로 넘어간 경우가 많다.(예를 들어 shared_ptr 같은 스마트 포인터, 시간 관련 유틸 chrono 등) 따라서 모던 C++에 관해 관심이 있는 사람이면 한번쯤 써본 사람이 많으므로 관심있는 사람은 공부해보는 것도 나쁘지 않다.이와 상반되게 이 라이브러리 집합의 존재조차 모르는 경우가 상당히 많다. 이는 실무에서 부스트의 사용을 지양하는 회사나 사람들이 많기 때문이다.
이런 실무의 분위기가 정말 불편한 이유는 편리하고 C++의 거지같은 생산성을 끌어올려주는 라이브러리들이 정말 많고, 이걸 한번 쓰면 중독 증세마냥 다음부터 부스트를 찾게되는 경향이 보인다. 그래서 실무에서 C++을 쓰다가 생산성의 엿같음을 느끼고 부스트를 갈망하는 순간부터 고통은 시작된다. boost를 사용하기 시작하면 대부분의 코드가 여기에 종속된다. C++ 표준에 boost의 기능이 많이 탑재되어 있다지만 실제로 사용해보면 동일한 함수명임에도 내부 구현에서의 차이로 상호호환성이 꽤 떨어진다. 이 상황까지 오게되면 C++의 낮은 생산성 때문에 boost를 썼다지만 표준과의 충돌 때문에 앞으로 구현할 새로운 기능도 boost 없이는 도저히 코드를 짤 수 없는 상황에 이르게 되는 것이다.
boost는 템플릿을 상당히 많이 사용하는 라이브러리로, 어느 템플릿 라이브러리나 마찬가지겠지만, 어느정도 규모가 있는 프로젝트에서 라이브러리를 사용한 소스코드를 제대로 패킹[4]하지 않으면 정신나간 컴파일 시간을 볼 수 있게 된다.
4. 관련 문서
[1]
라이브러리의 집합이므로 library가 아니라 libraries이다.
[2]
보통 이런 경우에는 확장자를 .hpp라고 표기하여 헤더 파일로만 컴파일한다고 알린다. 다만 개인 프로젝트라면 하지 않아도 무방.
[3]
템플릿으로 설계되었기에 컴파일시에 소스가 포맷에 맞추어 작성된다.
[4]
인터페이스를 별도 구현해서 인터페이스만 공개하는 등.