LINUX.ORG.RU
ФорумTalks

Boost что за зверь такой?

 ,


2

7

На самом деле мне всё равно что это за хреновина, которая собирается очень долго и требует много места, в процессе сборки покрайней мере. Как какой-то gcc или firefox.

Удручает, что эту хреновину теперь используют в моих mpd и ncmpcpp, пришлось откатиться до версии 0.18.21 и 0.5.10 соответственно. И это навсегда. Козлячие, загубили своими инновациями самый лучший консольный аудиоплеер!

Перемещено mono из development

★★★★★

Последнее исправление: Spoofing (всего исправлений: 1)

Ответ на: комментарий от Reset

Что за бред?

там есть сомнительные фичи, например MPL. и оптимизирован слабенько. часто утверждают (хоть я и не придерживаюсь таких взглядов), что если уж действительно понадобился буст, то лучше на другой ЯП переходить.

next_time ★★★★★
()
Ответ на: комментарий от next_time

Воистину так утверждают тщедушные программисты :)

anatoly
()
Ответ на: комментарий от next_time

там есть сомнительные фичи, например MPL

По сути там over9000 библиотек в одном, никто не заставляет использовать сразу всё.

и оптимизирован слабенько

Там over9000 библиотек, что именно слабо оптимизировано?

что если уж действительно понадобился буст, то лучше на другой ЯП переходить.

Зачем?

Reset ★★★★★
()

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

cvs-255 ★★★★★
()
Ответ на: комментарий от anonymous

При чем здесь Александреску?

Ну я там цитату приводил выше.

Или захотелось авторитетом подавить?

Отнюдь. Здесь играет не авторитет, а всего лишь компетентность.

А кто авторитетнее - Александреску или Поттеринг? Протащишь буст в системд?

О, началось... Время идёт, анонимус не меняется. Всё столь же жирные, безвкусные и прямолинейные попытки потроллить. Иди-ка ты.

intelfx ★★★★★
()
Ответ на: комментарий от Reset

Вот именно. Но например по этой причине до тех пор пока его фишки не часть стандарта, их можно использовать только в малозначимых проектах. Да и то с осторожностью и не все.

wakuwaku ★★★★
()

Используй бинарный дистр раз такой экономный.

anonymous
()
Ответ на: комментарий от wakuwaku

Но например по этой причине до тех пор пока его фишки не часть стандарта, их можно использовать только в малозначимых проектах

Или я не проснулся, или по твоей логике пока Qt не станет частью стандарта, его тоже можно использовать только в малозначимых проектах

yoghurt ★★★★★
()
Ответ на: комментарий от wakuwaku

Ле. Короч, ты не прав - забей.

anonymous
()
Ответ на: комментарий от wakuwaku

Но например по этой причине до тех пор пока его фишки не часть стандарта, их можно использовать только в малозначимых проектах.

Логика мне не понятна. Чем он отличается от glib или qt, фишки которых тоже не являются частью стандарта.

Reset ★★★★★
()
Ответ на: комментарий от wakuwaku

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

intelfx ★★★★★
()
Ответ на: комментарий от wakuwaku

А буст это не Qt. Ты родишь наконец законченную мысль или так и будешь изъясняться на языке бабуинов?

Reset ★★★★★
()
Ответ на: комментарий от intelfx

Любую переусложнённую нестабильную библиотеку, в которой нет необходимости, но адепты которой любят воткнуть её куда-нибудь, где прекрасно жили без неё. Создавая тем самым видимость, что она может быть кому-то действительно нужна.

wakuwaku ★★★★
()
Ответ на: комментарий от wakuwaku

Это демагогия. Ты не показал ни переусложнённости, ни нестабильности, ни отсутствия объективной необходимости в бусте.

А вот наличие объективной необходимости в бусте я показать вполне могу. Дело в том, что метапрограммирование позволяет генерировать более эффективный (в рантайме) код. Всё, это достаточное обоснование существования буста как такового.

