sc>Буст — это набор библиотек. И никто не заставляет использовать все. Я использую только те, которые нужны. И помогает мне в этом утилитка bcp. Она умеет "выгрызать" только необходимые библиотечки. sc>Теперь меняем стереотипы sc>Universal Superlibrary -> Bundle of simple and sufficient libraries
Простые либы и Boost — это две большие разницы. Некоторые либы в бусте — просто монстры по сложности
sc>All Things to All Men -> Take only what you need
Возьми одну либу — подключи двадцать либ от которых она зависит.
Здравствуйте, nen777w, Вы писали:
N>Я его использую и очень активно, в своих собственных проектах, потому как эта вещица!!... ну вы знаете
Это, блин, прям смесь фетишизма и эксбиционизма в одном флаконе. Похоже, что boost -- не технический инструмент, а объект религиозного поклонения.
Почему люди считают нужным заявлять "Я использую Boost!", тогда как заявлений "Я использую ACE!" или "Я использую Poco!" не видать? Или использование Boost это как обряд инициации -- все, мол, не девственник я уже, но мужик?
N>В каждой конторе есть гуру, которому все верят и вот приходит человек горит, эй! давайте boost использовать будем, это ведь так и так и сяк, нам поможет, гуру косо посмотрит, потом одним глазом доку по бусту на искосок просмотрит и скажет... не фигня... тут можно обойтись этим и этим.
Да все еще проще -- гуру, особенно старые, которые начинали двадцать-пятнадцать лет назад, они же C++а-то нормального и не видели. То шаблонов там не было, то исключений, то были но кривые, то компиляторы глючные, то C++ники к ним в команду попадались такие, что проще пристрелить было, чем руки вправить. Багов им пришлось выловить множество из-за "красивого" кода, поэтому понятие прекрасного у них извращенное. Вот и остались они все такие неграмотные-неграмотные, зашоренные-зашоренные. Да еще все высокомерные, мол че вы, молодая милюзга, со своим boost-ом причапилися? Мы без него на перфокартах дырдочки пробивали и сейчас обойдемся.
Мне кажется, что такая точка зрения гораздо приятнее для любителей буста, чем доводы, что Boost -- это:
— охринительного размера архив;
— что библиотеки в нем все слеплены вместе. И если нужна одна-единственная библиотека, то нужно вручную вырезать ее из Boost-а через scp (и делать это потом регулярно);
— что в дебрях Boost-а полно шаблонов и #if-ов (для преодоления кривости компиляторов) и что нужно иметь большой опыт в C++, чтобы в случае необходимости забраться туда и понять, падает ли программа из-за Boost-а или из-за чего-то еще;
— что кроме Boost-а есть другие библиотеки, как общего назначения, так и специализированные. И как следствие, для некоторых вещей из Boost-а можно найти очень достойную альтернативу, которая и меньше, и проще, и обновляется быстрее (например, boost vs pcre для регулярных выражений);
— что часть вещей Boost-а, которые широко используются (например, shared_ptr) уже есть в других библиотеках (например, аналоги shared_ptr есть ACE, в Loki, в Poco). Поэтому, если в проекте уже используется другая большая библиотека (ACE или Poco), то не так уж хочется тянуть в него еще одну еще большую из-за пары рюшечек;
— что в Boost-е многого нет. Например, средства работы с XML. Тогда как в других фреймворках (Poco, Qt) есть.
N>Вот и нет продвижения для такой классной либы.
И поэтому целью жизни должна стать ее популяризация
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
N>Я его использую и очень активно, в своих собственных проектах, потому как эта вещица!!... ну вы знаете
В бусте есть бриллианты, но их еще надо достать из гор навоза.
Либа очень противоречивая. Во первых нет четкого концепта что это такое.
Во вторых нет четкой идеологии развития, либа растет вширь неконтролируемо.
N>А не используют по контором мне кажется вот по какой причине. N>В каждой конторе есть гуру, которому все верят и вот приходит человек горит, эй! давайте boost использовать будем, это ведь так и так и сяк, нам поможет, гуру косо посмотрит, потом одним глазом доку по бусту на искосок просмотрит и скажет... не фигня... тут можно обойтись этим и этим.
Boost предоставляет достаточно тяжелые вещи и вызывает кучу зависимостей. Вот насколько увеличится время компиляции если вместо простых и компактных классов использовать универсальные аналоги из Boost?
Я не против Boost, я против его бездумного использования.
N>Я его использую и очень активно, в своих собственных проектах, потому как эта вещица!!... ну вы знаете N> Вот и нет продвижения для такой классной либы.
Здравствуйте, eao197, Вы писали:
E>Здравствуйте, sc, Вы писали:
sc>>Теперь меняем стереотипы sc>>Universal Superlibrary -> Bundle of simple and sufficient libraries
E>Это какая библиотека там simple?
Ну может реализация там и не простая, но использование большинства бустовских библиотек достаточно простое и удобное.
Здравствуйте, Handie, Вы писали:
H>И грамотно сформулированы за и против, очень убедительно и лаконично
Так блин, я же на boost смотрю года с 2002-го, если не с 2001. Несколько раз раньше мы всерьез обсуждали вопрос использования boost-а у себя, даже Boost.UnitTest использовали где-то в 2004-2005 гг. Вначале останавливало неважное качество документации и отсутствие на платформах, которые тогда нам нужны были. А потом как-то привыкли к другим фреймворками/библиотекам и надобности особой в Boost-е просто не возникает.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, Handie, Вы писали:
sc>>Буст — это набор библиотек. И никто не заставляет использовать все. Я использую только те, которые нужны. И помогает мне в этом утилитка bcp. Она умеет "выгрызать" только необходимые библиотечки. sc>>Теперь меняем стереотипы sc>>Universal Superlibrary -> Bundle of simple and sufficient libraries
H>Простые либы и Boost — это две большие разницы. Некоторые либы в бусте — просто монстры по сложности
Это они внутри, а снаружи белые и пушистые Никто ведь не заставляет лезть внутрь. По аналогии с автомобилем. Раньше они были простые. Не едет, открыл капот, поковырялся и поехал. Сейчас только звонок в автосервис и на эвакуатор. Хрен там внутри разберешься. И тем не менее все предпочитают современные авто, а не москвич 412.
sc>>All Things to All Men -> Take only what you need
H>Возьми одну либу — подключи двадцать либ от которых она зависит.
Ну и ладно. Взял я, например, смарт-пойнтеры и байнды, для начала, вытащил bcp-шкой в отдельный каталог и юзаю их на здоровье. И мне все равно, сколько там еще подцепилось, 10 или 20 хедеров.
Ну в принципе любое мнение имеет право на существование, и если для кого-то критично кол-во хэдеров, то тогда буст ему не подходит.
(пытаюсь не дать разгореться пламени флейма и дыма оффтопика )
sc>Ну может реализация там и не простая, но использование большинства бустовских библиотек достаточно простое и удобное.
— Сложные либы в виде хедеров увеличивают время компилляции, прекомпал хедеры помогают, но не всегда
— Многие либы тянут вереницу зависимостей, что раздувает репозитарий. Я не считаю нормальным выделять 100 мегабайт кода для проекта который может уместиться в 10 Mb с использованием более простых либ
— Да, в Boost тоже есть баги.
— Обновление либ такого объема — еще та радость
— Далеко не все либы в boost хорошего качества
К примеру — я посмотрел регулярные выражения в boost и взял TRE (TRE is a lightweight, robust, and efficient POSIX compliant regexp matching library with some exciting features such as approximate (fuzzy) matching). 400kb без внешних зависимостей и куча платформ.
Взяв 3-4 библиотки которые мне нужны я получил все что мне надо
nen777w пишет: > > А не используют по контором мне кажется вот по какой причине. > В каждой конторе есть гуру, которому все верят и вот приходит человек > горит, эй! давайте boost использовать будем, это ведь так и так и сяк, > нам поможет, гуру косо посмотрит, потом одним глазом доку по бусту на > искосок просмотрит и скажет... не фигня... тут можно обойтись этим и этим.
А бывает и наоборот.
Здравствуйте, eao197, Вы писали:
E>- охринительного размера архив; E>- что библиотеки в нем все слеплены вместе. И если нужна одна-единственная библиотека, то нужно вручную вырезать ее из Boost-а через scp (и делать это потом регулярно);
Почему это вас так волнует? Я рассматриваю буст как обязательную часть оснащения машины С++-разработчика, и при нынешних размерах жесткого диска и толщины каналов в интернет -- в чём тут вообще проблема? Вы же поди не плачете из-за того, что студия занимает на диске 2-3 гига?
Здравствуйте, skeptik_, Вы писали:
E>>- охринительного размера архив; E>>- что библиотеки в нем все слеплены вместе. И если нужна одна-единственная библиотека, то нужно вручную вырезать ее из Boost-а через scp (и делать это потом регулярно);
_>Почему это вас так волнует? Я рассматриваю буст как обязательную часть оснащения машины С++-разработчика, и при нынешних размерах жесткого диска и толщины каналов в интернет -- в чём тут вообще проблема? Вы же поди не плачете из-за того, что студия занимает на диске 2-3 гига?
У нас принята система, в которой использованные в проектах 3rd-party библиотеки размещаются в репозитории. Это дает возможность извлечь конкретную версию конкретного проекта с теми версиями сторонних библиотек, которые использовались на момент фиксации версии. А когда делаешь checkout какого-нибудь проекта, а он затем начинает тянуть за собой десятки мегабайт архивов, которые затем еще и долго и мучительно компилируются, то начинаешь ценить минимализм зависимостей.
Впрочем, если иметь на машине всего одну студию, один буст и работать над одним проектом для одной платформы, то всех прелестей можно не оценить. Тут согласен.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, eao197, Вы писали:
E>Впрочем, если иметь на машине всего одну студию, один буст и работать над одним проектом для одной платформы, то всех прелестей можно не оценить. Тут согласен.
А не получается ли то что вы СВОИ технические проблемы переностите на библиотеку ?
Здравствуйте, Handie, Вы писали:
H>Ну например мне он кажется "тяжелым". В прямом смысле. ZIP весит 44 мегабайта, в распакованном виде — больше 100MB. H>Делать лишний депенденси на 100 мегабайт — это я так понимаю — профессиональное решение? У меня проект со всеми внешними либами лезет в 5-6 мегабайт и буста в нем не будет.
~ :) du -c /usr/lib/libboost_*-gcc41{,-mt}-1_34_1.* | tail -n 1
24382 total
Не топикстартер виноват, что в MS Windows это же занимает 621638 КБ, используйте правильные ОС.
А тем более в архивах:
for pkg in $(apt-cache search libboost | awk '{ print $1; }')
do
echo "[tr][td]$(apt-cache show $pkg | egrep '^Size:' | head -n 1 | awk '{ print $2; }')[/td][td]${pkg}[/td][/tr]"
done
Размер,
байт
Пакет
46121532
libboost-dbg
1932116
libboost-dev
9268976
libboost-doc
368768
libboost-python-dev
199602
libboost-python1.34.1
182014
libboost-date-time-dev
56790
libboost-date-time1.34.1
80496
libboost-filesystem-dev
55748
libboost-filesystem1.34.1
508518
libboost-graph-dev
252322
libboost-graph1.34.1
128294
libboost-iostreams-dev
45066
libboost-iostreams1.34.1
271540
libboost-program-options-dev
190290
libboost-program-options1.34.1
1062616
libboost-regex-dev
550924
libboost-regex1.34.1
622362
libboost-serialization-dev
415554
libboost-serialization1.34.1
87640
libboost-signals-dev
69724
libboost-signals1.34.1
455970
libboost-test-dev
235016
libboost-test1.34.1
46036
libboost-thread-dev
37000
libboost-thread1.34.1
829808
libboost-wave-dev
468098
libboost-wave1.34.1
Кто здесь самый большой? Boost.Regex. Т. е., поставил в зависимость libboost-regex, менеджеру пакетов клиента придется (о ужас!) загрузить полмегабайта пакета с библиотеками.
В MS Windows, кстати, можно переполовинить библиотеки Boost, заменив копии на симлинки (если они есть в вашей любимой ФС, конечно). Остальной размер, наверное, происходит из-за статической линковки чего-нибудь.
E>Почему люди считают нужным заявлять "Я использую Boost!", тогда как заявлений "Я использую ACE!" или "Я использую Poco!" не видать? Или использование Boost это как обряд инициации -- все, мол, не девственник я уже, но мужик?
Использование boost — это отличие новичка от профессионала. Студенты еще слабо знакомы с языком, они знают минимум и на большее, чем на изобретение велосипедов из подручных средств не способны (сам был таким). Зрелые разработчики останивились в своем развитии и ничего нового изучать не хотят. Да и зачем им это надо. Дифицит программистов на рынке ух какой! Профессионалам же надо разрабатывать коммерческие системы в сжатые сроки с минимумом ресурсов и у них просто нет времени писать свой велосипед. Boost — это яркий пример библиотеки общего использования, который и дает строительные блоки для современных сложных систем.
E>Мне кажется, что такая точка зрения гораздо приятнее для любителей буста, чем доводы, что Boost -- это: E>- охринительного размера архив;
У вас все еще диалап? Или Поиск-1? Тогда мы к вам идем E>- что библиотеки в нем все слеплены вместе. И если нужна одна-единственная библиотека, то нужно вручную вырезать ее из Boost-а через scp (и делать это потом регулярно);
Нафиг надо. E>- что в дебрях Boost-а полно шаблонов и #if-ов (для преодоления кривости компиляторов) и что нужно иметь большой опыт в C++, чтобы в случае необходимости забраться туда и понять, падает ли программа из-за Boost-а или из-за чего-то еще;
Я легко могу вычленить код для моего компилятора, если вы — нет, то это ваша проблема. К тому же доки никто не отменял.
Более того, в бусте уже пройдены подводные камни, а в ваших велосипедах — нет. E>- что кроме Boost-а есть другие библиотеки, как общего назначения, так и специализированные. И как следствие, для некоторых вещей из Boost-а можно найти очень достойную альтернативу, которая и меньше, и проще, и обновляется быстрее (например, boost vs pcre для регулярных выражений);
Ну и что? Boost запрещает это использовать? E>- что часть вещей Boost-а, которые широко используются (например, shared_ptr) уже есть в других библиотеках (например, аналоги shared_ptr есть ACE, в Loki, в Poco). Поэтому, если в проекте уже используется другая большая библиотека (ACE или Poco), то не так уж хочется тянуть в него еще одну еще большую из-за пары рюшечек;
А использовать можно только то, что надо. Boost не требует использовать все классы во всех либах. E>- что в Boost-е многого нет. Например, средства работы с XML. Тогда как в других фреймворках (Poco, Qt) есть.
Ну так и используйте! Boost вам не мешает.
Что за мания все резать? Вы когда ставите операционку, то удаляете все лишние сервисы, ослика и прочую бесплатную лабуду в придачу? Если не надо, то пусть себе валяется, нафига заморачиватся по пустякам. В бусте все используемые в проекте либы можно отследить по инклудам.
Кстати, CRT и STL — тоже по вашим меркам гигантские библиотеки. Давайте вы их тоже в топку выкините и будете писать прямые инструкции процессору (Привет фанатам ассемблера).
E>У нас принята система, в которой использованные в проектах 3rd-party библиотеки размещаются в репозитории. Это дает возможность извлечь конкретную версию конкретного проекта с теми версиями сторонних библиотек, которые использовались на момент фиксации версии. А когда делаешь checkout какого-нибудь проекта, а он затем начинает тянуть за собой десятки мегабайт архивов, которые затем еще и долго и мучительно компилируются, то начинаешь ценить минимализм зависимостей.
Третьесторонние либы не поддарются версионному контролю. При необходимости есть в интернете репозитории с необходимыми версиями. Для размещения либ достаточно файлового сервера, на котором с исходиниками можно и разместить откомпилированные lib файлы. А превращать хранилище исходных кодов в файловую помойку не вижу смысла. Тогда уже туда надо запихнуть образы тестовых серверов на момент тестирования, базы данных от заказчиков с багами и кучу всякого мусора .
Хранилище нужно для файлов, которые вы изменяете, а не для сторонних либ, которые вы не трогаете. Вот вам хранилище буста: http://svn.boost.org/svn/boost. Используйте его и не изобретайте велосипед.
А по поводу "минимализма зависимостей": уж поверте, что лучше зависеть от буста, чем от самописной приблуды коллеги без нормальной документации и кучей неявных условностей и багов, которая "упрощает" жизнь давая пару рюшечек в проект. Boost — это мощь, а велосипеды — это жалкая попытка добится этой мощи.
Boost — это почти стандарт. Много библиотек от туда попадут в следующий стандарт С++ и хотите вы этого или нет, но у всех разработчиков будет возможность его использовать в новых компиляторах за пару лет.
Здравствуйте, oncer, Вы писали:
O>По поводу нас: думаю многие не используют Буст просто потому, что он им кажется тяжелым (слабенькие спецы). Думаю что чтоб юзать Буст нужен неплохой уровень знания языка и теории (смарт поинтеры , функторы, и т.д. ).
Многие не используют Буст потому что они понимают, что чтоб юзать Буст нужен очень неплохой уровень знания языки и теорииу всех программистов в компании, что очень редко достижимо. Нафиг-нафиг.
Здравствуйте, zakima, Вы писали:
Z>Здравствуйте, oncer, Вы писали:
O>>По поводу нас: думаю многие не используют Буст просто потому, что он им кажется тяжелым (слабенькие спецы). Думаю что чтоб юзать Буст нужен неплохой уровень знания языка и теории (смарт поинтеры , функторы, и т.д. ).
Z>Многие не используют Буст потому что они понимают, что чтоб юзать Буст нужен очень неплохой уровень знания языки и теорииу всех программистов в компании, что очень редко достижимо. Нафиг-нафиг.
Для чего? Чтобы lexical_cast или shared_ptr заюзать?
Здравствуйте, astral_marine, Вы писали:
_>Хранилище нужно для файлов, которые вы изменяете, а не для сторонних либ, которые вы не трогаете. Вот вам хранилище буста: http://svn.boost.org/svn/boost. Используйте его и не изобретайте велосипед.
Именно! А вот здесь http://svn.boost.org/svn/boost/tags/release лежат все версии.