Ламерские вопросы к уважаемым коллегам, особливо к тем кто часто рекомендует воспользоваться мощью этой прекрасной библиотеки
1. вы используете эту библиотеку в ваших проектах? ( проекты хелоу уорд и все что не продается и не сопровождается хотя бы 2-3 программистами в течение хотя бы 2-3 лет -- это проект для дома для души, для шаравар ...etc, в лучшем случае это "крутая" дипломная работа — пятак обеспечен и так, за крутизну — никто не ничего поймет, а выдать себя в незнании буста никто не решиться)
2. Для тех кто реально использует эту библитеку (см п.1)-
— вопрос: что именно вы используете? парсите строку при помощи буста, потому что это модно? или вы собрали свой язык и прикрутили его к соей программе, или это что-то другое. Поделитесь, пожалуйста, своим опытом — очень интересно. Собственно, ЭТО ГЛАВНЫЙ ВОПРОС — ответье на него, не посылаете на бам
3. Я понимаю, что это "язык будующего", а я в теориях слаб.
— вопрос: увеличит ли скорость и качество разработки программого обеспечения если освоить эту новую технологию ( я это вот к чему — многие на РСДНе уже утверждают что де-юре буст будет включен в стандарт С++, а следовательно его нужно знать сегодня)
17.10.04 22:19: Перенесено модератором из 'Средства разработки' — Павел Кузнецов
Здравствуйте, peterbes, Вы писали:
P>1. вы используете эту библиотеку в ваших проектах?
Используем в крупном проекте.
P>2. Для тех кто реально использует эту библитеку (см п.1)- P> — вопрос: что именно вы используете? парсите строку при помощи буста, потому что это модно? или вы собрали свой язык и прикрутили его к соей программе, или это что-то P> другое. Поделитесь, пожалуйста, своим опытом — очень интересно. Собственно, ЭТО ГЛАВНЫЙ ВОПРОС — ответье на него, не посылаете на бам
Используем:
boost::bind — очень удобно, но в исходниках этой библиотеки чёрт ногу сломит.
boost::mpl — для любителей метапрограммирования, хотя если её неумеренно использовать, то можно нарваться на неприятности
Ещё мне нравится boost::iterator — очень удобно, хотя в проекте пока не используем.
Не используем:
boost::spirit лучше не использовать, повсюду в инете пишут, что с ним много проблем.
boost::signal — пробовали использовать, но потом отказались и написали свой велосипед, который хоть и не крутой, но, в отличие от boost::singal, нормально едет.
boost::smart_ptr — лично мне больше нравятся умные указатели от Александреску.
Создаётся впечатление (и не только у меня), что в boost некоторые вещи, которые можно сделать просто и понятно, делают слишком сложно. Частично это происходит из-за поддержки большого количества компиляторов. В связи с этим можно посмотреть TTL, где некоторые аналогичные концепции реализуются просто, но только для VC 7.1 и GCC.
Здравствуйте, peterbes, Вы писали:
P>2. Для тех кто реально использует эту библитеку (см п.1)- P> — вопрос: что именно вы используете? парсите строку при помощи буста, потому что это модно? или вы собрали свой язык и прикрутили его к соей программе, или это что-то другое. Поделитесь, пожалуйста, своим опытом — очень интересно. Собственно, ЭТО ГЛАВНЫЙ ВОПРОС — ответье на него, не посылаете на бам
Буст -- очень полезная и удобная библиотека, к тому же очень большая, всего не использую, но вот что сразу подошло и вообще суперудобно: shared_ptr -- смарт-поинтер, с его помощью удобно указатели на что-то в стандартных контейнерах хранить; function и bind -- мощнейшие вещи, чтобы раз и навсегда забыть о сложностях с адаптированием функций для колбэков и стандратных алгоритмов.
Здравствуйте, What, Вы писали:
W>boost::spirit лучше не использовать, повсюду в инете пишут, что с ним много проблем.
spirit нечто среднее по возможностям между регулярными выражениями и нормальными синтаксическими анализаторами
типа YACC и ANTLR.Минусы —
1.нет диагностики время разбора из-за backtraking становится слишком большим
2.сложность реализации (ну не сложная эта штука LL(inf) )
3.низкая скорость компиляции (до 30 сек на С-grammar (bison менее 1 сек) )
4.плохая поддержка компиляторов в последний версии
5.большой размер exe
6.невнятные сообщения о ошибках (error in boost::spirit<... 150 kByte...> )
Даже какой-то конкурирующий проект появился-hapy
The Hapy library would not exist if Spirit would generate correct parsers by default, had data-push parsing interface, could recognize valid message prefixes, and would not take unreasonable amount of compilation time and/or bleeding-edge C++ compilers. While the last flaw is likely to disappear according to Moore's law, key Spirit design choices would keep it inappropriate for parsing communication protocol messages, one of the primary use cases for the Hapy library.
Вообщем для фанатов метапрограммирования готовых ЛЮБУЮ задачу писать на С++.
И для которых код содержащий менее 30% слов template -вообще не С++.
Здравствуйте, peterbes, Вы писали:
P>Ламерские вопросы к уважаемым коллегам, особливо к тем кто часто рекомендует воспользоваться мощью этой прекрасной библиотеки
P>1. вы используете эту библиотеку в ваших проектах? ( проекты хелоу уорд и все что не продается и не сопровождается хотя бы 2-3 программистами в течение хотя бы 2-3 лет -- это проект для дома для души, для шаравар ...etc, в лучшем случае это "крутая" дипломная работа — пятак обеспечен и так, за крутизну — никто не ничего поймет, а выдать себя в незнании буста никто не решиться)
Используем в коммерческих продуктах.
P>2. Для тех кто реально использует эту библитеку (см п.1)- P> — вопрос: что именно вы используете? парсите строку при помощи буста, потому что это модно? или вы собрали свой язык и прикрутили его к соей программе, или это что-то другое. Поделитесь, пожалуйста, своим опытом — очень интересно. Собственно, ЭТО ГЛАВНЫЙ ВОПРОС — ответье на него, не посылаете на бам
Очень интенсивно используются shared_ptr/scoped_ptr.
Немного function/bind/mem_fn.
Остальное используется эпизодически.
P>3. Я понимаю, что это "язык будующего", а я в теориях слаб. P> — вопрос: увеличит ли скорость и качество разработки программого обеспечения если освоить эту новую технологию ( я это вот к чему — многие на РСДНе уже утверждают что де-юре буст будет включен в стандарт С++, а следовательно его нужно знать сегодня)
Так вот ты какая, серебрянная пуля!
shared_ptr позволяет сделать из C++ практически джаву. Хорошо это или плохо — мнения разделяются, но ошибок со сложными структурами и выделением/освобождением памяти становится на порядок меньше.
Здравствуйте, RealSonic, Вы писали:
RS>Здравствуйте, What, Вы писали:
W>>Не используем: W>>boost::spirit лучше не использовать, повсюду в инете пишут, что с ним много проблем.
RS>Не подскажете, чем можно заменить spirit? Кроме HAPY?
Здравствуйте, peterbes, Вы писали:
P>3. Я понимаю, что это "язык будующего", а я в теориях слаб. P> — вопрос: увеличит ли скорость и качество разработки программого обеспечения если освоить эту новую технологию ( я это вот к чему — многие на РСДНе уже утверждают что де-юре буст будет включен в стандарт С++, а следовательно его нужно знать сегодня)
boost уже сегодня устанавливается на линуксах вместе с g++. Я недавно хотел автоматический указатель. Сначала пришла мысль: auto_ptr. А потом: зачем маяться, когда boost::smart_ptr под рукой? Другой случай. Нужны мне были генератор случайных чисел. И что вы думаете? Конечно, опять-же boost. Вообщем, когда boost доступен безо всяких лишних телодвижений, много старых методов и подходов уже просто отходят на второй план, а потом и вовсе забываются.
Re: офтопик про буст
От:
Аноним
Дата:
20.10.04 20:29
Оценка:
Здравствуйте, peterbes, Вы писали:
P>Ламерские вопросы к уважаемым коллегам, особливо к тем кто часто рекомендует воспользоваться мощью этой прекрасной библиотеки
P>1. вы используете эту библиотеку в ваших проектах? ( проекты хелоу уорд и все что не продается и не сопровождается хотя бы 2-3 программистами в течение хотя бы 2-3 лет -- это проект для дома для души, для шаравар ...etc, в лучшем случае это "крутая" дипломная работа — пятак обеспечен и так, за крутизну — никто не ничего поймет, а выдать себя в незнании буста никто не решиться)
P>2. Для тех кто реально использует эту библитеку (см п.1)- P> — вопрос: что именно вы используете? парсите строку при помощи буста, потому что это модно? или вы собрали свой язык и прикрутили его к соей программе, или это что-то другое. Поделитесь, пожалуйста, своим опытом — очень интересно. Собственно, ЭТО ГЛАВНЫЙ ВОПРОС — ответье на него, не посылаете на бам
P>3. Я понимаю, что это "язык будующего", а я в теориях слаб. P> — вопрос: увеличит ли скорость и качество разработки программого обеспечения если освоить эту новую технологию ( я это вот к чему — многие на РСДНе уже утверждают что де-юре буст будет включен в стандарт С++, а следовательно его нужно знать сегодня)
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, peterbes, Вы писали:
P>>Ламерские вопросы к уважаемым коллегам, особливо к тем кто часто рекомендует воспользоваться мощью этой прекрасной библиотеки
P>>1. вы используете эту библиотеку в ваших проектах? ( проекты хелоу уорд и все что не продается и не сопровождается хотя бы 2-3 программистами в течение хотя бы 2-3 лет -- это проект для дома для души, для шаравар ...etc, в лучшем случае это "крутая" дипломная работа — пятак обеспечен и так, за крутизну — никто не ничего поймет, а выдать себя в незнании буста никто не решиться)
P>>2. Для тех кто реально использует эту библитеку (см п.1)- P>> — вопрос: что именно вы используете? парсите строку при помощи буста, потому что это модно? или вы собрали свой язык и прикрутили его к соей программе, или это что-то другое. Поделитесь, пожалуйста, своим опытом — очень интересно. Собственно, ЭТО ГЛАВНЫЙ ВОПРОС — ответье на него, не посылаете на бам
P>>3. Я понимаю, что это "язык будующего", а я в теориях слаб. P>> — вопрос: увеличит ли скорость и качество разработки программого обеспечения если освоить эту новую технологию ( я это вот к чему — многие на РСДНе уже утверждают что де-юре буст будет включен в стандарт С++, а следовательно его нужно знать сегодня)
Здравствуйте, peterbes, Вы писали:
P> — вопрос: увеличит ли скорость и качество разработки программого обеспечения если освоить эту новую технологию ( я это вот к чему — многие на РСДНе уже утверждают что де-юре буст будет включен в стандарт С++, а следовательно его нужно знать сегодня)
Ага, сильно увеличит, если ты в чужом проекте это увидел, а тебе это, причем наполовину рабочее, поднять надо
Здравствуйте, alexkro, Вы писали:
A>Другой случай. Нужны мне были генератор случайных чисел. И что вы думаете? Конечно, опять-же boost. Вообщем, когда boost доступен безо всяких лишних телодвижений, много старых методов и подходов уже просто отходят на второй план, а потом и вовсе забываются.
просто интересно чем это старый добрый rand() то не угодил?
Здравствуйте, c-smile, Вы писали:
CS>Здравствуйте, alexkro, Вы писали:
A>>Другой случай. Нужны мне были генератор случайных чисел. И что вы думаете? Конечно, опять-же boost. Вообщем, когда boost доступен безо всяких лишних телодвижений, много старых методов и подходов уже просто отходят на второй план, а потом и вовсе забываются.
CS>просто интересно чем это старый добрый rand() то не угодил?
Because I can! В данном случае rand() и boost/random — это всего лишь два разных библиотечных решения, и у rand() просто нет никакого приемущества перед boost/random. Что для использования rand() нужно меньше помнить, что можно просто написать код? Нет, мне и в том и в другом случае нужно смотреть документацию. rand() легче использовать, меньше кода писать? Нет, примерно столько-же. Кстати, для rand() мне пришлось бы отдельную функцию писать, или класс функтор, чтобы получить генератор в определенном диапазоне. rand() требует меньше телодвижений при компиляции и линковке? Опять-же нет, boost не требует никаких дополнительных телодвижений на моей системе. "А почему не rand()? А зачем?" — вот мой ответ.
Здравствуйте, alexeiz, Вы писали:
A>Because I can! В данном случае rand() и boost/random — это всего лишь два разных библиотечных решения, и у rand() просто нет никакого приемущества перед boost/random. Что для использования rand() нужно меньше помнить, что можно просто написать код? Нет, мне и в том и в другом случае нужно смотреть документацию. rand() легче использовать, меньше кода писать? Нет, примерно столько-же. Кстати, для rand() мне пришлось бы отдельную функцию писать, или класс функтор, чтобы получить генератор в определенном диапазоне. rand() требует меньше телодвижений при компиляции и линковке? Опять-же нет, boost не требует никаких дополнительных телодвижений на моей системе. "А почему не rand()? А зачем?" — вот мой ответ.
В своем проекте, на выходе которого имеется чистый исполняемый бинарник — пожалуйста, хоть черта лысого можно прикрутить. Но использовать boost/random там, где это критично с точки зрения использования исходников и другими людьми, и только лишь потому что "а вот" — это большая глупость, и я бы сказал, самодурство. Нафига лишние зависимости, если без каких либо усилий можно обойтись без них?
Другое дело, что boost/random может быть в чем-то лучше rand(). Это уже мотивация. А "просто так, Because I can" — это дурь.
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Здравствуйте, McSeem2, Вы писали:
MS>Здравствуйте, alexeiz, Вы писали:
A>>Because I can! В данном случае rand() и boost/random — это всего лишь два разных библиотечных решения, и у rand() просто нет никакого приемущества перед boost/random. Что для использования rand() нужно меньше помнить, что можно просто написать код? Нет, мне и в том и в другом случае нужно смотреть документацию. rand() легче использовать, меньше кода писать? Нет, примерно столько-же. Кстати, для rand() мне пришлось бы отдельную функцию писать, или класс функтор, чтобы получить генератор в определенном диапазоне. rand() требует меньше телодвижений при компиляции и линковке? Опять-же нет, boost не требует никаких дополнительных телодвижений на моей системе. "А почему не rand()? А зачем?" — вот мой ответ.
MS>В своем проекте, на выходе которого имеется чистый исполняемый бинарник — пожалуйста, хоть черта лысого можно прикрутить.
В том и дело, что черта нужно еще прикручивать. А boost он и так прикручен, использование его ничем не отличается от использования стандартной библиотеки C++ или C в моем случае.
>Но использовать boost/random там, где это критично с точки зрения использования исходников и другими людьми, и только лишь потому что "а вот" — это большая глупость, и я бы сказал, самодурство. Нафига лишние зависимости, если без каких либо усилий можно обойтись без них?
MS>Другое дело, что boost/random может быть в чем-то лучше rand(). Это уже мотивация. А "просто так, Because I can" — это дурь.
А допустим уже есть зависимость от boost. Тогда что скажешь? Все равно rand?
Здравствуйте, alexeiz, Вы писали:
CS>>просто интересно чем это старый добрый rand() то не угодил?
A>Because I can! ...
Хм... я например могу побыстрому соорудить скажем нечто с соплом Лаваля на конце.
Но это не повод вствавлять это изделие со всеми причтитающимися деталями в calculator.exe.
"Умерщвление пернатыхъ методомъ стрельбы по онымъ главным калибромъ Флота Его Императорского Величеситва дредноута 'Императрица Мария'"
П-р-р-р-актик.
WinAmp, now playing:
"Sir Occam is sharpening his Razor"
Здравствуйте, c-smile, Вы писали:
CS>Здравствуйте, alexeiz, Вы писали:
CS>>>просто интересно чем это старый добрый rand() то не угодил?
A>>Because I can! ...
CS>Хм... я например могу побыстрому соорудить скажем нечто с соплом Лаваля на конце.
Это от того, что ты считаешь boost неимоверно продвинутой библиотекой, нечто непонятное и недоступное нормальным людям.
CS>Но это не повод вствавлять это изделие со всеми причтитающимися деталями в calculator.exe.
CS>"Умерщвление пернатыхъ методомъ стрельбы по онымъ главным калибромъ Флота Его Императорского Величеситва дредноута 'Императрица Мария'"
CS>П-р-р-р-актик.
Здравствуйте, alexeiz, Вы писали:
MS>>Другое дело, что boost/random может быть в чем-то лучше rand(). Это уже мотивация. А "просто так, Because I can" — это дурь.
A>А допустим уже есть зависимость от boost. Тогда что скажешь? Все равно rand?
А это уже "будем посмотреть". Если, к примеру, мне не требуется ничего кроме функциональности rand(), то именно его я задействую. Так компилируется быстрее
Я сотрудничаю с Эриком Джонсом, приятелем Дейва Абрахамса, и как-то спросил его, почему они используют SWIG а не boost/python для взаимодействия между Питоном и C++. Причнины следующие:
1. Низкая надежность, слишком много проблем с разными компиляторами и платформами.
2. Монстрообразность получаемого кода. Можно, конечно, "доработать напильником", но это требует слишком больших усилий.
3. Время компиляции находится далего за предемами допустимого.
Основной принцип грамотного инженерного подхода — "без фанатизма". В бусте очень много ненужного мусора. Ну вот зачем в кватернионе код сериализации в ASCII? Причем, он весьма узкоспециализирован, следовательно, практически бесполезен. Но при этом тянет за собой тонну зависимостей, только лишь для того, что кому-то зачем-то надо реализовать потоковые оператоты. Все это для меня и для 99% других людей — мусор. И так практически во всем бусте. Слишком много "фанатизма". Слишком.
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Здравствуйте, McSeem2, Вы писали:
MS>Здравствуйте, alexeiz, Вы писали:
MS>>>Другое дело, что boost/random может быть в чем-то лучше rand(). Это уже мотивация. А "просто так, Because I can" — это дурь.
A>>А допустим уже есть зависимость от boost. Тогда что скажешь? Все равно rand?
MS>А это уже "будем посмотреть". Если, к примеру, мне не требуется ничего кроме функциональности rand(), то именно его я задействую. Так компилируется быстрее
Ничего, кроме генерирования чисел в диапазоне 0..MAX_RAND? Сколько я помню, мне всегда дополнительный класс писать приходилось для работы с rand.
MS>Я сотрудничаю с Эриком Джонсом, приятелем Дейва Абрахамса, и как-то спросил его, почему они используют SWIG а не boost/python для взаимодействия между Питоном и C++. Причнины следующие: MS>1. Низкая надежность, слишком много проблем с разными компиляторами и платформами. MS>2. Монстрообразность получаемого кода. Можно, конечно, "доработать напильником", но это требует слишком больших усилий. MS>3. Время компиляции находится далего за предемами допустимого.
Многим этот boost/python нафиг не сдался. Что этим ты хотел сказать: либо всё из boost'а, либо ничего?
MS>Основной принцип грамотного инженерного подхода — "без фанатизма". В бусте очень много ненужного мусора. Ну вот зачем в кватернионе код сериализации в ASCII? Причем, он весьма узкоспециализирован, следовательно, практически бесполезен. Но при этом тянет за собой тонну зависимостей, только лишь для того, что кому-то зачем-то надо реализовать потоковые оператоты. Все это для меня и для 99% других людей — мусор. И так практически во всем бусте. Слишком много "фанатизма". Слишком.
Не нравится кватерион, не используй его. Никаких зависимостей не внесешь. Согласен, что в boost'е есть и неудачный код. Но это не значит, что нужно игнорировать и очень качественный код из boost'а. Это всего лишь еще одно проявление фанатизма.