C ++ Boost 라이브러리를 사용하면 어떤 이점이 있습니까? [닫은]


122

그래서 나는 읽었고 Boost 라이브러리가 실제로 많이 사용되는 것처럼 보입니다 (하지만 내 가게에서는 아닙니다). 왜 이런거야? 그토록 멋진 이유는 무엇입니까?


10
Nitpick : 약어가 아니므로 BOOST가 아니라 Boost (또는 boost)입니다. 당연히 외치지 않는 한;)
Niklas

10
@Niklas 전 처리기 매크로를 사용할 때도 부스트 = P
KitsuneYMG

@KitsuneYMG 어쨌든 질문이 편집 된 것을 보았지만 OP가 전 처리기 코드를 편집하기 위해 질문 필드를 사용하지 않았다고 확신합니다;)
Niklas

3
@Nikias 나는 단지 똑똑한 엉덩이 = P입니다. 남자는 취미가 있어야합니다.
KitsuneYMG

C ++는 :) 부스트없이 쓰레기입니다
은 TriCore

답변:


134

Boost 는 다음과 같은 이유로 광범위하게 사용됩니다.

  • 오픈 소스이며 동료 검토를 거쳤습니다.
  • STL이 놓친 광범위한 플랫폼에 구애받지 않는 기능을 제공합니다 .
  • 대체가 아니라 STL을 보완합니다.
  • 많은 Boost 개발자가 C ++ 표준위원회에 있습니다. 실제로 Boost의 많은 부분이 다음 C ++ 표준 라이브러리에 포함되는 것으로 간주됩니다.
  • 잘 문서화되어 있습니다.
  • 그것의 라이선스는 오픈 소스와 폐쇄 소스 프로젝트에 포함 할 수 있습니다.
  • 그 기능은 일반적 으로 서로 의존 하지 않으므로 필요한 부분 만 연결할 수 있습니다. [ Luc Hermitte 의 코멘트]

5
또한 boost 하위 라이브러리는 서로 독립적으로 사용할 수 있습니다 (몇 가지 핵심 라이브러리 제외). 예를 들어 boost.ublas를 사용해야하는 것은 boost.shared_ptr을 사용하기 때문이 아닙니다.
Luc Hermitte

백과 사전 항목처럼 보이는 답변을보고 싶습니다. 많은 양의 재료를 쉽게 얻을 수 있습니다. +1
Tyler Smith

모든 라이브러리가 ... MPL에 의존하는 것 같다 Althrough
빅토르 SEHR

Boost는 한 번만 쓸 수 있고 크로스 플랫폼 개발 및 사용이 정확합니까?
FilBot3 2014 년

상업용으로 무료입니까?
Mayur

39

홈페이지에서 :

"... 세계에서 가장 높이 평가되고 전문적으로 설계된 C ++ 라이브러리 프로젝트 중 하나입니다." — Herb Sutter 및 Andrei Alexandrescu, C ++ 코딩 표준

"항목 55 : 부스트에 익숙해 지십시오." — Scott Meyers, Effective C ++, 3rd Ed.

"대부분의 프로그래머에게 명백한 해결책은 필요한 서비스에 독립적 인 우아하고 효율적인 플랫폼을 제공하는 라이브러리를 사용하는 것입니다. 예는 BOOST ..."— Bjarne Stroustrup, Abstraction, 라이브러리 및 C ++의 효율성

따라서 널리 사용되고 허용되는 다양한 라이브러리이지만 왜 필요합니까?

필요한 경우 :

  • 정규식
  • 함수 바인딩
  • 람다 함수
  • 단위 테스트
  • 스마트 포인터
  • 복사 불가, 선택 사항
  • 직렬화
  • 일반 날짜
  • 휴대용 파일 시스템
  • 원형 버퍼
  • 구성 유틸리티
  • 일반 이미지 라이브러리
  • TR1
  • 스레드
  • uBLAS

그리고 당신의 코드는 C ++에서 봐 때 부스트 .


23

그들은 표준 라이브러리에 많은 빠진 것들을 추가하기 때문에 그들 중 일부는 표준에 포함됩니다.

사람들 은 거짓말을하지 않습니다.

조직에서 Boost를 사용해야하는 이유는 무엇입니까?

한마디로 생산성. Boost와 같은 고품질 라이브러리를 사용하면 초기 개발 속도가 빨라지고 버그가 줄어들고 재창조가 줄어들고 장기 유지 관리 비용이 절감됩니다. 그리고 Boost 라이브러리는 사실상 또는 법적 기준이되는 경향이 있기 때문에 많은 프로그래머가 이미 익숙합니다.

10 개의 Boost 라이브러리가 C ++ 표준 라이브러리의 TR1에 포함되어 있으므로 나중에 완전한 표준화를 수행 할 예정입니다. 더 많은 Boost 라이브러리가 TR2의 파이프 라인에 있습니다. Boost 라이브러리를 사용하면 조직이 새로운 기술을 채택 할 수 있습니다.

