Перейти к содержанию
Посмотреть в приложении

A better way to browse. Learn more.

Форум Академгородка, Новосибирск

A full-screen app on your home screen with push notifications, badges and more.

Чтобы установить это приложение на iOS и iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
Чтобы установить это приложение на Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

C++ boost

Рекомендуемые сообщения

Опубликовано

QUOTE (Nox Metus @ Jun 18 2007, 12:30)
QUOTE (Michail @ Jun 18 2007, 12:21)
Уже точно не помню, кажется, сам вариант можно было скомпилировать, а визиторов - нет, нужны были шаблоны на шаблонах  https://academ.club/html/emoticons/angry.gif .
Лучше бы помнить поточнее. Если посмотреть таблицу портабельности boost::variant, то видно, что GCC 3.3.1 поддерживает все фичи библиотеки. GCC 2.95.3 поддерживает все, кроме make_variant_over. Предполагается, что boost::variant на 100% ANSI совместимом компиляторе будет работать без проблем, кроме того, авторы предприняли специальные усилия для нормальной работы библиотеки несмотря на баги разных известных компиляторов. Т.е. ваша информация говорит лишь о том, что у вас был какой-то экзотический не совсем прямой компилятор. Но зачем тогда на библиотеку-то пенять?

 

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

 

QUOTE
QUOTE (Michail @ Jun 18 2007, 12:21)
Эффективность, кстати, высокая
Эффективность чего высокая? И по сравнению с чем она высокая?

 

Эффективность работы при задействовании визиторов, то есть функций типа ToString(Variant). В отличие от визиторов Loki, которые у нас работали за линейное время - пока нужный тип не найдётся рекурсивно вызывается функция.

 

Вобщем ладно, я могу нагнать, потому что сам в этих вещах не разобрался - досталось в наследство, а желания разбираться никакого не было. Кажется, уже нагнал - не бустовский вариант у нас был изначально, а Loki'шный, бустовский я пробовал прикрутить чтобы собрать под Солярисом/Линуксом. Мой совет - будьте, люди, проще. Лучше самому написать с полным пониманием того, что происходит, чем на более поздних этапах бороться с проблемами из-за сложности устройства конструкции или неполного понимания.

Изменено пользователем Гость

Опубликовано

QUOTE (Nox Metus @ Jun 18 2007, 18:40)
QUOTE (Michail @ Jun 18 2007, 14:30)
Мой совет - будьте, люди, проще. Лучше самому написать с полным пониманием того, что происходит, чем на более поздних этапах бороться с проблемами из-за сложности устройства конструкции или неполного понимания.
Чушь. Обоснуйте доказательно, что это лучше. Причем, без аргументов, сводящихся к вашей личной убежденности.

немного не по теме: я считаю что по крайней мере один раз надо концептуальные штуки писать самому. не обязательно для проекта. https://academ.club/html/emoticons/smile.gif

Опубликовано

QUOTE (anpol @ Jun 18 2007, 23:39)
QUOTE (Nox Metus @ Jun 18 2007, 17:40)
QUOTE (Michail @ Jun 18 2007, 14:30)
Мой совет - будьте, люди, проще. Лучше самому написать с полным пониманием того, что происходит, чем на более поздних этапах бороться с проблемами из-за сложности устройства конструкции или неполного понимания.
Чушь. Обоснуйте доказательно, что это лучше. Причем, без аргументов, сводящихся к вашей личной убежденности.

Не обращая внимания на слово "чушь", которое у автора является непременным началом "аргументированной" дискуссии (наверное, это упреждающий плевок в лицо?) хочу всё же заметить, что boost-1.34 вышел 14 мая 2007, а boost-1.33.1 - 5 декабря 2005. Между ними прошло один год, четыре месяца и двадцать дней, в течение которых пользователи буста были один на один с его багами. То есть вы могли либо 1) брать его исходники из CVS (~80Mb), либо 2) самостоятельно фиксить в нём баги, либо 3) самостоятельно написать то же самое, только проще и понятнее.

 

Обычно последний вариант - он худший самый, но в случае с бустом традиции нарушены, потому что 1) его код писали не вы, не я, а хрен знает кто, 2) его код интенсивно использует метапрограммирование и поэтому для человека практически не читабелен, 3) его код весит много (десятков мегабайт), а пользы приносит мало (то, что вам нужно, обычно умещается в пару сотен килобайт), 4) его код релизится раз в 1,5 года, в течение которых вы не можете ждать.

Вот, золотые слова https://academ.club/html/emoticons/smile.gif . Добавлю, что в большом проекте вряд ли кто-то будет менять версию библиотеки даже за полгода до релиза.

 

QUOTE
Он не читабелен только если нет навыка и желания его читать. Впрочем, у меня за многолетний опыт общения с boost читать с лупой его код возникала необходимость до крайности исключительно редко.

 

