Russian Qt Forum

Разное => Говорилка => Тема начата: Пантер от Сентябрь 02, 2010, 12:58



Название: В чем профит буста или как его готовить?
Отправлено: Пантер от Сентябрь 02, 2010, 12:58
После многочисленных криков одного человека о том, что "Кьют говно, а буст это круто", решил пощупать данную вещь. Собрать под масдаем получилось почти сразу, только нашел в инете какой-то фак по этому (на оффсайте не нашел руководства по сборке, может, плохо искал). Вот что сразу не понравилось:
1. Не нашел книг по бусту.
2. В документации ничего не могу понять. Какая-то она неадекватная. Может, просто настроиться на нее нужно?
Взял, реальную задачу, которую уже решал при помощи stl и Qt. В задаче требовалась работа с ФС. Подключил boost::filesystem, написал прогу и отгреб следующие нехорошести:
1. Исключения, которые пришлось перехватывать через try/catch. Не нашел как от них отказаться.
2. Ограничение на длину имени файла как и в stl, что очень огорчило.

В общем, по работе с ФС буст сливает Кьюту по-полной. Поправьте, если я не верно понял. Так в чем его профит? И если профит есть, то как нужно подходить к его изучению.

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


Название: Re: В чем профит буста или как его готовить?
Отправлено: Wicked_Digger от Сентябрь 02, 2010, 13:31
Мне кажеться, что выбор фреймворка зависит от задачи и ее масштабов.
Я вижу это так:
- если проект небольшой и имеет гуй, то достаточно Qt.
- если проект небольшой и без гуя, то Qt избыточен, лучше boost использовать.
- если проект большой, проектируется с расчетом на длительный жизненный цикл, имеет гуй, то лучше использовать оба, для ябра проекта boost (в любом случае придется писать дофига своего, или использовать 3-rd party компоненты), для гуя Qt (опять-же для некоторых платформ придется использовать что-то другое).