А решение компромисса между эффективностью и порогом вхождения — вещь субъективная и остаётся на усмотрение конкретных разработчиков конкретных проектов.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от intelfx

??

Он необходим, но только как источник интересных и полезных ништяков, не более. А остальное вроде бы достаточно очевидно, во всяком это были первые из проблем, с которыми мне пришлось столкнуться. А, ну да, может быть стоило сказать, это было где-то в 2008.

wakuwaku ★★★★
()
Ответ на: комментарий от intelfx

А почему бы для «метапрограммирования» не подобрать соответствующий язык, а не C++, который изначально не задумывался для такого?

anonymous
()
Ответ на: комментарий от anonymous

если ты выбираешь язык лишь исходя из своего понимания адекватности реализации метапрограммирования в этом языке, то пшел вон из профессии

anonymous
()
Ответ на: комментарий от anonymous

Потому что в проекте могут быть нужны свойства, присущие только C++ и схожим языкам. Например, производительность. И вообще, мало ли может быть факторов, диктующих выбор определённого языка.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от wakuwaku

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

Ну, сравни хотя бы затраты на выделение памяти при работе через Boost и прямо через heap: https://github.com/Balancer/benchmarks-fib-obj/wiki/Результат-теста:-i3-2.2ГГц

KRoN73 ★★★★★
()
Ответ на: комментарий от shty

фраза-детектор неосиляторов C++ :)

О, специалист в С++? Вы-то и нужны

Есть такой пример: http://www.boost.org/doc/libs/1_55_0/libs/spirit/example/qi/mini_xml3.cpp , там 256 строк с пробелами и комментариями

Сколько у вас занимает его компиляция? Можно ли это как-то ускорить?

Если в 143-й строке закомментировать using namespace qi::labels;, сколько экранов строк ошибок у вас видно?

anonymous
()
Ответ на: комментарий от KRoN73

И чем ты хвастаешься? Буст же безбожно слил. Да и если бы выиграл, вряд ли стоило так уродовать код из-за него

anonymous
()

которая собирается очень долго

Это происходит на машине майнтейнера, в чем проблема?

crowbar
()

Чем он тебе мешает? И зачем его кампелять? Поставь в бинарном виде.

drull ★☆☆☆
()

используй deadbeef

umren ★★★★★
()
Ответ на: комментарий от emulek

для тех кто в танке: в boost нечего собирать, это набор шаблонов.

Чудила, пойди и почитай доки буста. Что там header-only, а что нет.

Pavval ★★★★★
()
Ответ на: комментарий от Pavval

для тех кто в танке: в boost нечего собирать, это набор шаблонов.

Чудила, пойди и почитай доки буста. Что там header-only, а что нет.

я-то уже читал, твоя очередь.

emulek
()
Ответ на: комментарий от Reset

Я сказал именно то, что сказал. Пусть каждый понимает в меру своих возможностей, если я буду расписывать своё мировоззрение, никто это не станет читать.

wakuwaku ★★★★
()
Ответ на: комментарий от Pavval

И что, картинок там не было, а буквы ты не знаешь?

те, что «не only», они тоже все на шаблонах, там просто используются небольшие включения не шаблонных типов. Но на 95% этот твой boost состоит именно из шаблонов.

emulek
()
Ответ на: комментарий от anonymous

256 строк с пробелами и комментариями

не очень понял как пробелы на количество строк влияют, но пусть будет

Сколько у вас занимает его компиляция? Можно ли это как-то ускорить?

для чего Вам в данном месте это ускорение скорости компиляции нужно? какая задача решается?

Если в 143-й строке закомментировать using namespace qi::labels;, сколько (экранов) строк ошибок у вас видно?

а если палец засунуть в розетку сколько звездочек вокруг головы будут иметь положительный спин?

shty ★★★★★
()
Ответ на: комментарий от KRoN73

