Каковы преимущества использования библиотек C ++ Boost? [закрыто]


123

Итак, я читал и, похоже, библиотеки Boost очень часто используются на практике (хотя и не в моем магазине). Почему это? и что делает его таким прекрасным?


10
Nitpick: Это не аббревиатура, поэтому это Boost (или boost), а не BOOST. Если, конечно, вы не кричите;)
Никлас

10
@Niklas Это также УСИЛЕНИЕ, когда вы используете любой из макросов препроцессора = P
KitsuneYMG

@KitsuneYMG Я вижу, что вопрос все равно отредактировали, но я почти уверен, что OP не использовал поле вопроса для редактирования кода препроцессора;)
Niklas

3
@Nikias Я просто умница = P. У парня должны быть хобби.
KitsuneYMG

C ++ - дерьмо без Boost :)
TriCore

Ответы:


135

Boost так широко используется, потому что:

  • Это открытый исходный код и экспертная оценка.
  • Он предоставляет широкий спектр функций, не зависящих от платформы, которые упускал STL.
  • Это дополнение к STL, а не замена.
  • Многие из разработчиков Boost входят в стандартный комитет C ++. Фактически, многие части Boost считаются включенными в следующую стандартную библиотеку C ++.
  • Это красиво задокументировано.
  • Его лицензия позволяет включать в проекты с открытым и закрытым кодом.
  • Его функции обычно не зависят друг от друга, поэтому вы можете связывать только те части, которые вам нужны. [ Комментарий Люка Эрмитта ]

5
Кроме того, мы также можем сказать, что вспомогательные подбиблиотеки могут использоваться независимо друг от друга (за исключением нескольких основных библиотек). Например, мы должны использовать boost.ublas не потому, что мы используем boost.shared_ptr.
Люк Эрмитт,

Мне нравится видеть ответы, похожие на статьи из энциклопедии. Это позволяет легко получить большое количество материала. +1
Тайлер Смит

Althrough, кажется , что каждая библиотека зависит от MPL ...
Виктор Sehr

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

Это бесплатно для коммерческого использования?
Mayur

39

С домашней страницы:

«... один из самых уважаемых и профессионально разработанных библиотечных проектов C ++ в мире». - Херб Саттер и Андрей Александреску, C ++ Coding Standards

«Пункт 55: Ознакомьтесь с Boost». - Скотт Мейерс, Эффективный C ++, 3-е изд.

«Очевидным решением для большинства программистов является использование библиотеки, которая обеспечивает элегантную и эффективную платформу, независимую от необходимых сервисов. Примеры: BOOST ...» - Бьярн Страуструп, Абстракция, библиотеки и эффективность в C ++

Итак, это ряд широко используемых и принятых библиотек, но зачем он вам?

Если тебе надо:

  • регулярное выражение
  • привязка функций
  • лямбда-функции
  • модульные тесты
  • умные указатели
  • не копируемый, необязательный
  • сериализация
  • общие даты
  • переносимая файловая система
  • круговые буферы
  • утилиты конфигурации
  • общая библиотека изображений
  • TR1
  • потоки
  • uBLAS

и многое другое, когда вы пишете код на C ++, обратите внимание на Boost .


23

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

Boost люди не врут:

Почему организации следует использовать 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 ++, а не использующие универсальные шаблоны. Более современный подход использует дженерики для компоновки программного обеспечения в манере, которая больше похожа на динамические языки, но в итоге вы все равно получаете проверку типов / производительность. Это немного некрасиво на вид. Но как только вы преодолеете проблемы с синтаксисом, это действительно будет здорово. Boost дает вам множество инструментов, необходимых для легкой компоновки. интеллектуальные указатели, функции, лямбды, привязки и т. д. Кроме того, существуют библиотеки ускорения, которые используют этот новый способ написания C ++ для обеспечения таких вещей, как работа в сети, регулярное выражение и т. д.

Если вы пишете много циклов for, или вручную прокручиваете объекты функций, или занимаетесь управлением памятью, вам определенно следует проверить boost.


8

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

Важные причины, по которым стоит рассмотреть возможность использования BOOST:

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

Библиотеки описаны здесь парой строк: http://www.boost.org/doc/libs/ .




3

Повысьте, в основном, синопсис того, чем станет Стандарт, кроме того, благодаря всем экспертным обзорам и использованию, которые дает Boost, вы можете быть уверены, что получите неплохую сделку для ваших зависимостей.

Однако большинство магазинов не используют Boost, потому что это внешняя зависимость. И на самом деле уменьшение внешних зависимостей также очень важно.


3

Boost для C ++ вроде как .NET Framework для C #, но, возможно, в меньшем масштабе.


2

Я немного использую библиотеку файловой системы, и boost :: shared_ptr довольно изящный. Я слышал, что он делает и другие вещи.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.