Название: Re: В чем профит буста или как его готовить?
Отправлено: kuzulis от Сентябрь 02, 2010, 13:41
Не знаю зачем буст нужен, но таки оазработчики KDE прикручивают к нему помимо Qt еще и Boost. По крайней мере у меня в лине по зависимостям так и выходит. Не знаю чем им Qt не устроил. Зачем в кучу все мешать то.. :(


Название: Re: В чем профит буста или как его готовить?
Отправлено: serg_hd от Сентябрь 02, 2010, 13:50
Тоже буст пробовал, но даже он не идеален. Скачал самую новую версию, при статической линковке код с boost_thread не компилился, с динамической всё ок. Такую же проблему нашёл на другом форуме (как вариант решения - более ранние версии), т.е. этот факт особо не впечатлил. Использовать в деле его не пробовал, так как нет пока нужды (проектов подходящего масштаба нет), но проверить связку boost+Qt хотелось бы.


Название: Re: В чем профит буста или как его готовить?
Отправлено: Sancho_s_rancho от Сентябрь 02, 2010, 14:00
1. На русском почти нет, на англицком - имеется.
2. Качество документации разнится в зависимости от автора. Часть мне показалась не очень приятной для восприятия, какой-то формальной. Да и разные части буста несут разную смысловую нагрузку. Смысл этой штуки http://www.boost.org/doc/libs/1_44_0/doc/html/tribool.html мне вообще непонятен (я думаю, что программист такую логику сам в состоянии налабать).
Исключения - дело вкуса. Я считаю, что реализация в с++ невкусная. Отказаться от них ,на сколько я знаю, нельзя (хотя если глобальный catch считать отказом, то можно).
Единственный профит - там есть такие штуки, которых нет в Qt (asio, crc, bind, GIL, math, spirit, uBLAS и др.).
Если какой-то неадекват говорит, что Qt говно, а boost рулит, то пусть пишет кроссплатформенный гуй на boost. Но ежели ,к примеру, вам нужно парсить что-то нетривиальное, то почему не взять Boost Spirit?


Название: Re: В чем профит буста или как его готовить?
Отправлено: BlackTass от Сентябрь 06, 2010, 15:36
По поводу фс и буста. В свое время нужно было быстро работать с файловой системой (построение дерева каталогов и файлов). Сначала пробовали стандартные кьютовые модели, потом слегка их покастомизировали, в итоге написали на бусте. Прирост скорости решения на бусте примерно 100-150 процентов.


Название: Re: В чем профит буста или как его готовить?
Отправлено: vipet от Сентябрь 06, 2010, 18:29
Новый стандарт С++ читали? Там много именно из буста взято.

VS 2010 уже кстати поддерживает новые фишки, в частности по параллельному выполнению есть простой синтаксис. Используется Intel TBB, afair


Название: Re: В чем профит буста или как его готовить?
Отправлено: Sancho_s_rancho от Сентябрь 06, 2010, 18:57
Новый стандарт С++ читали? Там много именно из буста взято.

VS 2010 уже кстати поддерживает новые фишки, в частности по параллельному выполнению есть простой синтаксис. Используется Intel TBB, afair
Помню пробегался глазами по драфту и никакого параллельного программирования с простым синтаксисом там небыло. Из буста в стандарт взято немного. Чтобы хоть когда-то принять стандарт они повыкидывали почти все. Хотя много/мало понятие относительное. Для кого-то умные указатели+пара контейнеров+еще что-то - это много, для кого-то - не очень.


Название: Re: В чем профит буста или как его готовить?
Отправлено: Wicked_Digger от Сентябрь 06, 2010, 19:18
Новый стандарт С++ читали? Там много именно из буста взято.

Стандарт и старый то не реализовывася в промышленных компиляторах полностью (раздельная компиляция теплейтов например), так что ждать реализации нового можно еще долго :(


Название: Re: В чем профит буста или как его готовить?
Отправлено: vregess от Сентябрь 06, 2010, 20:06
Книга по бусту есть.
Björn Karlsson. Beyond the C++ Standard Library: An Introduction to Boost
Если не найдешь, могу скинуть.

Стандартная документация хорошо описывает API, но не всегда очевидно где что применить.

Относись к boost, как к дополнению к стандартной библиотеки с++. Ну и с Qt сравнивать вроде как не корректно.
Чтобы нормально ориентироваться в нем (ну или в большей его части), надо разбираться в шаблонах.
Например boost.spirit писали инопланетяне имхо. Поражает, что все это написано на шаблонах.

Если ищешь, где его заюзать в Qt проекте, то, наверное, единственное адекватное место - это ядро проекта (если разделять проект на GUI и core, как сказал выше Wicked_Digger).

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

Например smart_ptr - коллекция умных указателей, может пригодиться.
Или boost.asio для работы с сетью.
Есть там реализация foreach циклов, но в Qt это тоже есть.
boost.test для тестирования.
boost.string_algo значительно расширит возможности по работе со строками, правда есть QString...
boost.spirit - фреймворк для реализации всяческих парсеров. Можно использовать вместо всяких bison/flex и тд.
Вот внезапно понадобится тебе скриптовый движок для своего DSL - boost.spirit ну и boost.wave мб.
Итераторы всякие.
В общем заходишь в раздел Libraries и там написано, что есть в boost.
Дофига там всего. Полезная штука.

Я вот посмотрел в дистрибутиве boost 1.41
Есть boost_1_41_0/more/getting_started/index.html Может поможет.

А вообще там примеры еще есть.
Хедеры в boost_1_41_0/boost, а примеры и некоторая документация в boost_1_41_0/libs

Посмотри еще раздел Tools в доках. Там есть полезная (если использовать boost) утилита bcp.


Название: Re: В чем профит буста или как его готовить?
Отправлено: alexcpp от Декабрь 19, 2010, 01:05
Тоже буст пробовал, но даже он не идеален. Скачал самую новую версию, при статической линковке код с boost_thread не компилился, с динамической всё ок. Такую же проблему нашёл на другом форуме (как вариант решения - более ранние версии), т.е. этот факт особо не впечатлил. Использовать в деле его не пробовал, так как нет пока нужды (проектов подходящего масштаба нет), но проверить связку boost+Qt хотелось бы.
ВЫ лгун! Самого главного не упомянули! Что этапроблема только в виндоус.
А в списке рассылки буста, этому посвящена целая тема! И там объяснено почему и отчего эта проблема! И сказано что это изза версии mingw-runtime!
Уверен что вы лжец! Но возможно ошибаюсь и вы просто глупец!


Название: Re: В чем профит буста или как его готовить?
Отправлено: ufna от Декабрь 19, 2010, 01:10
alexcpp,
уйбейтесь, пожалуйса, об стену  ???


Название: Re: В чем профит буста или как его готовить?
Отправлено: alexcpp от Декабрь 19, 2010, 01:40
Пантер,
Цитировать
stl и Qt. В задаче требовалась работа с ФС
ПОкжите где в STL есть хоть чтото посвященое работе с ФС ???


Название: Re: В чем профит буста или как его готовить?
Отправлено: alexcpp от Декабрь 19, 2010, 01:41
alexcpp,
уйбейтесь, пожалуйса, об стену  ???
Most essential :D


Название: Re: В чем профит буста или как его готовить?
Отправлено: Пантер от Декабрь 20, 2010, 10:42
alexcpp, тебе предупреждение. Убери оскорбление из своего поста.
Пантер,
Цитировать
stl и Qt. В задаче требовалась работа с ФС
ПОкжите где в STL есть хоть чтото посвященое работе с ФС ???
Я имел ввиду стандартную библиотеку.


Название: Re: В чем профит буста или как его готовить?
Отправлено: serg_hd от Декабрь 20, 2010, 12:56
Уверен что вы лжец! Но возможно ошибаюсь и вы просто глупец!
Успокойтесь, сударь, на то время у меня ещё не было возможности проверить под gcc по простой причине отсутствия линуха на машине.

...И если профит есть, то как нужно подходить к его изучению....
тоже очень интересует именно этот момент


Название: Re: В чем профит буста или как его готовить?
Отправлено: fuCtor от Декабрь 23, 2010, 14:39
Вот внезапно понадобится тебе скриптовый движок для своего DSL - boost.spirit ну и boost.wave мб.

Тут альтернатива из мира Qt тоже есть, QtScript. Тут уже вопрос религии какой язык для написания скриптов использовать.


Название: Re: В чем профит буста или как его готовить?
Отправлено: serg_hd от Апрель 05, 2011, 18:41
И всё же, лично я, после некоторого ознакомление с буздом пришёл к заключению, что сложность документации напрямую зависит от автора. Т.е. нет "единого стандарта" оформления этой документации. Для сравнения - signals[2] (всё очень доступно и понятно, достаточное кол-во примеров, вобщем не хуже Qt'шного Assistant'a) и MetaStateMachine (разбираться надо долго и нудно). Хотя, свою лепту конечно вносит и самое предназначение (а поэтому и сложность) компонента.


Название: Re: В чем профит буста или как его готовить?
Отправлено: Fess от Апрель 06, 2011, 06:11
Писали проект в связке Qt с boost-ом..
Под конец возникло устойчивое ощущение, что гораздо лучше, проще и удобнее было бы написать все ТОЛЬКО на Qt. Обе библиотеки в значительной мере дублируют друг друга, отчего возникают лишние проблемы и коллизии.. Например, использование контейнеров в буст стиле в ядре проекта и Qt-контейнеров в интерфейсной части с постоянной необходимостью их преобразовывать. (Про танцы с бубном QString <-> wstring я промолчу..)
В общем, двойные стандарты ни к чему хорошему не приводят. Qt вполне самодостаточен, чтобы его разбавлять boost-ом. А если вдруг понадобится что-то, чего еще нет в Qt, то буст прикрутить никогда не поздно (или другую полезную библиотеку), использовать его просто потому что он "крут" уже не вижу смысла.
Еще можно добавить, что линковка буста скорости компиляции, мягко говоря, не добавляет.. Да и отладчик в QtCreator начинает путаться в ооогромной такой куче шаблонов :) На крупных проектах это особенно заметно.
Итого: Qt - ДА! boost - лучше не надо..


Название: Re: В чем профит буста или как его готовить?
Отправлено: Пантер от Апрель 06, 2011, 07:39
Цитировать
Еще можно добавить, что линковка буста скорости компиляции, мягко говоря, не добавляет
Шаблоны. :) Зато получаешь статический полиморфизм и профит на этапе выполнения.


Название: Re: В чем профит буста или как его готовить?
Отправлено: ecspertiza от Апрель 06, 2011, 08:39
На мой взгляд сравнивать эти две вещи уже странно немного :) Ведь Qt это изначально ГУЙ, а boost расширение стандартной библиотеки :) На boost есть много вкусностей например где то в сети встречал реализацию RPC. Из личного опыта, нужно было написать библиотеку которая должна была выполнять некоторые действия с сетью, библиотека должна была работать только под виндой, но я не очень люблю MFC , мне их синтаксис глаз режет и мозг ломает, писать библиотеку на Qt не очень кошерно (ИМХО) либо будет уж очень много весить, либо с собой еще зависимостей потребует, накидал реализацию на boost::asio. Особенных трудностей не встретил, поковырял examples которые вместе с бустом идут, почитал на сайте маны и собственно все)))