Які переваги використання бібліотек C ++ Boost? [зачинено]


122

Отже, я читав, і, схоже, бібліотеки Boost багато використовуються на практиці (хоча не в моєму магазині). Чому це? і що робить це таким чудовим?


10
Нітпік: Це не абревіатура, тому це Boost (або boost), а не BOOST. Якщо ви, звичайно, не кричите;)
Ніклас

10
@ Niklas Це також НАЙКРАЩЕ, коли ви використовуєте будь-який з макросів препроцесора = P
KitsuneYMG

@KitsuneYMG Я бачу, що питання все-таки було відредаговано, але я впевнений, що ОП не використовував поле запитання для редагування коду препроцесора;)
Niklas

3
@Nikias Я просто розумник = P. Хлопець повинен хобі.
KitsuneYMG

C ++ - це лайно без Boost :)
TriCore

Відповіді:


134

Boost використовується так широко, тому що:

  • Він є відкритим і перевіреним.
  • Він надає широкий спектр платформних агностичних функцій, яких STL пропустив.
  • Він є доповненням до STL, а не заміною.
  • Багато розробників Boost є членами стандартного комітету C ++. Насправді багато частин Boost вважаються включеними до наступної стандартної бібліотеки C ++.
  • Це добре задокументовано.
  • Його ліцензія дозволяє включити до проектів із відкритим та вихідним кодом.
  • Його функції зазвичай не залежать один від одного, тому ви можете зв'язати лише потрібні вам частини. [Коментар Люка Ермітта ]

5
Крім того, ми також можемо сказати, що збільшити підбібліотеки можна використовувати незалежно одна від одної (крім кількох основних бібліотек). Це не тому, що ми використовуємо boost.shared_ptr, наприклад, що ми повинні використовувати boost.ublas.
Люк Ермітт

Я люблю бачити відповіді, схожі на записи енциклопедії. Це дозволяє так легко отримати велику кількість матеріалу. +1
Тайлер Сміт

Завжди здається, що кожна бібліотека залежить від MPL ...
Віктор Шер

Boost дозволяє одноразово писати, правильні розробки та використання платформ?
FilBot3

Це безкоштовно для комерційного використання?
Mayur

39

З домашньої сторінки:

"... один з найбільш високо оцінених та влучно розроблених бібліотечних проектів C ++ у світі." - Герб Саттер та Андрій Олександреску, стандарти кодування C ++

"Пункт 55: Ознайомтеся з Boost." - Скотт Майєрс, Ефективний C ++, 3-е вид.

"Очевидним рішенням для більшості програмістів є використання бібліотеки, яка забезпечує елегантну та ефективну платформу, незалежну від необхідних сервісів. Прикладами є BOOST ..." - Bjarne Stroustrup, абстракція, бібліотеки та ефективність в C ++

Отже, це ціла низка широко використовуваних і прийнятих бібліотек, але навіщо вам це потрібно?

Якщо вам потрібно:

  • регекс
  • функція зв'язування
  • лямбда-функції
  • одиничні тести
  • розумні покажчики
  • не можна скопіювати, необов’язково
  • серіалізація
  • родові дати
  • портативна файлова система
  • кругові буфери
  • конфігураційні утиліти
  • загальна бібліотека зображень
  • TR1
  • нитки
  • uBLAS

і багато іншого, коли ви кодуєте на C ++, подивіться на Boost .


23

Оскільки вони додають багато відсутніх речей до стандартної бібліотеки, настільки, що деякі з них включаються до стандарту.

Люди підштовхують не брешуть:

Чому організація повинна використовувати Boost?

Одним словом, Продуктивність. Використання високоякісних бібліотек, таких як Boost прискорює початкову розробку, призводить до меншої кількості помилок, зменшує відновлення колеса та скорочує довгострокові витрати на обслуговування. А оскільки бібліотеки Boost, як правило, стають де-факто або де-юре стандартами, багато програмістів вже знайомі з ними.

Десять бібліотек Boost включені в TR1 стандартної бібліотеки C ++, і тому вони плануються для подальшої повної стандартизації. Більше бібліотек Boost знаходиться в процесі розробки TR2. Використання бібліотек Boost дає організацію початок впровадження нових технологій.

