Russian Qt Forum
Ноябрь 23, 2024, 02:58 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: В чем профит буста или как его готовить?  (Прочитано 12696 раз)
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« : Сентябрь 02, 2010, 12:58 »

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

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

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

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Wicked_Digger
Гость
« Ответ #1 : Сентябрь 02, 2010, 13:31 »

Мне кажеться, что выбор фреймворка зависит от задачи и ее масштабов.
Я вижу это так:
- если проект небольшой и имеет гуй, то достаточно Qt.
- если проект небольшой и без гуя, то Qt избыточен, лучше boost использовать.
- если проект большой, проектируется с расчетом на длительный жизненный цикл, имеет гуй, то лучше использовать оба, для ябра проекта boost (в любом случае придется писать дофига своего, или использовать 3-rd party компоненты), для гуя Qt (опять-же для некоторых платформ придется использовать что-то другое).
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #2 : Сентябрь 02, 2010, 13:41 »

Не знаю зачем буст нужен, но таки оазработчики KDE прикручивают к нему помимо Qt еще и Boost. По крайней мере у меня в лине по зависимостям так и выходит. Не знаю чем им Qt не устроил. Зачем в кучу все мешать то.. Грустный
Записан

ArchLinux x86_64 / Win10 64 bit
serg_hd
Хакер
*****
Offline Offline

Сообщений: 668



Просмотр профиля
« Ответ #3 : Сентябрь 02, 2010, 13:50 »

Тоже буст пробовал, но даже он не идеален. Скачал самую новую версию, при статической линковке код с boost_thread не компилился, с динамической всё ок. Такую же проблему нашёл на другом форуме (как вариант решения - более ранние версии), т.е. этот факт особо не впечатлил. Использовать в деле его не пробовал, так как нет пока нужды (проектов подходящего масштаба нет), но проверить связку boost+Qt хотелось бы.
Записан

kubuntu/Win7/x64/NetBeans
Sancho_s_rancho
Гость
« Ответ #4 : Сентябрь 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?
« Последнее редактирование: Сентябрь 02, 2010, 14:03 от Sancho_s_rancho » Записан
BlackTass
Гость
« Ответ #5 : Сентябрь 06, 2010, 15:36 »

По поводу фс и буста. В свое время нужно было быстро работать с файловой системой (построение дерева каталогов и файлов). Сначала пробовали стандартные кьютовые модели, потом слегка их покастомизировали, в итоге написали на бусте. Прирост скорости решения на бусте примерно 100-150 процентов.
Записан
vipet
Бывалый
*****
Offline Offline

Сообщений: 452


Просмотр профиля
« Ответ #6 : Сентябрь 06, 2010, 18:29 »

Новый стандарт С++ читали? Там много именно из буста взято.

VS 2010 уже кстати поддерживает новые фишки, в частности по параллельному выполнению есть простой синтаксис. Используется Intel TBB, afair
Записан
Sancho_s_rancho
Гость
« Ответ #7 : Сентябрь 06, 2010, 18:57 »

Новый стандарт С++ читали? Там много именно из буста взято.

VS 2010 уже кстати поддерживает новые фишки, в частности по параллельному выполнению есть простой синтаксис. Используется Intel TBB, afair
Помню пробегался глазами по драфту и никакого параллельного программирования с простым синтаксисом там небыло. Из буста в стандарт взято немного. Чтобы хоть когда-то принять стандарт они повыкидывали почти все. Хотя много/мало понятие относительное. Для кого-то умные указатели+пара контейнеров+еще что-то - это много, для кого-то - не очень.
Записан
Wicked_Digger
Гость
« Ответ #8 : Сентябрь 06, 2010, 19:18 »

Новый стандарт С++ читали? Там много именно из буста взято.

Стандарт и старый то не реализовывася в промышленных компиляторах полностью (раздельная компиляция теплейтов например), так что ждать реализации нового можно еще долго Грустный
Записан
vregess
Гость
« Ответ #9 : Сентябрь 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.
Записан
alexcpp
Гость
« Ответ #10 : Декабрь 19, 2010, 01:05 »

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

alexcpp,
уйбейтесь, пожалуйса, об стену  Непонимающий
Записан
alexcpp
Гость
« Ответ #12 : Декабрь 19, 2010, 01:40 »

Пантер,
Цитировать
stl и Qt. В задаче требовалась работа с ФС
ПОкжите где в STL есть хоть чтото посвященое работе с ФС Непонимающий
Записан
alexcpp
Гость
« Ответ #13 : Декабрь 19, 2010, 01:41 »

alexcpp,
уйбейтесь, пожалуйса, об стену  Непонимающий
Most essential Веселый
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #14 : Декабрь 20, 2010, 10:42 »

alexcpp, тебе предупреждение. Убери оскорбление из своего поста.
Пантер,
Цитировать
stl и Qt. В задаче требовалась работа с ФС
ПОкжите где в STL есть хоть чтото посвященое работе с ФС Непонимающий
Я имел ввиду стандартную библиотеку.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.199 секунд. Запросов: 22.