Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Усиление адвокации - нужна помощь

Автор вопроса: DVKОтветов: 6

Возможные дубликаты
Есть ли причина чтобы не использовать Boost?
В чем преимущества использования библиотек C ++ BOOST?

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

Подробная информация о том, что мне нужно:

  • С удовольствием приму как положительные аргументы (зачем устанавливать), так и предлагаемые опровержения возможных контраргументов, которые я мог бы услышать (см. Контекст вопроса ниже).

  • Аргументы должны быть нацелены как на технических членов группы разработки программного обеспечения, так и на очень технических руководителей высшего звена - другими словами, для последних детали аргумента могут / должны быть техническими, но суть аргумент должен быть таким: "как это принесет / сэкономит деньги компании X по сравнению с потерей денег компании Y в качестве затрат на добавление их к нашему набору инструментов".

Контекст вопроса:

  • Я разработчик в компании, насчитывающей несколько сотен разработчиков, многие из которых работают на C ++.

  • Мне посчастливилось (неудачно) быть переведенным с моего любимого места разработки Perl в команду, где я также занимаюсь разработкой на C ++. До сих пор я обнаружил множество вещей, которые я мог бы легко сделать в Perl, которые очень сложно / громоздко сделать на C ++ (например, цикл foreach), и каждый раз, когда я нажимаю одно из них, ответ, скорее всего, на 50% будет таким: "Вы не может сделать это в стандартном C ++, но вы можете сделать это с помощью Boost "

  • Наш инструментарий включает в себя несколько устаревших библиотек RogeWave и ОЧЕНЬ ограниченное количество библиотек Boost (например, без регулярных выражений и без foreach) очень старого образца.

  • Любая разработка должна использовать библиотеки, скомпилированные и проверенные командой разработчиков программного обеспечения. Это жесткое правило.

  • Команда SE в некоторой степени сопротивляется добавлению новых библиотек по разным причинам (например, попытки сделать это; функциональные конфликты с RogeWave, например, для RegEx; риск установки и использования любого нового программного обеспечения; стоимость обучения разработчиков и т. Д.) .). Они добавят библиотеки, если будут представлены достаточные бизнес-потребности или убедительные аргументы в отношении соотношения затрат и выгод, но у них довольно жесткий порог.

Итак, я ищу примеры того, какие части Boost настолько хороши (с точной оценкой затрат и выгод), что их установка явно стоит усилий для разработки программного обеспечения.

Заранее благодарим за любые идеи / предложения / примеры.

Пожалуйста, не помечайте этот вопрос как субъективный, я ищу измеримые ответы, а не просто прекрасные ощущения :)

c++boost

Ответы

Ответ 1 · рейтинг 15 · sbi

Где бы я ни работал в последнее десятилетие, когда у них был свой собственный класс интеллектуальных указателей, я обнаруживал в нем ошибки - обычно в течение нескольких недель. И нет, я никогда не ходил и не смотрел в надежде найти ошибки.

У меня появилась привычка публиковать следующую цитату из Предложение интеллектуального указателя TR1:

Разработчики Boost обнаружили, что интеллектуальный указатель с общим владением чрезвычайно сложно реализовать правильно. Другие сделали то же наблюдение. Например, Скотт Мейерс [Meyers01] говорит:

"Сама STL не содержит интеллектуального указателя с подсчетом ссылок, и написать хороший указатель - тот, который работает правильно все время - достаточно сложно, чтобы вы не захотели делать это, если вам не нужно. Я опубликовал код для справки. -счет интеллектуального указателя в более эффективном C ++ в 1996 году, и, несмотря на то, что он основывается на установленных реализациях интеллектуального указателя и подвергается тщательной проверке перед публикацией опытными разработчиками, в течение многих лет поступало небольшое количество достоверных отчетов об ошибках. замечательно способы, которыми умные указатели, подсчитывающие количество ссылок, могут дать сбой ".

Это плюс подробный анализ обнаруженных мною ошибок обычно давал мне работу по включению расширенных библиотек в базу кода. :)

Ответ 2 · рейтинг 10 · jalf

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

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

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

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

Ответ 3 · рейтинг 7 · Robert S. Barnes

  1. Это открытый стандарт, не контролируемый конкретной компанией (без затрат на лицензирование).
  2. Это кроссплатформенный
  3. Он профессионально разработан / написан и очень быстр / эффективен, тщательно протестирован
  4. Существуют реализации с открытым исходным кодом, которые ваша команда может скомпилировать самостоятельно.
  5. Boost скоро станет частью стандартного C ++ STL

Вот немного устаревшая статья 2005 года о докторе Доббсе, в которой обсуждается предстоящий стандарт C ++ 0x.

http://www.ddj.com/cpp/184401958

Ответ 4 · рейтинг 2 · Luc Hermitte

Мне пришлось поддерживать компонент, используя старый старинный Tools.h ++ от Roguewave в системе Solaris.

В Solaris, если мы хотим использовать ускорение, нам нужно использовать либо gcc, либо SunStudio с реализацией стандарта STLport (вместо Roguewave). И поскольку Tools.h ++ требует старой предварительной стандартной реализации стандарта Roguewave - на Solaris - мне пришлось отказаться от ускорения.

В конце концов, я переписал упрощенную версию нескольких необходимых мне функций типа Boost.

Если вы находитесь в такой же ситуации (*), вы не сможете легко перейти из библиотеки Roguewave для ускорения. Эта операция требует значительных затрат, поскольку, например, контейнеры указателей из обеих библиотек имеют совершенно разные интерфейсы.

(*) Где мы не можем медленно менять бит за битом старого кода, чтобы постепенно использовать ускорение. В этой ситуации миграция должна быть радикальной и одновременно заменять каждое появление Tools.h ++ чем-то более модным или даже лучшим.

NB: Большинство людей могут постепенно использовать ускорение в старых проектах и ​​могут упустить очень важный, да и технический, момент. Отсюда мой отрицательный ответ.

Ответ 5 · рейтинг 2 · snowdude

Boost - отличный инструмент и неоценимая часть разработки нашего продукта (мы бы потерялись без smart_ptr) ... но поскольку он меняется так быстро, стабильность выпусков может быть достигнута.

Например, мы, недолго думая, с радостью представили новые версии Boost, как только они вышли. Так продолжалось до тех пор, пока мы не столкнулись с ошибкой в ​​библиотеке потоковой передачи 1.35, которая приводила к случайным (т.е. трудным для отладки), но критическим ошибкам. К счастью, мы определили проблему до того, как что-либо было опубликовано, и смогли вернуться к версии 1.34.

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

Ответ 6 · рейтинг 1 · Inverse

Вот два предложения в поддержку повышения:

Кто использует Boost? (http://www.boost.org/users/uses.html)

Многие крупные проекты используют boost: (например, Adobe Photoshop, CERN)

Повышение стоимости проекта (http://www.boost.org/development/index.html)

Сколько будет стоить нанять команду для написания Boost с нуля? Там есть изящный (несколько хитрый) калькулятор, который помогает увидеть это в перспективе.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы