Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ boost _ Advantages/disavanteges

Автор: sergioK 16.9.2012, 12:48

Либа собсвенно крос платформенная, это все знают, у меня собсвенно вопрос

Если мне этот крос не нужен, то есть ли смысл в применении буста?
(кроме smart pointers ) т,е есть ли у него минусы/дырки и в чем ?

С С++ знаком но не гуру, последнии 8 лет пишу на яве,
С/С+ пользую now and then .

Автор: Алексей1153 16.9.2012, 15:02

sergioK, собственно, судя по всему, тебе, собственно, буст не нужен )

Автор: sergioK 16.9.2012, 16:19


Хотелось бы услышать менее холиварный вариант ответа,
ты еще на судью не выучился :rolleyes:


Цитата(Алексей1153 @ 16.9.2012, 15:02) *
sergioK, собственно, судя по всему, тебе, собственно, буст не нужен )

Автор: Litkevich Yuriy 16.9.2012, 16:44

sergioK, не вижу ни какого холивара, а про судью язык придержи.

Автор: sergioK 16.9.2012, 17:04


Хотелось бы услышать ответ по теме, пока что это второй пост в никуда,




Автор: ViGOur 16.9.2012, 21:04

sergioK, тебе же сказали, лучше не использовать буст только для смарт поинтеров.
Если бы ты как и говоришь 8 лет писал бы серьёзно на Java, то таких вопросов бы не возникало. ;)

А если все же возникает, то вот тебе вопрос на засыпку, зачем собственно в Java smart pointers?

Автор: sergioK 17.9.2012, 10:38



На засыпку отвечаю - проверяеться вариант замены яве + ni на буст,

И соотвественно вопрос вопрос о плюсах /минусах буста ответа на который Я не увидел ,
нету довольных/не довольных ? не было ни у кого разных ситуаций ?






Автор: Влад 17.9.2012, 11:00

В применении буста есть как плюсы, так и минусы, - даже независимо от кроссплатформенности.

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

Теперь добавлю немного дегтя в эту бочку меда: о минусах :-) Во-первых, буст требует определенной культуры программирования на C++, я бы выразился так: нужно "мыслить в стиле C++, а не в стиле С с классами". Хотя это, конечно, зависит от опыта и нарабатывается постепенно. Во-вторых, буст неоднороден - он никогда не писался одним человеком или даже одним коллективом, это довольно пестрое собрание разнородных библиотек от независимых авторов; есть вещи, написанные хорошо, а есть.... Впрочем, если не заглядывать "под капот", а просто использовать, то ничего страшного :-)

Автор: ViGOur 17.9.2012, 11:03

Цитата(sergioK @ 17.9.2012, 11:38) *
проверяеться вариант замены яве + ni на буст
java.nio?

Цитата(sergioK @ 17.9.2012, 11:38) *
И соотвественно вопрос вопрос о плюсах /минусах буста ответа на который Я не увидел ,
нету довольных/не довольных ? не было ни у кого разных ситуаций ?
Единственный минус буста в том, что для работы с ним недостаточно быть просто знакомым с С\С++, порой нужно знать на отлично С++ и STL, иначе использование Boost превратится в шаманство...

Автор: Iron Bug 17.9.2012, 11:52

использую буст много лет (ещё с каких-то там 20-х версий). отличная библиотека для профессиональной разработки на С++.

причём буст - не просто кроссплатформенная библиотека. фактически, это тестовый полигон стандартизации С++. то есть то, что разрабатывается в бусте, потом частично переходит в стандартные библиотеки С++. и эти самые поинтеры, кстати, уже в стандарте. так что ради них не имеет смысла юзать буст. auto_ptr был уже давно, а shared_ptr и weak_ptr добавили в последний стандарт год назад. так что их уже обязаны поддерживать все компиляторы стандарта С++11. и использование буста только усложнит задачу: нужно будет разграничивать поинтеры буста и стандартных библиотек. конечно, буст имеет и другие, куда более продвинутые поинтеры, но для того, кто не занимается С++ профессионально, они вряд ли пригодятся.

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

Автор: igor_bogomolov 17.9.2012, 13:51

Цитата(Iron Bug @ 17.9.2012, 12:52) *
я в нём использую ... работу с регулярными выражениями, потоки ...
так ведь это теперь тоже в новый стандарт перекачевало. Или компиляторы еще плохо этот функционал поддерживают?

Автор: Iron Bug 17.9.2012, 21:09

Цитата(igor_bogomolov @ 17.9.2012, 16:51) *
Цитата(Iron Bug @ 17.9.2012, 12:52) *
я в нём использую ... работу с регулярными выражениями, потоки ...
так ведь это теперь тоже в новый стандарт перекачевало. Или компиляторы еще плохо этот функционал поддерживают?

