Ưu điểm của việc sử dụng thư viện C ++ Boost là gì? [đóng cửa]


123

Vì vậy, tôi đã đọc qua và có vẻ như các thư viện Boost được sử dụng rất nhiều trong thực tế (mặc dù vậy, không phải tại cửa hàng của tôi). Tại sao thế này? và điều gì khiến nó trở nên tuyệt vời như vậy?


10
Nitpick: Nó không phải là một từ viết tắt, vì vậy nó là Boost (hoặc tăng cường), không phải BOOST. Tất nhiên trừ khi bạn đang hét lên;)
Niklas

10
@Niklas Nó cũng rất BOOST khi bạn đang sử dụng bất kỳ macro nào của bộ xử lý trước = P
KitsuneYMG

@KitsuneYMG Tôi thấy câu hỏi đã được chỉnh sửa, nhưng tôi khá chắc chắn rằng OP không sử dụng trường câu hỏi để chỉnh sửa mã tiền xử lý;)
Niklas

3
@Nikias Tôi chỉ là một đứa thông minh thôi = P. Một chàng trai phải có sở thích.
KitsuneYMG

C ++ là tào lao mà không Boost :)
Tricore

Câu trả lời:


135

Boost được sử dụng rộng rãi vì:

  • Nó là mã nguồn mở và được đánh giá ngang hàng.
  • Nó cung cấp một loạt các chức năng bất khả tri nền tảng mà STL đã bỏ qua.
  • Nó là một bổ sung cho STL hơn là một thay thế.
  • Nhiều nhà phát triển Boost nằm trong ủy ban tiêu chuẩn C ++. Trên thực tế, nhiều phần của Boost được coi là có trong thư viện chuẩn C ++ tiếp theo.
  • Nó được ghi lại một cách độc đáo.
  • Giấy phép của nó cho phép đưa vào các dự án nguồn mở và nguồn đóng.
  • Các tính năng của nó thường không phụ thuộc vào nhau nên bạn chỉ có thể liên kết những phần bạn yêu cầu. [ Bình luận của Luc Hermitte ]

5
Ngoài ra, chúng ta cũng có thể nói rằng các thư viện con boost có thể được sử dụng độc lập với nhau (ngoại trừ một số thư viện lõi). Chẳng hạn, không phải vì chúng ta đang sử dụng boost.shared_ptr mà chúng ta phải sử dụng boost.ublas.
Luc Hermitte 24/09/08

Tôi thích xem các câu trả lời trông giống như các mục từ bách khoa toàn thư. Nó làm cho nó rất dễ dàng để có được một lượng lớn vật liệu. +1
Tyler Smith

Althrough dường như mọi thư viện phụ thuộc vào MPL ...
Viktor Sehr

Boost cho phép viết một lần, phát triển đa nền tảng và sử dụng đúng không?
FilBot3

Nó có miễn phí cho việc sử dụng thương mại không?
Mayur

39

Từ trang chủ:

"... một trong những dự án thư viện C ++ được đánh giá cao và được thiết kế chuyên nghiệp nhất trên thế giới." - Herb Sutter và Andrei Alexandrescu, Tiêu chuẩn mã hóa C ++

"Tiết 55: Làm quen với Boost." - Scott Meyers, C ++ hiệu quả, xuất bản lần thứ 3.

"Giải pháp rõ ràng cho hầu hết các lập trình viên là sử dụng một thư viện cung cấp nền tảng thanh lịch và hiệu quả độc lập với các dịch vụ cần thiết. Ví dụ như BOOST ..." - Bjarne Stroustrup, Abstraction, thư viện và hiệu quả trong C ++

Vì vậy, đó là một loạt các thư viện được sử dụng rộng rãi và được chấp nhận, nhưng tại sao bạn lại cần nó?

Nếu bạn cần:

  • regex
  • chức năng ràng buộc
  • hàm lambda
  • kiểm tra đơn vị
  • con trỏ thông minh
  • không thể sao chép, tùy chọn
  • tuần tự hóa
  • ngày chung chung
  • hệ thống tập tin di động
  • đệm tròn
  • cấu hình utils
  • thư viện hình ảnh chung
  • TR1
  • chủ đề
  • uBLAS

hơn thế nữa khi bạn viết mã bằng C ++, hãy xem Boost .


23

Bởi vì họ thêm nhiều thứ còn thiếu vào thư viện tiêu chuẩn, rất nhiều thứ trong số họ được đưa vào tiêu chuẩn.

Boost mọi người không nói dối:

Tại sao một tổ chức nên sử dụng Boost?

Nói một cách dễ hiểu, Năng suất. Việc sử dụng các thư viện chất lượng cao như Boost giúp tăng tốc độ phát triển ban đầu, dẫn đến ít lỗi hơn, giảm sự phát minh lại và cắt giảm chi phí bảo trì dài hạn. Và vì các thư viện Boost có xu hướng trở thành tiêu chuẩn de facto hoặc de jure, nên nhiều lập trình viên đã quen thuộc với chúng.

Mười trong số các thư viện Boost được bao gồm trong TR1 của Thư viện Chuẩn C ++, và do đó, dự kiến ​​sẽ được chuẩn hóa đầy đủ sau này. Các thư viện Boost khác đang được cung cấp cho TR2. Sử dụng thư viện Boost mang lại cho tổ chức một khởi đầu thuận lợi trong việc áp dụng các công nghệ mới.

Nhiều tổ chức đã sử dụng các chương trình được triển khai với Boost, như Adobe Acrobat Reader 7.0.


