Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Advantages/disavanteges
Форум на CrossPlatform.RU > Библиотеки > boost
sergioK
Либа собсвенно крос платформенная, это все знают, у меня собсвенно вопрос

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

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

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


Цитата(Алексей1153 @ 16.9.2012, 15:02) *
sergioK, собственно, судя по всему, тебе, собственно, буст не нужен )
Litkevich Yuriy
sergioK, не вижу ни какого холивара, а про судью язык придержи.
sergioK

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



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

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


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

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





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

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

Теперь добавлю немного дегтя в эту бочку меда: о минусах :-) Во-первых, буст требует определенной культуры программирования на C++, я бы выразился так: нужно "мыслить в стиле C++, а не в стиле С с классами". Хотя это, конечно, зависит от опыта и нарабатывается постепенно. Во-вторых, буст неоднороден - он никогда не писался одним человеком или даже одним коллективом, это довольно пестрое собрание разнородных библиотек от независимых авторов; есть вещи, написанные хорошо, а есть.... Впрочем, если не заглядывать "под капот", а просто использовать, то ничего страшного :-)
ViGOur
Цитата(sergioK @ 17.9.2012, 11:38) *
проверяеться вариант замены яве + ni на буст
java.nio?

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

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

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

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

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

Регулярные выражения описаны в разделе 28 (Regular expressions library). Тут я правда не могу провести никаких паралелей с boost. Не знаю в каком объёме эта библиотека была стандартизирована.
В википедии можно немного про регулярные выражения почитать.

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

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

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

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



Алексей1153
sergioK, Я не тролль, если что. Весёлые трёхбуквенные сайты тоже знаю и могу показать:)
Влад
Цитата(sergioK @ 18.9.2012, 23:11) *
Для меня пока главный недостаток - отсуствие вменяемой документации.

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

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

Читай доки на сайте. Там есть целый раздел "как собрать".
AD
Цитата(sergioK @ 18.9.2012, 23:11) *
Для меня пока главный недостаток - отсуствие вменяемой документации :rolleyes: ,

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

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

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


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

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




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

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


igor_bogomolov
Цитата(sergioK @ 19.9.2012, 23:28) *
а по сути никто сам не собирал ??
Кого, boost? Собирали много раз. И обсуждали сборку тоже не раз. Поищи по форуму.
Iron Bug
Цитата(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. к нему тоже есть подробнейшая документация. сделать там можно что угодно, но придётся править файлы для сборки библиотек буста.
собственно, совершенно непонятна идея разделения библиотек по папкам. простота хранения всех библиотек в одной папке в том, что потом просто прописываешь единый путь поиска для компилятора и не паришься. как ты собираешься это делать, если у тебя стопицот библиотек будут лежать в разных папках? тем более, что они могут ссылаться друг на друга.
а по вышеуказанной команде все скомпилённые библиотеки bjam помещает в папку stage. и искать их не так уж сложно: они все там. для другого места есть опция --stagedir (см. банальный --help у самого bjam, там всё написано, только запускать его надо в корне бустовских сорцов).
отдельная либа компилится опцией --with-XXX или --without-XXX(кстати, bjam это тоже в собственном хэлпе выдаёт).
а вообще, по всем вопросам сборки нужно смотреть документацию сборки буста:
сборка буста под вендой
сборка буста под никсами
Влад
Ну почему же? Я, например, собирал буст - и не один раз, начиная с версии чуть ли не 1.30.... Сборка проходила без проблем - правда, честно скажу, времени занимала изрядно... в двух конфигурация - debug и release. Может, конечно, дело в машине - PIV 3 GHz 1 GB.....
Iron Bug
Цитата(Влад @ 20.9.2012, 13:41) *
Ну почему же? Я, например, собирал буст - и не один раз, начиная с версии чуть ли не 1.30.... Сборка проходила без проблем - правда, честно скажу, времени занимала изрядно... в двух конфигурация - debug и release. Может, конечно, дело в машине - PIV 3 GHz 1 GB.....

чтобы буст собирался быстрее, ставьте в вызов bjam опцию распараллеливания -jN , где N - количество одновременно запущенных процессов (как правило, количество ядер проца или процов). будет собираться значительно шустрее.
sergioK
Cо сборкой понятно пока то что хотел сделал,
всем спасибо,
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2020 IPS, Inc.