И сколько бы я приобретал навык его читать? Я надеюсь мой пример, когда надо было портировать вариант на конкретный компилятор достаточно личностно-независим? Можно сказать, что это случай необходимости поддержки буста, т.е. хоть и не баг, но что-то надо было поменять. В этом случае я как раз поимел проблемы из-за их могучего метапрограммирования - пытался выкусить подмножество хашников и разобраться, как это работает. Кстати, там не только метапрограммирование было сильнО, но и дефайнопрограммирование https://academ.club/html/emoticons/biggrin.gif - для создания шаблонов с 20-ю аргументами, с 21-м и т.д. Фишка в том, что за время, сравнимое со временем, потраченным на попытки разобраться, был написан свой вариант

 

QUOTE
Там утилитка есть, которая выделяет из всего буста только нужные вам файлы.

Старожилы поговаривают, что есть система, которая компилирует небольшие тестики и в зависимости от их прохождения/непрохождения активирует в коде workaround'ы... Сейчас спросил коллегу, который довольно активно и давно использует буст, он не знал, что есть такая утилитка. К слову, в тот злополучный момент портирования варианта у меня даже не было возможности что либо кроме компилятора запустить на той платформе. Что можно сказать, "глобализация", "всякое в жизни бывает"...

Опубликовано

К плюсам минусам нужно добавить ещё пункты по поводу собственных библиотек

  • На поддержку тратится именно ваше время.
  • Любой новый человек должен осваивать их с 0
  • Тестовая база таких библиотек обычно гораздо меньше чем общераспостранённых (по количеству компиляторов, платформ, юзекейсов)
  • Документация часто не полна и дополнительную инфу взять не откуда.
  • Дизайн часто устарел и не учитывает современные реалии (например безопасность по исключениям...)
Ну а по поводу не поддерживаемых бустом платформ и компиляторов - никто не мешает запостить баг/реквест, а пока не исправили написать свой велосипед с тем же интерфейсом...

 

Ну и про 80мб CVS и частоту релизов:

Во первых полностью скачать надо только 1 раз, а потом трафик при обновлении мизерный.

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

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

 

Для буста, между прочем, возможна поддержка на коммерческой основе - платите и вам всё покажут расскажут и дадут попробывать! https://academ.club/html/emoticons/wink.gif

Изменено пользователем Гость

Опубликовано
Буст вообще хорошая вещь, я смарт-поинтеры из него использую без проблем https://academ.club/html/emoticons/cool.gif , но в принципе надо осторожно к таким вещам подходить, особенно к вариантам-визиторам, плохо сочетающимся с С++ и потому тяжёлых для написания и для компилятора

Изменено пользователем Гость

Опубликовано

Посоветуйте, с чего начать применение boost? Один профессионал (из числа лично знакомых) сказал мне, что без STL и boost даже не представляет себе быстрой и эффективной работы с C++.

 

Попытался я установить boost, и тут выяснилось, что для полной установки потребуется скачивать около гигабайта (что для меня, абонента WebStream вылезет ночью примерно в 1000 рублей). А может быть мне и надо полную установку?

 

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

Опубликовано

QUOTE (dura @ Jun 18 2007, 20:33)
QUOTE (Nox Metus @ Jun 18 2007, 18:40)
QUOTE (Michail @ Jun 18 2007, 14:30)
Мой совет - будьте, люди, проще. Лучше самому написать с полным пониманием того, что происходит, чем на более поздних этапах бороться с проблемами из-за сложности устройства конструкции или неполного понимания.
Чушь. Обоснуйте доказательно, что это лучше. Причем, без аргументов, сводящихся к вашей личной убежденности.

немного не по теме: я считаю что по крайней мере один раз надо концептуальные штуки писать самому. не обязательно для проекта. https://academ.club/html/emoticons/smile.gif

это неверное утверждение

вот два верных:

приходится написать несколько концептуальных вещей для того чтобы понять какие-то концепции (и понять что на самом деле не их не нужно было писать)

иногда приходится написать что-то свое, потому что то что уже есть не совсем подходит.

Опубликовано

QUOTE (Nox Metus @ Jun 21 2007, 13:07)
QUOTE (MuratMusic @ Jun 21 2007, 03:30)
Попытался я установить boost, и тут выяснилось, что для полной установки потребуется скачивать около гигабайта

Релиз буста на sf в zip архиве занимает около 24 мегабайт. Вы что-то перепутали.

Адрес exe-файла http://www.boost-consulting.com/boost_1_34_0_setup.exe весит 187 кб (при его запуске нужно отмечать флажками, что именно нужно установить, и после этого мне было сообщено что в мой комп будет закачано и после этого возможно распаковано около гигабайта).

 

А вот адрес http://sourceforge.net/project/downloading..._0.zip&95324765 (если я правильно скопировал ссылку) действительно около 25 мегабайт zip-архива (вот про этот архив написано так: If you're using an earlier version of Visual Studio or some other compiler, or if you prefer to build everything yourself, you can download boost_1_34_0.exe and run it to install a complete Boost distribution).

 

Так там в этом 25 Mb варианте просто готовые файлы проектов (для Visual C++ 6.0)? Просто запустить компиляцию и всё будет готово?

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

Аккаунт

Навигация

Поиск

Поиск

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.