많은 조직에서 이미 Adobe Acrobat Reader 7.0과 같이 Boost로 구현 된 프로그램을 사용하고 있습니다.


16

몇 가지 Boost 클래스는 매우 유용하지만 (shared_ptr) Boost의 특성과 개념에 대해 약간 미쳤습니다. 컴파일 시간과 거대한 바이너리 크기는 템플릿이 많은 코드의 경우와 마찬가지로 Boost에서 완전히 미쳤습니다. 균형이 있어야합니다. Boost가 그것을 찾았는지 확실하지 않습니다.


10
Boost가 하나의 라이브러리가 아니라 많은 것을 잊었습니다. 또한 기능에 대해 큰 크기와 컴파일 시간을 상쇄해야합니다. 특성과 개념은 개발에 큰 도움이됩니다. 컴파일 시간은 실제로 그것을 지불하는 작은 비용입니다.
Konrad Rudolph

8

C ++ 프로그래밍에 대한보다 현대적인 접근 방식을 허용하는 라이브러리를 추가합니다.

내 경험상 많은 C ++ 프로그래머는 실제로 1990 년대 초반 C ++ 프로그래머로, 제네릭을 많이 사용하지 않고 C ++ 클래스를 거의 작성합니다. 보다 현대적인 접근 방식은 제네릭을 사용하여보다 동적 인 언어와 유사한 방식으로 소프트웨어를 함께 구성하지만 결국에는 유형 검사 / 성능을 얻습니다. 보기에는 조금 추합니다. 그러나 일단 구문 문제를 극복하면 정말 좋습니다. Boost는 쉽게 구성하는 데 필요한 많은 도구를 제공합니다. 스마트 포인터, 함수, 람다, 바인딩 등. 그런 다음 네트워킹, 정규식 등을 제공하기 위해 C ++를 작성하는 새로운 방법을 활용하는 부스트 라이브러리가 있습니다.

for 루프를 많이 작성하거나 함수 객체를 직접 굴 리거나 메모리 관리를 수행하는 경우 반드시 부스트를 확인해야합니다.


8

BOOST는 많은 C ++ 프로젝트에 공통적으로 필요한 라이브러리를 채우는 모음입니다. 일반적으로 BOOST 구현 코드의 가독성 또는 컴파일 시간보다 정확성, 재사용 성, 이식성, 런타임 성능 및 공간 효율성을 우선시합니다. 그들은 완전한 높은 수준의 기능 요구 사항 (예 : 애플리케이션 프레임 워크)을 다루지 않고 대신 (고맙게도) 애플리케이션 설계를 지시하거나 지배하지 않고 더 자유롭게 결합 할 수있는 빌딩 블록을 제공하는 경향이 있습니다.

BOOST 사용을 고려해야하는 중요한 이유는 다음과 같습니다.

  • 대부분의 라이브러리는 꽤 잘 테스트되고 설계되었습니다. 일반적으로 동일한 문제 공간에서 홈 브루 솔루션을 사용하는 사람들에 비해 우수한 프로그래머가 합리적으로 건전한 리뷰를 받고 광범위한 실제 피드백을 수집 할 수있을만큼 널리 사용됩니다.
  • 이미 작성되었으며 귀하의 솔루션은 아마도
  • 이식성이 매우 뛰어납니다 (그러나 라이브러리마다 다릅니다)
  • C ++ 커뮤니티의 더 많은 사람들이 코드 작성에 앞장서고 있습니다.
  • BOOST는 종종 C ++ 표준에 대한 소개를위한 입증 장소이므로 향후 표준과 호환되도록 코드를 다시 작성하는 작업이 줄어 듭니다.
  • 커뮤니티 요구로 인해 컴파일러 공급 업체는 BOOST 사용에 대한 정확성 문제를 테스트하고 이에 대응할 가능성이 더 높습니다.
  • 부스트 라이브러리에 익숙하면 다른 프로젝트에서 유사한 작업을 수행하는 데 도움이됩니다. 다른 회사에서 지금 작성하는 코드는 재사용 할 수 없습니다.

라이브러리는 http://www.boost.org/doc/libs/에서 한두 줄로 설명됩니다 .




3

Boost가 얻는 모든 피어 리뷰 및 사용 외에도 기본적으로 표준이 될 시놉시스를 부스트하면 종속성에 대해 상당히 좋은 거래를 얻을 수 있습니다.

그러나 대부분의 상점은 외부 종속성이기 때문에 Boost를 사용하지 않습니다. 그리고 실제로 외부 의존성을 줄이는 것도 매우 중요합니다.


3

부스트는 C ++에 대한 것입니다. .NET Framework가 C #에 대한 것과 비슷하지만 더 작은 규모 일 수도 있습니다.


2

나는 파일 시스템 라이브러리를 조금 사용하고 boost :: shared_ptr은 꽤 멋지다. 나는 그것이 다른 일도한다고 들었습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.