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