Багато організацій вже використовують програми, реалізовані з Boost, як-от Adobe Acrobat Reader 7.0.


16

Кілька класів Boost є дуже корисними (shared_ptr), але я думаю, що вони трохи погіршилися з рисами та поняттями в Boost. Часи компіляції та величезні двійкові розміри абсолютно божевільні для Boost, як це стосується будь-якого важкого шаблону коду. Має бути баланс. Я не впевнений, чи знайшов Boost.


10
Ви забуваєте, що Boost - це не одна бібліотека, а багато. Крім того, вам доведеться компенсувати великі розміри та час компіляції щодо функціональності. Риси та поняття - це чудова допомога в розвитку. Час компіляції - це невелика ціна, яку потрібно заплатити за неї.
Конрад Рудольф

8

Він додає бібліотеки, які дозволяють більш сучасний підхід до програмування на C ++.

На моєму досвіді багато програмістів на C ++ - це справді програмісти C ++ початку 1990-х, в основному пишуть класи C ++, не багато користуються дженериками. Більш сучасний підхід використовує дженерики для складання програмного забезпечення разом таким чином, що більше нагадує динамічні мови, але в кінцевому підсумку ви все одно отримаєте перевірку / продуктивність. На це трохи негарно дивитися. Але як тільки ви перейдете над питаннями синтаксису, це справді дуже приємно. Збільшення дає безліч інструментів, необхідних для того, щоб легко складати речі. розумні покажчики, функції, лямбдаши, прив’язки тощо. Тоді існують збільшені бібліотеки, які використовують цей новіший спосіб написання C ++, щоб забезпечити такі речі, як мережа, регулярний вираз тощо тощо.

якщо ви пишете багато для циклів, або обробляєте об'єкти функції ручної роботи, або керуєте пам’яттю, вам обов'язково слід перевірити збільшення.


8

BOOST - це колекція бібліотек, що заповнюють потреби, спільні для багатьох проектів C ++. Як правило, вони надають пріоритет правильності, повторності використання, портативності, продуктивності роботи та просторовій ефективності перед читальністю коду реалізації BOOST або іноді компілюють рази. Вони, як правило, не покривають повних функціональних вимог високого рівня (наприклад, програми додатків), а натомість (на щастя) пропонують будівельні блоки, які можна вільніше комбінувати, не диктуючи та не домінуючи над дизайном програми.

До важливих причин, які слід розглянути як використовувати BOOST, належать:

  • більшість бібліотек досить добре перевірені та розроблені: вони, як правило, отримують досить обґрунтований огляд відмінні програмісти, порівняно з людьми, які вирішують домашнє пивоваріння в одному і тому ж проблемному просторі, і досить широко використовуються для збору широких відгуків у реальному світі
  • це вже написано, і ваше рішення, ймовірно, ні
  • це досить портативно (але це залежить від бібліотеки)
  • більше людей у ​​спільноті C ++ зможуть допомогти вам у коді
  • BOOST часто є довідковою основою для впровадження стандарту C ++, тому вам доведеться менше працювати над тим, щоб переписати свій код, щоб він був сумісний з майбутніми стандартами BOOST
  • із-за попиту громади, постачальники компіляторів мають більше шансів тестувати та реагувати на питання коректності використання BOOST
  • ознайомлення з прискореними бібліотеками допоможе вам виконати подібну роботу над іншими проектами, можливо, в інших компаніях, де який би код ви не написали зараз, він може бути недоступний для повторного використання

Бібліотеки описані у рядку чи двох тут: http://www.boost.org/doc/libs/ .




3

Підвищуйте в основному конспект того, що стане Стандартом, окрім усього експертного огляду та використання, яке отримує Boost, ви можете бути впевнені, що ви отримаєте досить хорошу пропозицію для своїх залежностей.

Однак більшість магазинів не використовують Boost, оскільки це зовнішня залежність. Насправді також дуже важливим є зменшення зовнішніх залежностей.


3

Підвищення - це C ++, як .NET Framework - це C #, але, можливо, у меншому масштабі.


2

Я використовую бібліотеку файлової системи трохи вийшов, а boost :: shared_ptr досить чудовий. Я чую, що це робить і інші речі.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.