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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


person DVK    schedule 17.09.2009    source источник


Ответы (6)


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

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

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

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

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

person sbi    schedule 17.09.2009

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

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

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

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

person jalf    schedule 17.09.2009
comment
Это был бы вероятный путь, по которому мне нужно было бы пойти. Проблема в том, что, хотя объем поддержки, необходимой для конкретной библиотеки boost, меньше, чем весь набор, он все равно должен быть столь же убедительным и подробным по уровню затрат / выгод. И у меня недостаточно опыта работы с C ++, чтобы самому приводить эти аргументы (в наши дни я на 95% разбираюсь в Perl). - person DVK; 17.09.2009
comment
Достаточно справедливо, но проблема в том, что остальные из нас на самом деле не знают, какие библиотеки ускорения будут уместны в вашем приложении. Большинство людей находят интеллектуальные указатели очень ценными, и я часто использую type_traits, но в остальном это действительно зависит от предметной области, какие библиотеки актуальны. - person jalf; 17.09.2009

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

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

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

person Robert S. Barnes    schedule 17.09.2009
comment
+1 - за исключением того, что не весь Boost включен в следующий стандарт C ++, но Boost, безусловно, оказывает значительное влияние на новый стандарт. - person Michael Burr; 17.09.2009
comment
Разве последний балл не балл против буста? зачем им проходить всю бумажную работу по добавлению новой библиотеки, если она будет доступна как часть стандарта через несколько лет? - person jalf; 17.09.2009
comment
@jalf, если им нужно пройти через все эти документы, чтобы добавить библиотеку, представьте, сколько работы им придется сделать, чтобы им было разрешено обновить свой язык до C ++ 0X (всякий раз, когда он появится) - person Glen; 17.09.2009
comment
@glen - АМИНЬ. Вся проблема не в том, что они против Boost, а в том, что им нужен анализ затрат и выгод для любой работы, изменений и сбоев. - person DVK; 17.09.2009
comment
@Robert - хотя это все хорошие и правильные моменты, ни один из них не дает реального анализа затрат и выгод, который потребовался бы команде разработчиков программного обеспечения. Мне нужно, чтобы эта функция занимала в 3 раза больше часов, чтобы поддерживать собственный код по сравнению с Boost, эту функцию невозможно написать, не будучи Джоном Скитом, но она находится в Boost и может сэкономить вам 3 часа работы разработчика на 10000 строк типа кода аргументов . - person DVK; 17.09.2009

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

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

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

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

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

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

person Luc Hermitte    schedule 17.09.2009

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

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

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

person snowdude    schedule 17.09.2009
comment
Ага. Вот против чего я выступаю - философии разработки (вполне правильной для нашей компании) Don't Fix It If Ain't Broke. Это отлично подходит для разработки стабильного кода, но требует двойных усилий, чтобы представить что-то новое и захватывающее, когда это того стоит. - person DVK; 17.09.2009

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

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

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

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

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

person Inverse    schedule 18.09.2009