Boost C++ Libraries
자바는 하드웨어 접근이 원칙적으로 통제되어 있으므로 표준 API에서 지원하지 않는 기능을 사용하기 위해서는 네이티브 바이너리에 직접 접근해야만 한다. 이 제한은 플랫폼 독립적이어야 하는 자바의 원칙을 깨는 것이므로, 자바가 좀 더 많은 일을 할 수 있게 하기 위해 표준 API안에 개발에 필요한 가능한한 많은 기능들을 제공해야 했다. 덕분에 자바 개발자들은 네트워킹, 쓰레드, DB접근, GUI등 애플리케이션 개발에 필수적인 요소들에 객체지향적으로 잘 설계된 방대한 라이브러리를 자유롭게 사용할 수 있다.
반면에, C++은 언어와 API가 별개이다. C++에서는 시스템에 관련된 API는 플랫폼 개발자가 제공하는 것이 원칙이므로, 플랫폼 독립적인 방법을 제공하기 위해 표준 API의 어휘를 늘리는 것에 적극적이지 않았다. 그 결과 iostream과 stl을 제외하자면 객체지향으로 설계된 API가 없는 거나 다름없는 빈약한 언어가 되었고, 나머지는 모두 플랫폼 개발자가 제공하는 라이브러리에 의존해야 했다.
C++로 응용프로그램을 개발할 때, 사소하지만 빈번하게 사용되는 유틸리티들마저 부족한 것은 큰 문제이다. 달력이나 유리수 표현과 같은 유틸리티는 어지간한 입문서에서 단골로 다룰 만큼 작은 라이브러리지만, 표준이 없으므로 필요할 때마다 계속 "바퀴를 다시 발명하여"사용해야만 한다.
boost는 이런 문제의식을 배경으로, 범용으로 빈번하게 사용되는 작은 유틸리티들을 제공하려는 프로젝트이다. 그래프, 쓰레기 수집 기능을 가진 포인터, 파일시스템, 수학 연산들, 쓰레드, 스캐너와 LL파서 등 유용한 기능을 가진 라이브러리들을 많이 확보하고 있다.
boost는 다섯 달에 한 번 꼴로 버전업이 이루어지는데, 매 버전업마다 많은 라이브러리가 추가된다.(http://www.boost.org/index.htm) 진보적인 C++문법을 사용하는 관계로 컴파일러와 플랫폼에 따라 성공적으로 컴파일되지 않는 라이브러리가 있을 수 있으니 테스트 결과를 참고해서 사용해야 한다.(http://boost.sourceforge.net/regression-logs/) 지속적으로 포팅이 이루어지고 있으니 컴파일 실패율은 계속 낮아질 것으로 보인다. 너무 활발하게 진행되는 프로젝트이다 보니 버전업이 되면서 하위호환성이 보장되지 않는 경우가 있으므로 주의해야 한다.
sourceforge(http://sourceforge.net/projects/boost/)와 자체 홈페이지(http://www.boost.org/)를 모두 갖고 있다.
2003년 5월 4일