я не слышала, чтобы регулярные выражения перекочёвывали в стандарт. там слишком жирная библиотека, на самом деле. и она ещё не утрясена, как следует. насчёт потоков - у венды вроде позикса нет. может, они там что-то и сделали, но я тоже такого факта не припоминаю.

Автор: igor_bogomolov 18.9.2012, 8:49

Цитата(Iron Bug @ 17.9.2012, 22:09) *
я не слышала, чтобы регулярные выражения перекочёвывали в стандарт. там слишком жирная библиотека, на самом деле. и она ещё не утрясена, как следует. насчёт потоков - у венды вроде позикса нет. может, они там что-то и сделали, но я тоже такого факта не припоминаю.
Сам то я на плюсах давно не пишу, плотно в ядро линукса перелез, но стараюсь следить за событиями. И имею сам стандарт.

boost::threads почти в полном объеме перекачевала в новый стандарт. В связи с этим, например, появилось новое ключевое слово thread_local. В stl появились потоко безопасные контейнеры. Глава 30 нового стандарта полностью посвещана потокам (30 Thread support library).

Регулярные выражения описаны в разделе 28 (Regular expressions library). Тут я правда не могу провести никаких паралелей с boost. Не знаю в каком объёме эта библиотека была стандартизирована.
В http://ru.wikipedia.org/wiki/C%2B%2B11#.D0.A0.D0.B5.D0.B3.D1.83.D0.BB.D1.8F.D1.80.D0.BD.D1.8B.D0.B5_.D0.B2.D1.8B.D1.80.D0.B0.D0.B6.D0.B5.D0.BD.D0.B8.D1.8F можно немного про регулярные выражения почитать.

Т.е. в стандарте всё это есть, но вот как дело обстоит с поддержкой этих возможностей в компиляторах, я не знаю.

P.S. Еще раз про потоки в с++11. Сделаю небольшую рекламу. Есть замечательная http://www.forum.crossplatform.ru/index.php?showtopic=8843 по этому поводу.

Автор: Алексей1153 18.9.2012, 10:28

sergioK, окай, как выучусь на судью твоего уровня, обсудим :))

Автор: Litkevich Yuriy 18.9.2012, 11:55

Алексей1153, не развивай это направление

Автор: sergioK 18.9.2012, 22:11

Для меня пока главный недостаток - отсуствие вменяемой документации :rolleyes: ,
как собвено компилить ? пока нашел такое,
bjam.exe --toolset=gcc stage, потом говорю Сode Blocks добавить либы к линкеру (могу и руками но лень)
мне бы хотелось сказать бижаму что бы разбил все по папкам т,е, chrono в свою папку , regex в свою , signal в свою
и т,д,( так потом удобней искать/менять )
вопрос как это реально сделать? если реально ?

и еще
как компилить отдельную либу т,е, после bjam.exe --toolset=gcc(ну или другой компилятор)
что потом где его найти (доку читал видимо плохо :huh: ) ?

ну и так на всякий случай - тролей не кормлю, желающим покусаться, могу указать на более интересные сайты ,




Автор: Алексей1153 19.9.2012, 8:18

sergioK, Я не тролль, если что. Весёлые трёхбуквенные сайты тоже знаю и могу показать:)

Автор: Влад 19.9.2012, 9:08

Цитата(sergioK @ 18.9.2012, 23:11) *
Для меня пока главный недостаток - отсуствие вменяемой документации.

Вот тут ты, пожалуй, не прав. Документация у буста очень и очень неплохая - в сравнении с другими бесплатными же проектами. (Давно известно, что при разработке бесплатного/freeware проекта программистам гораздо интереснее писать код, а не документацию к нему :-) А поскольку проект делается just for fun - то и заставить их писать доки невозможно.)

Просто буст рассчитана на более профессиональный контингент, чем программисты, "пишущие мышкой". Поэтому подход в стиле "Все-что-угодно за 21 день" - "Выберите компонент, перетащите его на форму, щелкните мышкой там, теперь тут, нажмите F5 - поздравляем! вы выполнили вашу первую программу!" - не работает.

Читай доки на сайте. Там есть целый раздел "как собрать".

Автор: AD 19.9.2012, 9:14

Цитата(sergioK @ 18.9.2012, 23:11) *
Для меня пока главный недостаток - отсуствие вменяемой документации :rolleyes: ,

По-моему, ты ошибаешься, как раз boost очень хорошую документацию имеет. Просто разбираться с ним придется не за неделю. Правильно подметили, что это инструмент для экспериментирования разных фишек, которые постепенно переходят в стандарт!

Цитата(igor_bogomolov @ 18.9.2012, 9:49) *
Регулярные выражения описаны в разделе 28 (Regular expressions library). Тут я правда не могу провести никаких паралелей с boost. Не знаю в каком объёме эта библиотека была стандартизирована.