16

Một vài lớp Boost rất hữu ích (shared_ptr), nhưng tôi nghĩ rằng chúng có một chút sai lầm với các đặc điểm và khái niệm trong Boost. Thời gian biên dịch và kích thước nhị phân khổng lồ là hoàn toàn điên rồ với Boost, như trường hợp của bất kỳ mã nặng mẫu nào. Cần phải có một sự cân bằng. Tôi không chắc liệu Boost đã tìm thấy nó hay chưa.


10
Bạn quên rằng Boost không phải là một mà là nhiều thư viện. Ngoài ra, bạn phải bù đắp kích thước lớn và thời gian biên dịch so với chức năng. Các đặc điểm và khái niệm là một trợ giúp lớn cho sự phát triển. Thời gian biên dịch thực sự là một cái giá nhỏ để trả cho nó.
Konrad Rudolph 24-08

8

Nó bổ sung các thư viện cho phép tiếp cận lập trình C ++ hiện đại hơn.

Theo kinh nghiệm của tôi, nhiều lập trình viên C ++ thực sự là những lập trình viên C ++ đầu những năm 1990, viết khá nhiều các lớp C ++, chứ không phải sử dụng nhiều đến các ngôn ngữ chung. Cách tiếp cận hiện đại hơn sử dụng generic để biên soạn phần mềm với nhau theo cách giống với ngôn ngữ động hơn, nhưng cuối cùng bạn vẫn nhận được hiệu suất / kiểm tra kiểu. Nhìn thì hơi xấu xí. Nhưng một khi bạn vượt qua được các vấn đề về cú pháp, nó thực sự khá tốt. Boost cung cấp cho bạn rất nhiều công cụ cần thiết để soạn nội dung một cách dễ dàng. con trỏ thông minh, hàm, lambdas, ràng buộc, v.v. Sau đó, có các thư viện tăng cường khai thác cách viết C ++ mới hơn này để cung cấp những thứ như mạng, regex, v.v.

nếu bạn đang viết nhiều vòng lặp for, hoặc các đối tượng chức năng xoay tay hoặc thực hiện quản lý bộ nhớ, thì bạn chắc chắn nên kiểm tra boost.


8

BOOST là một tập hợp các thư viện lấp đầy nhu cầu phổ biến cho nhiều dự án C ++. Nói chung, chúng ưu tiên tính đúng đắn, khả năng tái sử dụng, tính di động, hiệu suất thời gian chạy và hiệu quả về không gian hơn khả năng đọc của mã triển khai BOOST hoặc đôi khi là thời gian biên dịch. Chúng có xu hướng không bao hàm các yêu cầu chức năng cấp cao hoàn chỉnh (ví dụ: khung ứng dụng), và thay vào đó (rất may) cung cấp các khối xây dựng có thể được kết hợp tự do hơn mà không cần ra lệnh hoặc chi phối thiết kế ứng dụng.

Các lý do quan trọng để xem xét sử dụng BOOST bao gồm:

  • hầu hết các thư viện đều được kiểm tra và thiết kế khá tốt: chúng thường nhận được đánh giá hợp lý bởi một số lập trình viên xuất sắc, so với những người có giải pháp ủ tại nhà trong cùng một không gian vấn đề và được sử dụng rộng rãi để thu thập phản hồi rộng rãi trong thế giới thực
  • nó đã được viết và giải pháp của bạn có thể không
  • nó khá di động (nhưng điều đó thay đổi theo từng thư viện)
  • nhiều người hơn trong cộng đồng C ++ sẽ bắt đầu hỗ trợ bạn với mã của bạn
  • BOOST thường là cơ sở chứng minh cho việc giới thiệu Tiêu chuẩn C ++, vì vậy bạn sẽ ít phải làm việc hơn trong việc viết lại mã của mình để tương thích với Tiêu chuẩn trong tương lai sans BOOST
  • do nhu cầu của cộng đồng, các nhà cung cấp trình biên dịch có nhiều khả năng thử nghiệm và phản ứng với các vấn đề về tính đúng đắn với việc sử dụng BOOST
  • Việc quen thuộc với các thư viện tăng cường sẽ giúp bạn thực hiện công việc tương tự trên các dự án khác, có thể ở các công ty khác, nơi bất kỳ mã nào bạn viết bây giờ có thể không có sẵn để sử dụng lại

Các thư viện được mô tả trong một hoặc hai dòng tại đây: http://www.boost.org/doc/libs/ .


6

Bởi vì các thư viện chuẩn C ++ không phải là tất cả những gì hoàn chỉnh .



3

Về cơ bản Boost là tóm tắt về những gì Tiêu chuẩn sẽ trở thành, bên cạnh đó với tất cả các đánh giá ngang hàng và cách sử dụng mà Boost nhận được, bạn có thể khá chắc chắn rằng bạn nhận được khá nhiều lợi ích cho các phụ thuộc của mình.

Tuy nhiên, hầu hết các cửa hàng không sử dụng Boost, bởi vì nó là phụ thuộc bên ngoài. Và trên thực tế, việc giảm phụ thuộc bên ngoài cũng rất quan trọng.


3

Boost là với C ++ giống như .NET Framework là C #, nhưng có thể ở quy mô nhỏ hơn.


2

Tôi sử dụng thư viện hệ thống tệp bỏ một chút, và boost :: shared_ptr khá tiện lợi. Tôi nghe nói nó cũng làm những việc khác.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.