Кстати, а что показывает этот тест? Отсутствие оптимизаций? То, что редко когда эффективный код выглядит одинаково на разных языках? Или может быть наглядно объясняет, почему крупные проекты используют свой аллокатор?

wakuwaku ★★★★
()
Ответ на: комментарий от wakuwaku

Кстати, а что показывает этот тест?

Производительность выделения/освобождения памяти, вызовов методов и немного простейших операций.

Отсутствие оптимизаций?

Ну, если -O3 в gcc — «отсутствие оптимизаций», то да.

То, что редко когда эффективный код выглядит одинаково на разных языках?

Тест не алгоритма, а некоторых базовых операций. Именно поэтому я выше упомянут только скорость выделения памяти в boost, не касаясь никаких иных вопросов.

почему крупные проекты используют свой аллокатор?

Видимо, потому что он эффективнее «искоробочного». Именно этот вариант я и упомянул в ответ на сообщение «буст тащат в проект обычно из-за одной-двух фич, когда можно вполне обойтись без него»

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

fib-obj-heap.cpp:

int main()
{
    for(int i=0; i<3; i++)
    {
        Fib *x = new Fib(40);
        printf("n=%d\n", x->value());
        delete(x);
    }

    return 0;
}
boost.cpp:
int main()
{
    for(int i=0; i<10; i++)
    {
        Fib *x = new Fib(40);
        printf("n=%d\n", x->value());
        delete(x);
    }
    return 0;
}
Почему в fib-obj-heap.cpp i<3 а в boost.cpp i<10?

userd
()
Ответ на: комментарий от anonymous

Спасибо за ссылку. Поржал с последней страницы, вспомнив лор того времени.

unt1tled ★★★★
()
Ответ на: комментарий от wakuwaku

Перечень крупных успешных проектов, использующих буст?

MongoDB, например.

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

-O3

компилятор пока всё ещё не в силах полностью заменить голову программисту, тут ничего не поделать. Не говоря о том, что -O3 способен делать программы медленнее.

эффективнее «искоробочного»

всё же, это не повод тащить его туда, где он заведомо лишний. А на каких объёмах проводилось тестирование?

wakuwaku ★★★★
()
Ответ на: комментарий от wakuwaku

Не совсем то, но:
http://google-styleguide.googlecode.com/svn/trunk/cppguide.html

+
Boost code is generally very high-quality, is widely portable, and fills many important gaps in the C++ standard library, such as type traits and better binders.
-
Some Boost libraries encourage coding practices which can hamper readability, such as metaprogramming and other advanced template techniques, and an excessively "functional" style of programming.

anonymous
()
Ответ на: комментарий от anonymous

Короч, там quote, сорь. Проще по ссылке и / boost

anonymous
()
Ответ на: комментарий от userd

Почему в fib-obj-heap.cpp i<3 а в boost.cpp i<10?

Cчитается время одной итерации. Heap достаточно тормозной, чтобы и для 3 итераций точно измерить. Boost уже слишком быстрый, так что для точности считался десяток раз.

KRoN73 ★★★★★
()
Ответ на: комментарий от wakuwaku

компилятор пока всё ещё не в силах полностью заменить голову программисту, тут ничего не поделать

Я выше писал, что измеряет этот тест. Тут голова программиста не заменяет оптимизацию.

Не говоря о том, что -O3 способен делать программы медленнее.

Ну, очевидно, что я пробовал и -O2 :) Я для всех вариантов искал самое быстрое решение.

всё же, это не повод тащить его туда, где он заведомо лишний

Где лишний — не повод. А много таких случаев, где явно лишний?

А на каких объёмах проводилось тестирование?

Fib(40)

KRoN73 ★★★★★
()
Ответ на: комментарий от shty

Ошибки в несколько экранов

а если палец засунуть в розетку

тормозная компиляция

для чего Вам в данном месте это ускорение скорости компиляции нужно?

Хорошо, понял, спасибо за объяснения

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.