По-моему, регулярки - через чур крупный отдельный раздел, чтобы перкочевывать прямо в язык С++! :) По-моему по-своему отдельный подъязык.

Автор: sergioK 19.9.2012, 22:28



Цитата(igor_bogomolov @ 18.9.2012, 9:49) *
Регулярные выражения описаны в разделе 28 (Regular expressions library). Тут я правда не могу провести никаких паралелей с boost. Не знаю в каком объёме эта библиотека была стандартизирована.

По-моему, регулярки - через чур крупный отдельный раздел, чтобы перкочевывать прямо в язык С++! :) По-моему по-своему отдельный подъязык.




Да Я тоже так считаю, но они(RE) почти есть во всех языках есть,
так почему бы им не быть в С++ ?

Vlad , Я ж смайлик поставил, то ирония была ,
Все что ты и AD говорите правильно и очевидно, Я еще в 96году себе определил что 21день это утопия,
То что читать доку это понятно,то что не все сразу тоже хотя и хочеться :rolleyes:
Kонфигурация/сборка не всегда просто и а яве тоже самое и на чем угодно, но это лирика, а по сути никто сам не собирал ??



Автор: igor_bogomolov 20.9.2012, 8:34

Цитата(sergioK @ 19.9.2012, 23:28) *
а по сути никто сам не собирал ??
Кого, boost? Собирали много раз. И обсуждали сборку тоже не раз. Поищи по форуму.

Автор: Iron Bug 20.9.2012, 9:37

Цитата(sergioK @ 19.9.2012, 1:11) *
Для меня пока главный недостаток - отсуствие вменяемой документации :rolleyes: ,
как собвено компилить ? пока нашел такое,
bjam.exe --toolset=gcc stage, потом говорю Сode Blocks добавить либы к линкеру (могу и руками но лень)
мне бы хотелось сказать бижаму что бы разбил все по папкам т,е, chrono в свою папку , regex в свою , signal в свою
и т,д,( так потом удобней искать/менять )
вопрос как это реально сделать? если реально ?

и еще
как компилить отдельную либу т,е, после bjam.exe --toolset=gcc(ну или другой компилятор)
что потом где его найти (доку читал видимо плохо :huh: ) ?

ну и так на всякий случай - тролей не кормлю, желающим покусаться, могу указать на более интересные сайты ,

документация у буста очень хорошая и подробная. так что тут возмущения не по делу.

bjam
- инструмент со своим языком описания файлов для сборок Boost Build v2. к нему тоже есть http://www.boost.org/boost-build2/. сделать там можно что угодно, но придётся править файлы для сборки библиотек буста.
собственно, совершенно непонятна идея разделения библиотек по папкам. простота хранения всех библиотек в одной папке в том, что потом просто прописываешь единый путь поиска для компилятора и не паришься. как ты собираешься это делать, если у тебя стопицот библиотек будут лежать в разных папках? тем более, что они могут ссылаться друг на друга.
а по вышеуказанной команде все скомпилённые библиотеки bjam помещает в папку stage. и искать их не так уж сложно: они все там. для другого места есть опция --stagedir (см. банальный --help у самого bjam, там всё написано, только запускать его надо в корне бустовских сорцов).
отдельная либа компилится опцией --with-XXX или --without-XXX(кстати, bjam это тоже в собственном хэлпе выдаёт).
а вообще, по всем вопросам сборки нужно смотреть документацию сборки буста:
http://www.boost.org/doc/libs/1_51_0/more/getting_started/windows.html
http://"%20<a%20href="http://www.boost.org/doc/libs/1_51_0/more/getting_started/unix-variants.html""%20target="_blank">http://www.boost.org/doc/libs/1_51_0/more/...ants.html"</a>

Автор: Влад 20.9.2012, 10:41

Ну почему же? Я, например, собирал буст - и не один раз, начиная с версии чуть ли не 1.30.... Сборка проходила без проблем - правда, честно скажу, времени занимала изрядно... в двух конфигурация - debug и release. Может, конечно, дело в машине - PIV 3 GHz 1 GB.....

Автор: Iron Bug 20.9.2012, 23:52

Цитата(Влад @ 20.9.2012, 13:41) *
Ну почему же? Я, например, собирал буст - и не один раз, начиная с версии чуть ли не 1.30.... Сборка проходила без проблем - правда, честно скажу, времени занимала изрядно... в двух конфигурация - debug и release. Может, конечно, дело в машине - PIV 3 GHz 1 GB.....

чтобы буст собирался быстрее, ставьте в вызов bjam опцию распараллеливания -jN , где N - количество одновременно запущенных процессов (как правило, количество ядер проца или процов). будет собираться значительно шустрее.

Автор: sergioK 26.9.2012, 8:32

Cо сборкой понятно пока то что хотел сделал,
всем спасибо,

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)