Здравствуйте, McSeem2, Вы писали:
MS>Я сотрудничаю с Эриком Джонсом, приятелем Дейва Абрахамса, и как-то спросил его, почему они используют SWIG а не boost/python для взаимодействия между Питоном и C++. Причнины следующие: MS>1. Низкая надежность, слишком много проблем с разными компиляторами и платформами. MS>2. Монстрообразность получаемого кода. Можно, конечно, "доработать напильником", но это требует слишком больших усилий. MS>3. Время компиляции находится далего за предемами допустимого.
Самое главное он забыл, SWIG это практически средство автоматического создания кода, и пользоватся им на порядок проще чем boost/python, так что сравнение тут совершенно некорректно.
Здравствуйте, FR, Вы писали:
FR>Самое главное он забыл, SWIG это практически средство автоматического создания кода, и пользоватся им на порядок проще чем boost/python, так что сравнение тут совершенно некорректно.
В том то и дело, что SWIG их по неким причинам не вполне устраивает и они попытались переключиться на direct use boost/python. Все там вроде бы хорошо и не так уж и сложно, но вот компиляция...
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Здравствуйте, alexeiz, Вы писали:
MS>>А это уже "будем посмотреть". Если, к примеру, мне не требуется ничего кроме функциональности rand(), то именно его я задействую. Так компилируется быстрее
A>Ничего, кроме генерирования чисел в диапазоне 0..MAX_RAND? Сколько я помню, мне всегда дополнительный класс писать приходилось для работы с rand.
Это зачем? rand() % 100 сгенерирует 0...99. Зачем для этого класс писать?! Если качество случайных чисел не критично, этого вполне достаточно.
A>Многим этот boost/python нафиг не сдался. Что этим ты хотел сказать: либо всё из boost'а, либо ничего?
Нет, просто как пример. К сожалению, он довольно типичен для буста.
A>Не нравится кватерион, не используй его. Никаких зависимостей не внесешь. Согласен, что в boost'е есть и неудачный код. Но это не значит, что нужно игнорировать и очень качественный код из boost'а. Это всего лишь еще одно проявление фанатизма.
В том-то и дело, что в остальном бустовский кватернион вполне хорош. Я его и взял, отпилив ненужные куски (благо лицензия позволяет). Там же ничего, кроме <math.h> не нужно! Но такой подход неправилен по жизни. А обилие изначальных зависимостей приводило к проблемам на некоторых платформах.
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Здравствуйте, alexeiz, Вы писали:
CS>>Хм... я например могу побыстрому соорудить скажем нечто с соплом Лаваля на конце.
A>Это от того, что ты считаешь boost неимоверно продвинутой библиотекой, нечто непонятное и недоступное нормальным людям.
Что заставило тебя сделать такой вывод?
"Советское фирменное сопло" достаточно простая штука если у тебя есть время, потребность, а самое главное желание приглядеться. То же и про буст.
Не у всех просто есть эта роскошь — время.
Буст это процесуализм — программирование ради программирования.
Что в общем-то не есть плохо.
Но я лично например считаю что эту бы силу ("boost" as verb) приложить бы к делу создания самого языка
а не изобретение зубодробительных попыток обойти ограничения оного.
Ну что стоит ввести конструкцию is_pod_type со товарищи на уровне препроцессора?
Или ту же условную инстанциацию шаблонов?
boost::mpl это ж синтаксический дизастер какой-то.
Сколько раз уже говорили — это место человеческого тела только для output.
Здравствуйте, c-smile, Вы писали:
CS>Здравствуйте, alexeiz, Вы писали:
CS>>>Хм... я например могу побыстрому соорудить скажем нечто с соплом Лаваля на конце.
A>>Это от того, что ты считаешь boost неимоверно продвинутой библиотекой, нечто непонятное и недоступное нормальным людям.
CS>Что заставило тебя сделать такой вывод? CS>"Советское фирменное сопло" достаточно простая штука если у тебя есть время, потребность, а самое главное желание приглядеться. То же и про буст. CS>Не у всех просто есть эта роскошь — время. CS>Буст это процесуализм — программирование ради программирования. CS>Что в общем-то не есть плохо.
Не согласен. Boost предлагает конкретные решения для конкретных проблем. "Программирование ради программирования" — это абсолютно не обосновано. Реальные решения проходят обкатку через boost. Ты хоть бы поинтересовался какие библиотеки из boost'а войдут в следующий стандарт. Ни одна другая библиотека общего назначения не может этим похвастаться.
Другое дело если эти проблемы от тебя далеки. Тогда да, кажется, что они там лабудой занимаются.
Теперь о расточении времени. Если человек может себе позволить написать свой собственный shared_ptr или какой-нибудь array, когда тоже самое есть либо в стандарте, либо в boost'е, то о какой экономии времени идет речь? Экономия времени достигается, когда ты можешь использовать солидные существующие наработки, а не изобретать велосипед самостоятельно.
CS>Но я лично например считаю что эту бы силу ("boost" as verb) приложить бы к делу создания самого языка CS>а не изобретение зубодробительных попыток обойти ограничения оного.
CS>Ну что стоит ввести конструкцию is_pod_type со товарищи на уровне препроцессора?
см. type_traits<> в tr1.
CS>Или ту же условную инстанциацию шаблонов?
Контрибьюторы boost'а являются очень активными членами комитета по стандартизации. Это просто невозможно не заметить, если ты интересуешься развитием C++.
CS>boost::mpl это ж синтаксический дизастер какой-то.
Как сказать. Ты можешь предложить более элегантное решение?
CS>Сколько раз уже говорили — это место человеческого тела только для output.
Здравствуйте, alexeiz, Вы писали:
A>Теперь о расточении времени. Если человек может себе позволить написать свой собственный shared_ptr или какой-нибудь array, когда тоже самое есть либо в стандарте, либо в boost'е, то о какой экономии времени идет речь? Экономия времени достигается, когда ты можешь использовать солидные существующие наработки, а не изобретать велосипед самостоятельно.
Чего там такого сложного в shared_ptr или array, чтобы не написать их самому? Очень часто это вполне оправдано. Зависимость от чужого кода, это знаете ли, тяжелая штука, а иногда — и весьма болезненная. Но с другой стороны, от зависимостей никуда не денешься. В конце концов я и сам создаю зависимости и "подсаживаю на иглу".
Я нисколько не агитирую против Буста. Наоборот! Используйте на здоровье, как можно больше и шире. Но сам я — человек консервативный и пока что не тороплюсь. Пусть устаканится хорошенько.
A>Контрибьюторы boost'а являются очень активными членами комитета по стандартизации. Это просто невозможно не заметить, если ты интересуешься развитием C++.
Вот в этом и заключается основная ценность Буста. Хорошо бы усилиями комитета и бустовцев заставить лодырей из MS довести до ума ихний компилятор, а не заниматься всякой мертворожденной отсебятиной типа MC++.
CS>>boost::mpl это ж синтаксический дизастер какой-то.
A>Как сказать. Ты можешь предложить более элегантное решение?
Я могу. Надо направлять больше усилий на доработку самого языка C++. Но это нелегко, однако. Искренне надеюсь, что через Буст мало-помалу C++ будет развиваться.
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Здравствуйте, ssm, Вы писали:
ssm>VC7.1 довольно далеко ушел от своих уродливых старших братцев, чего тебе в нем нехватает?
На самом деле, не очень. Шаблоны он до сих пор толком не компилирует вплоть до момента инстанциации. Они теперь только третуют писать typename там где это необходимо (хоть и на том спасибо), но это требование, на самом деле, искусственное.
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Здравствуйте, alexeiz, Вы писали:
A>Не согласен. Boost предлагает конкретные решения для конкретных проблем. "Программирование ради программирования" — это абсолютно не обосновано. Реальные решения проходят обкатку через boost. Ты хоть бы поинтересовался какие библиотеки из boost'а войдут в следующий стандарт. Ни одна другая библиотека общего назначения не может этим похвастаться.
По теме данной дискуccии я посмотрел random generators в boost.
В частности normal distribution. Генерация оного сделана неэффективно.
Вывод: я не могу слепо взять boost как есть.
A>Теперь о расточении времени. Если человек может себе позволить написать свой собственный shared_ptr или какой-нибудь array, когда тоже самое есть либо в стандарте, либо в boost'е, то о какой экономии времени идет речь? Экономия времени достигается, когда ты можешь использовать солидные существующие наработки, а не изобретать велосипед самостоятельно.
Пример из жизни: Есть модуль котрый создает array. Этот array проходит по цепочке вызовов функций и попадает в конце концов в некую коллекцию которая его хранит.
Пришел к тому что мне нужно написать нечто типа метода transfer
void array::transfer(array& src)
{ this->data = src.data; src.data = 0; this->allocated_size = src.allocated_size; src.allocated_size = 0;
...
}
мне проще написать такой метод за 15 минут (вместе с анализом семантики move)
чем лепить workarounds c использованием std::vector
A>см. type_traits<> в tr1.
Сомнения меня берут что это надо делать через шаблоны вообще.
атомарная конструкция вида has_trivial_default_constructor( typename ) в том числе
позволяет использовать оную и в #if.
CS>>Или ту же условную инстанциацию шаблонов?
A>Контрибьюторы boost'а являются очень активными членами комитета по стандартизации. Это просто невозможно не заметить, если ты интересуешься развитием C++.
Даже встречался лично с некоторыми.
CS>>boost::mpl это ж синтаксический дизастер какой-то.
A>Как сказать. Ты можешь предложить более элегантное решение?
Да. Привести в порядок систему #define со товарищи
Вместо вот этой вот красоты:
template< typename T >
struct can_be_on_stack
: mpl::bool_c< (sizeof(T) <= sizeof(double)) >
{
};
// use 'if_' to choose where to store 'T' membertemplate< typename T >
struct lightweight
: private mpl::if_<
can_be_on_stack<T>
, stack_holder<T>
, heap_holder<T>
>::type
{
// ...
};
Это ж каким надо быть Александреску чтобы считать struct булевой переменной.
И самое главное что как бы народ то привыкает. Это ж хуже Visual Basic, мля!
Я бы предлжил нечто типа
#function bool can_be_on_stack(typename T)
return (sizeof(T) <= sizeof(double));
#end function
#function typename optimal_holder(typename T)
return can_be_on_stack(T)? stack_holder<T>:heap_holder<T>;
#end function
template< typename T >
struct lightweight : private optimal_holder(T)
как бы оно честнее и очевиднее получается, нет?
Имхо в тридцать раз проще написать к компилятору интерпертатор типизированных meta функций
чем имплементировать синтасические тонкости вложенных шаблонов.
А если проще — значит надежнее и значит с большей вероятностью разные компиляторы будут одинаково интерпретировать базовые констукции.
В плохих компиляторах виноваты и разработчики стандартов и разработчики компиляторов в равной степени.
CS>Это ж каким надо быть Александреску чтобы считать struct булевой переменной. CS>И самое главное что как бы народ то привыкает.
просто надо привыкнуть
изначально все эти конструкции из mpl смотрятся очень дико, но после прочтения доки в течении часа и часа на игру с mpl::bool, mpl::if, mpl::enable_if и т.д. они начинают нравится , и не кажутся уже монстрами.
CS> Это ж хуже Visual Basic, мля!
не хуже, а страшней просто.
Здравствуйте, ssm, Вы писали:
ssm>Здравствуйте, c-smile, Вы писали:
ssm>просто надо привыкнут ...изначально все эти конструкции из mpl смотрятся очень дико ... они начинают нравится.
Здравствуйте, peterbes, Вы писали:
P>1. вы используете эту библиотеку в ваших проектах?
Да, в крупных проектах.
P>2. Для тех кто реально использует эту библитеку (см п.1)- P> — вопрос: что именно вы используете?
array, bind, conversion, crc, enable_if, format, function, lambda, mpl, preprocessor, random, regex, smart_ptr, spirit, tuple, variant
random — потому что не вижу смысла в реализации на коленке стандартного mt19937 и пр., а они нужны
P>3. Я понимаю, что это "язык будующего", а я в теориях слаб. P> — вопрос: увеличит ли скорость и качество разработки программого обеспечения если освоить эту новую технологию
Увеличит. Но серебряной пули нет
Здравствуйте, McSeem2, Вы писали:
MS>Здравствуйте, ssm, Вы писали:
ssm>>VC7.1 довольно далеко ушел от своих уродливых старших братцев, чего тебе в нем нехватает?
MS>На самом деле, не очень. Шаблоны он до сих пор толком не компилирует вплоть до момента инстанциации.
так это же требование стандарта С++, или я чего-то не понимаю?
в 7.1 впервые появилась поддержка частичной параметризации шаблонов ...
Здравствуйте, ruslan_abdikeev, Вы писали:
_>Здравствуйте, peterbes, Вы писали:
P>>1. вы используете эту библиотеку в ваших проектах? _>Да, в крупных проектах.
P>>2. Для тех кто реально использует эту библитеку (см п.1)- P>> — вопрос: что именно вы используете? _>array, bind, conversion, crc, enable_if, format, function, lambda, mpl, preprocessor, random, regex, smart_ptr, spirit, tuple, variant
Плюс type_traits (без коментариев), operators (не фанат я писать вручную операторы >, >=, <= для каждого типа), format (хоть и тяжелый, но безопасный по сравнению с printf), filesystem (виндовые и стандартные операции с файлами меня раздражают), thread (иногда), utility (STATIC_ASSERT и т.п.).
У меня принцип простой, использую сначала то что уже есть, если не подходит стараюсь не рать на весь RSDN что бюст и эстиэл отстой, но просто пытаюсь сделать то что мне подходит с похожим интерфейсом (по возможности конечно), что бы хотя бы тот кто будет дальше поддерживать этот проект понимал о чем речь.
Здравствуйте, c-smile, Вы писали:
CS>просто интересно чем это старый добрый rand() то не угодил?
Boost же, вроде, позволяет задавать различные распределения вероятностей. rand() — это равномерное распределение, а если нужно, например, максвелловское?
Здравствуйте, peterbes, Вы писали:
P>Ламерские вопросы к уважаемым коллегам, особливо к тем кто часто рекомендует воспользоваться мощью этой прекрасной библиотеки
P>1. вы используете эту библиотеку в ваших проектах? ( проекты хелоу уорд и все что не продается и не сопровождается хотя бы 2-3 программистами в течение хотя бы 2-3 лет -- это проект для дома для души, для шаравар ...etc, в лучшем случае это "крутая" дипломная работа — пятак обеспечен и так, за крутизну — никто не ничего поймет, а выдать себя в незнании буста никто не решиться)
Используется в коммерческом проекте
P>2. Для тех кто реально использует эту библитеку (см п.1)- P> — вопрос: что именно вы используете? парсите строку при помощи буста, потому что это модно? или вы собрали свой язык и прикрутили его к соей программе, или это что-то другое. Поделитесь, пожалуйста, своим опытом — очень интересно. Собственно, ЭТО ГЛАВНЫЙ ВОПРОС — ответье на него, не посылаете на бам
Использую:
1) boost::regex
2) boost::shared_ptr/scoped_ptr etc.
P>3. Я понимаю, что это "язык будующего", а я в теориях слаб. P> — вопрос: увеличит ли скорость и качество разработки программого обеспечения если освоить эту новую технологию ( я это вот к чему — многие на РСДНе уже утверждают что де-юре буст будет включен в стандарт С++, а следовательно его нужно знать сегодня)
Re[2]: офтопик про буст
От:
Аноним
Дата:
19.04.06 09:30
Оценка:
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, peterbes, Вы писали:
P>> — вопрос: увеличит ли скорость и качество разработки программого обеспечения если освоить эту новую технологию ( я это вот к чему — многие на РСДНе уже утверждают что де-юре буст будет включен в стандарт С++, а следовательно его нужно знать сегодня)
А>Ага, сильно увеличит, если ты в чужом проекте это увидел, а тебе это, причем наполовину рабочее, поднять надо
Молоток не виноват в том, что он оказался в кривых руках.
Я тебе и без буста смогу такое наваять, что и в жизни не поднять
Здравствуйте, c-smile, Вы писали:
CS>По теме данной дискуccии я посмотрел random generators в boost. CS>В частности normal distribution. Генерация оного сделана неэффективно. CS>Вывод: я не могу слепо взять boost как есть.
Так напиши об этом авторам random.
Или прямо в бустовский mailing list, чтобы народ поучаствовал в обсуждении.
Буст же открыт, да и у тебя у самого личные связи есть.
В чем проблема- сделать буст лучше, чтобы им действительно пользовались все без сомнений?
You will always get what you always got
If you always do what you always did
Re[12]: офтопик про буст
От:
Аноним
Дата:
19.04.06 17:19
Оценка:
Здравствуйте, Vark, Вы писали:
V>Здравствуйте, McSeem2, Вы писали:
MS>>Здравствуйте, ssm, Вы писали:
ssm>>>VC7.1 довольно далеко ушел от своих уродливых старших братцев, чего тебе в нем нехватает?
MS>>На самом деле, не очень. Шаблоны он до сих пор толком не компилирует вплоть до момента инстанциации.
V>так это же требование стандарта С++, или я чего-то не понимаю?
Не понимаешь, про двухфазный поиск имен когда-нибудь слышал?
V>в 7.1 впервые появилась поддержка частичной параметризации шаблонов ...