| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > boost vs Qt |
| Автор: borisbn 16.9.2011, 08:45 |
| Всем добрый QDateTime::currentDateTime().toString() Сразу хочу сказать: это - НЕ holywar Я хочу выяснить только функциональные различия библиотек. Какие подсистемы/классы/функции есть в одной и нет в другой. И всё. Высказывания типа "в Qt есть XML, в boost нет" или "в boost есть статические regex'ы (spirit), в Qt - нет" - принимаются. Высказывания типа "Qt весит 20 МБ, boost тупо прикомпиливается к exe-шнику" или "как можно сравнивать шаблоны и метаинформацию" - не принимаются. Просьба к модераторам удалять высказывания, не относящиеся к сравнению функционала, а также любую попытку холивора. Спасибо. P.S. Про наличие в Qt (и отсутствие в boost) GUI и БД можно не писать. Знаю. |
| Автор: Alca 16.9.2011, 09:13 |
| http://home.kde.org/~akademy10/slides/Boost_for_KDE_Developers-Volker_Krause.pdf |
| Автор: borisbn 16.9.2011, 09:47 | ||||
| Alca, спасибо, но кроме того, что в boost есть boost::bind и какие-то graph'ы (что такое - не понял) в документе больше ничего нет. Да и странный он (документ) какой-то. В начале говорится про boost
а в конце
|
| Автор: Alca 16.9.2011, 09:50 | ||
может кютешники ваяли эту доку |
| Автор: A5uKa 16.9.2011, 12:01 |
| Qt->KDE Добавлено через 41 секунду (C.O. Mode off) |
| Автор: borisbn 16.9.2011, 12:31 |
| A5uKa, крткст сстр тлнт ? |
| Автор: alexSl 16.9.2011, 14:57 |
| В Qt отлично интегрирована интернационализация. За бустом этого не замечено |
| Автор: W4FhLF 16.9.2011, 17:08 |
| В бусте есть очень гибкая и довольно развитая сериализация boost:serialization с поддержкой всех стандартных типов (STL в том числе). Сетевому функционалу Qt далеко до boost::asio. |
| Автор: bsa 17.9.2011, 00:37 | ||
В Qt тоже есть сериализация. Правда, не такая гибкая... И только бинарная - QDataStream. |
| Автор: borisbn 17.9.2011, 09:14 |
| Похоже нужно было сделать это сразу, но лучше поздно, чем никогда.... Поясню, зачем создал тему: я сейчас в своих проектах использую Qt, а boost - нет. Так вот, хотелось узнать, что я приобрету, если буду использовать также и boost. И наоборот, uде я буду велосипедировать, что я буду делать "ручками", если не буду использовать boost. В общем, меня интересует функционал boost'а, которого нет ни под каким видом в Qt. Спасибо всем отписавшимся. Жду продолжения |
| Автор: bsa 17.9.2011, 10:12 |
| borisbn, ну смотри. Есть список библиотек, входящих в boost. Открываешь и смотришь. В принципе, при работе с Qt нет необходимости в большинстве функционала из boost. Более того, некоторые вещи просто конфликтуют (boost::signals). Хотя, boost::spirit вещь очень полезная в определенных случаях. Да и boost::serialization очень полезна, когда необходимо работать с текстовыми форматами (бинарные аппаратно-зависимы). |
| Автор: borisbn 17.9.2011, 12:50 |
Именно так и поступил перед тем, как создавать тему. Почувствовал себя советским гражданином 70-х годов, случайно попавшим за границей в супермаркет. Захотелось выяснить, что из всего этого стОит пробовать, а что и у нас не хуже. Вот вы с W4FhLF сказали про serialization, asio и spirit - обязательно посмотрю. Спасибо. Something else ? |
| Автор: bsa 17.9.2011, 13:01 |
| ASIO довольно низкоуровневая библиотека на мой взгляд. При наличии некоторого опыта работы с ней использовать ее становится довольно легко. Но, на мой взгляд, уж очень много кода писать надо. С другой стороны, у тебя есть возможность разруливать почти все ситуации. |
| Автор: mabrarov 19.9.2011, 13:58 | ||
Сколько использую Qt - всегда с Boost. Точнее так: сначала беру Standard C++ Library. Не хватает - добавляю Boost. Не хватает - добавляю Qt. На Qt стараюсь выносить только GUI/graphics, configuration, i18n, (иногда) plugin subsystem... эээ все, кроме самой логики (без фанатизма - зачастую стоит и для логики местами использовать Qt). Qt и Boost хороши по-своему. Вместе их готовить довольно легко. Да, Boost.Asio - низкоуровневая "штучка". На ней делают то, что некоторые до сих пор пишут на plain-old-C. Сравнив с Java, можно сказать так: Boost.Asio ~ Apache MINA (но Asio гораздо лучше), а QtNetwork ~ Apache HTTP Client (ну, в плане HTTP - реально QtNetwork гораздо шире). |
| Автор: borisbn 19.9.2011, 16:40 |
| mabrarov, спасибо за развёрнутый ответ, но хотелось бы знать, что, например, Вы используете такого в бусте, чего нет в Qt ? |
| Автор: mabrarov 19.9.2011, 17:40 |
borisbn, перечислю то, что использую совместно с Qt (а не то, что использую, и чего нет в Qt), начиная с наиболее частого:
|
| Автор: borisbn 19.9.2011, 18:00 |
| mabrarov, спасибо. Плюсанул. /me ушёл курить указанные мануалы. Пока информации столько, что тему, пожалуй, закрываю, но ответы буду почитывать. mabrarov, ещё раз спасибо. |
| Автор: mabrarov 20.9.2011, 10:04 | ||
Это было просто IMHO Для меня C++ (к сожалению) почти хобби. Последние 2,5 года работы на Java. Надеюсь, кто-то из C++-профи что-нибудь напишет/даст критику. |
| Автор: EnergoHokum 20.9.2011, 12:38 |
Профессионалом я себя не назову, но boost-ом пользуюсь очень часто. Вот основное, без чего жить трудно:
http://www.boost.org/doc/libs/1_47_0/libs/crc/index.html -- CRC он и в Африке CRC. Header-only http://www.boost.org/doc/libs/1_47_0/doc/html/date_time.html -- работа с датами и временем, с временными интервалами. Может потребовать линковки к проекту. http://www.boost.org/doc/libs/1_47_0/libs/utility/enable_if.html -- выбор "как быть дальше" на этапе компиляции, а не в runtime. Header-only. http://www.boost.org/doc/libs/1_47_0/libs/filesystem/index.html -- работа с файлами, каталогами, путями к ним. Требует линковки к проекту. http://www.boost.org/doc/libs/1_47_0/doc/html/function.html -- функциональные объекты, созданные bind-ом можно сохранять. Header-only. http://www.boost.org/doc/libs/1_47_0/doc/html/lambda.html -- создание безымянных функций, с введением C++0x теряет актуальность. Header-only. http://www.boost.org/doc/libs/1_47_0/libs/property_tree/index.html -- удобно использовать для работы с конфигурационными файлами *.ini, XML, JSON, INFO. Header-only. http://www.boost.org/doc/libs/1_47_0/libs/signals2/ -- реализация механизма сигнал-слот, потокобезопасная, типобезопасная, проверки типов в compile-time. Header-only. http://www.boost.org/doc/libs/1_47_0/libs/smart_ptr/smart_ptr.htm -- умные указатели. Header-only. http://www.boost.org/doc/libs/1_47_0/libs/spirit/index.html -- фреймворк, вкючающий в себя лексический анализатор (Lex), генератор LL-парсеров (Qi), генератор генераторов (Karma). Header-only. http://www.boost.org/doc/libs/1_47_0/doc/html/boost_staticassert.html -- предупреждения времени компиляции, очень полезная штука. Header-only. http://www.boost.org/doc/libs/1_47_0/libs/system/doc/index.html -- обёртки над системозависимыми кодами ошибок. Требует линковки к проекту. http://www.boost.org/doc/libs/1_47_0/doc/html/thread.html -- потоки, на пару с bind заруливают все прочие реализации (как пример, Qt-шные потоки) в минуса, можно создать поток внутри экземпляра класса, привязанный к произвольной его (класса) функции, с передачей функции этого потока нужного количества входных параметров. Header-only. http://www.boost.org/doc/libs/1_47_0/doc/html/xpressive.html -- регулярные выражения. Header-only. |
| Автор: borisbn 20.9.2011, 13:57 | ||
| EnergoHokum, спасибо. Я так скурюсь Голова уже кругом от такого:
Я, конечно, понимаю, что там делается, однако... И это - ещё, пожалуй, самое простое... А если серьёзно, то спасибо большое. Буду изучать. Плюсанул (теперь я обязан - как честный человек) |