Здравствуйте, eao197, Вы писали:
E>Здравствуйте, skeptik_, Вы писали:
E>>>>>Как, тебе хватает $100 в месяц?
_>>>>Мне хватает 70 евро в час.
E>>>Где же ты таких лохов находишь?
_>>Ась? Стандартная ставка для специалиста с уровнем выше среднего вообще-то...
E>Так тож для специалистов. Да еще уровнем выше среднего...
Аргументы, как я понимаю, кончились? Пошли в ход оскорбления? Я был о тебе, честно говоря, лучшего мнения.
Здравствуйте, eao197, Вы писали:
_>>Пошли в ход оскорбления?
E>Это был откровенный стеб, после понтов о фрилансерстве.
Какие понты? Я 15 лет живу в Германии, здесь такие ставки для фрилансеров -- обычное дело, средняя сейчас — 65 евро. SAP'шники так и того больше зарабатывают.
Здравствуйте, minorlogic, Вы писали:
M>Я не пониамаю тебя. Буст стремится объеденить лучшее что есть в индустрии с оглядкой на принцыпы залорженные в C++ и его библиотеках. Если есть билиотека решающая поставленные задачи лучеш чем решение в бусте , я не вижу причин по которым бы эта библиотека не вытеснила бустовскую и не заняла ее место.
Мы тут, конечно, все не Грибоедовы, но хотя бы чуть-чуть текст на опечатки можно проверять?
(Фанаты буста проигрывают по русскому языку)
Здравствуйте, eao197, Вы писали:
E>Понятно, т.е. вместо кода: E>
E>int result = do_something();
E>if( result )
E> throw some_exception( "do_something failed with result: " + slexcast( result, hex_0x ) );
E>
E>мне нужно будет делать что-то вроде: E>
E>int result = do_something();
E>if( result )
E> throw some_exception( "do_something failed with result: " + str( format( "0x%x" ) % result ) );
E>
E>Зато, блин, буст. Не какой-нибудь свой велосипед.
Поискал в гугле slexcast, нашёл твой сайт. Всё сразу стало ясно: запущенный случай велосипедостроедизма:
args_4 => Boost.Program_options
auto_ptr_3 => Boost.Smart_ptr
cls_2 => Boost.Program_options
cpp_util_2 => Boost.Conversion + noncopyable + Function
mxx4 => Boost.Build
smart_ref_3 => Boost.Smart_ptr
threads_1 => Boost.Thread
Не, тебе своего времени не жалко? Ну ладно было бы что-то чего нет в бусте, или было бы сделано лучше. Так у тебя ж даже тестов нормальных нет и функциональности десятая часть от бустовских аналогов. Хочется что-то сделать — сделай то, чего ещё нет. Например Boost.DB, Boost.GUI или Boost.Net. Сразу станешь famous.
Здравствуйте, skeptik_, Вы писали:
_>Поискал в гугле slexcast, нашёл твой сайт. Всё сразу стало ясно: запущенный случай велосипедостроедизма: _>args_4 => Boost.Program_options
Библиотеки args_* я развивал и использовал где-то с 1996 до 2004. Boost.Program_options появился в Boost 1.32, это где-то 2004-й год.
_>auto_ptr_3 => Boost.Smart_ptr
auto_ptr_* это попытка устранить косяки с auto_ptr в разных компиляторах (VC++ 5.0, 6.0, g++ 2.95). Где-то в районе 1998-2002 гг.
_>cls_2 => Boost.Program_options
Мимо кассы. Cls -- это синтаксис разметки, основанный на ситаксисе языка программирования Curl. В чем-то конкурент XML и YAML. Первая реализация -- 2001-й год, сейчас идет разработка cls_3. Уже несколько лет есть ее порт на Ruby -- ClsRuby.
_>cpp_util_2 => Boost.Conversion + noncopyable + Function
+ еще адаптация к особенностям разных компиляторов. И все это в нескольких килобайтах архива.
Эксперименты с unary_method -- это так, попытка приобщится к modern C++ design. В будущем я его вообще оттуда выкину.
Новые версии cpp_util_2 я вообще очень давно на сайт не выкладывал, а там появились новые вещи, например, hex_dump::string_dumper, hex_dump::hex_escaped_string_dumper, string_piece, temporary_object_ref.
_>mxx4 => Boost.Build
mxx4 был разработан в начале 2001 года. В 2004 был заменен на Mxx_ru. В некоторых вещах Boost.Build вообще не имеет никаких преимуществ перед инструментами типа Mxx_ru или SCons, если не сказать больше.
Имхо, Boost.Build может нравится только тем, кто нормальных инструментов не видел, т.к. SCons, qmake, Rake, CMake, MPC, Mxx_ru.
_>smart_ref_3 => Boost.Smart_ptr
Первые smart_ref_* у меня появились, если не ошибаюсь, где-то в 97-м. Одна из целей smart_ref_* -- сделать возможным экспорт умных указателей из DLL. Уже года три не используется -- есть ACE_Refcounted_Auto_Ptr.
_>threads_1 => Boost.Thread
Библиотека threads появилась в 96-м, и прошла через Windows, OS/2, Linux, BSD еще до того, как о Boost-е узнала общественность. Затем была адаптирована даже под NonStop Kernel. С 2004 года не используется вообще. Сейчас есть средства ACE.
Кстати, в threads_1 такие вещи, как condition variables и rw_mutex, присутствовали давно и на всех платформах. В отличии от.
Ты еще забыл ObjESSty => Boost.Serialization.
_>Не, тебе своего времени не жалко?
Жалко. Но это не было потерянное время. Сейчас такие вещи, как cls, mxx_ru и objessty -- это ключевые инструменты в наших проектах. А mxx4 был хорошим опытом реализации своего скриптового языка, который затем несколько раз был востребован.
_>Ну ладно было бы что-то чего нет в бусте, или было бы сделано лучше.
ObjESSty -- половины ее функциональности в бусте нет, а вторая половина в бусте просто хуже.
cls -- в бусте нет.
_>Хочется что-то сделать — сделай то, чего ещё нет. Например Boost.DB, Boost.GUI или Boost.Net. Сразу станешь famous.
А я и делаю. ObjESSty, например. Mxx_ru. SObjectizer. За счет чего уже famous в узких кругах.
Делать что-нибудь для Boost? Это неправильная постановка вопроса -- разрабатывать нужно то, что необходимо тебе и, при желании, публиковать в виде OpenSource. Кто заинтересуется -- присоединится к разработке.
Boost.DB => есть OTL, Soci, Qt, Ultimate++
Boost.GUI => есть FLTK, FOX, Qt, wxWidgets, Ultimate++
Boost.Net => есть ACE, Poco
Ну и нафига в очередной раз заводить песню "мы наш мы новый мир построим"?
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
И за 11-12 лет ты к своим либом даже юнит-тесты не собрался прикрутить? Короче, говорить тут не о чём. Велосипед -- он и есть велосипед. А то, что велосипеды используются дальше, когда появились production quality аналоги -- это уже клиника.
Да, вот ты сказал, что boost::lexical_cast это плохо, ибо тормозит и негибко. И что slexcast это круто. Ну что ж, смотрим в код, и видим:
template< class From, class Putter >
std::string
slexcast(
//! Что преобразуется.const From & f,
//! Как преобразуется.const Putter & putter )
{
std::stringstream ss;
putter( ss, f );
return ss.str();
}
и ты хочешь сказать, что это быстрее чем boost::lexical_cast или гибче чем boost::format?
Комментарии нужны, или и так всем всё ясно?
Здравствуйте, skeptik_, Вы писали:
_>И за 11-12 лет ты к своим либом даже юнит-тесты не собрался прикрутить?
Доработки покрываются unit-тестами, то что было сделано давно без unit-тестов и не меняется, так без unit-тестов и остается.
Если не ошибаюсь, 12-ть лет назад unit-тесты широко использовались разве что Кентом Беком.
_>Короче, говорить тут не о чём. Велосипед -- он и есть велосипед.
Да, я люблю строить велосипеды. Временами это получается.
_>А то, что велосипеды используются дальше, когда появились production quality аналоги -- это уже клиника.
В моих условиях проще пользоваться своим маленьким велосипедом, чем production quality паровозом Boost-а.
_>Да, вот ты сказал, что boost::lexical_cast это плохо, ибо тормозит и негибко. И что slexcast это круто. Ну что ж, смотрим в код, и видим: _>
_>template< class From, class Putter >
_>std::string
_>slexcast(
_> //! Что преобразуется.
_> const From & f,
_> //! Как преобразуется.
_> const Putter & putter )
_>{
_> std::stringstream ss;
_> putter( ss, f );
_> return ss.str();
_>}
_>
_>и ты хочешь сказать, что это быстрее чем boost::lexical_cast или гибче чем boost::format?
Я хочу сказать, что это гибче, чем boost::lexical_cast. А на произвольных пользовательских типах не медленнее. И проще в нужных use case-ах, чем boost::format.
_>Комментарии нужны, или и так всем всё ясно?
Я бы послушал
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, eao197, Вы писали:
E>Понятно, т.е. вместо кода: E> throw some_exception( "do_something failed with result: " + slexcast( result, hex_0x ) ); E>мне нужно будет делать что-то вроде: E> throw some_exception( "do_something failed with result: " + E> (format( "0x%x" ) % result).str() ); E>[/ccode]
На всякий случай, в Boost.Format это выглядит иначе:
throw some_exception(str(boost::format("do_something failed with result: 0x%x") %result));
throw some_exception(str(boost::format("Oops! Result = 0x%1$x (%1%), error = %2%") %errno %strerror(errno)));
Здравствуйте, eao197, Вы писали:
E>Имхо, Boost.Build может нравится только тем, кто нормальных инструментов не видел, т.к. SCons, qmake, Rake, CMake, MPC, Mxx_ru.
Здравствуйте, VoidEx, Вы писали:
E>>Имхо, Boost.Build может нравится только тем, кто нормальных инструментов не видел, т.к. SCons, qmake, Rake, CMake, MPC, Mxx_ru.
VE>В порядке интереса, а чем же Boost.Build плох?
Когда я года четыре назад пытался найти замену mxx4 чтобы переползти на одну экзотическую платформу, то смотрел на Boost.Build в попытке добавить туда поддержку нужного мне компилятора. Сейчас уже не помню подробностей, но у меня осталось впечатление, что Boost.Build -- это такая адская смесь недо-make и недо-языка программирования. Из особенно ярких воспоминаний -- необходимость ставить пробелы перед завершающими строку точками с запятой.
Но сравнению с Boost.Build такие вещи, как SCons и MPC осваиваются гораздо проще. При этом SCons еще и построен на базе нормального языка программирования (как и Rake, Mxx_ru).
Если бы сейчас поиск на RSDN работал, то можно было бы попробовать найти обсуждения Boost.Build-а в форумах по C++.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, eao197, Вы писали:
E>Когда я года четыре назад пытался найти замену mxx4 чтобы переползти на одну экзотическую платформу, то смотрел на Boost.Build в попытке добавить туда поддержку нужного мне компилятора. Сейчас уже не помню подробностей, но у меня осталось впечатление, что Boost.Build -- это такая адская смесь недо-make и недо-языка программирования. Из особенно ярких воспоминаний -- необходимость ставить пробелы перед завершающими строку точками с запятой.
Пробел многих раздражает почему-то
E>Но сравнению с Boost.Build такие вещи, как SCons и MPC осваиваются гораздо проще. При этом SCons еще и построен на базе нормального языка программирования (как и Rake, Mxx_ru).
Не знаю, может, изменилось что-то, но, по-моему, буст.билд очень просто осваивается.
Возможно, у меня требования небольшие, но что такого особенного умеет, например SCons?
E>Если бы сейчас поиск на RSDN работал, то можно было бы попробовать найти обсуждения Boost.Build-а в форумах по C++.
Да, с поиском что-то не то
Здравствуйте, eao197, Вы писали:
_>>cpp_util_2 => Boost.Conversion + noncopyable + Function
E>+ еще адаптация к особенностям разных компиляторов. И все это в нескольких килобайтах архива. E>Эксперименты с unary_method -- это так, попытка приобщится к modern C++ design. В будущем я его вообще оттуда выкину. E>Новые версии cpp_util_2 я вообще очень давно на сайт не выкладывал, а там появились новые вещи, например, hex_dump::string_dumper, hex_dump::hex_escaped_string_dumper, string_piece, temporary_object_ref.
Выложил на сайт последнюю версию cpp_util_2. Документации в on-line нет, т.к. она генерируется doxygen-ом в utf-8, а narod.ru этого очень не любит. Зато есть ее архив.
Там в документации есть специальный раздел, посвященный lexcast/slexcast с объяснением того, почему я сделал lexcast вместо использования boost::lexical_cast.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, VoidEx, Вы писали:
E>>Но сравнению с Boost.Build такие вещи, как SCons и MPC осваиваются гораздо проще. При этом SCons еще и построен на базе нормального языка программирования (как и Rake, Mxx_ru).
VE>Не знаю, может, изменилось что-то, но, по-моему, буст.билд очень просто осваивается. VE>Возможно, у меня требования небольшие, но что такого особенного умеет, например SCons?
К сожалению, у меня нет времени на то, чтобы заново ознакомится с Boost.Build и SCons-ом, чтобы провести такое сравнение. Насколько я помню, самое важное -- это различие в подходах. Boost.Build -- это развитие make, тогда как SCons -- это подход на основе шаблонов. Человек в SCons (MPC, Mxx_ru) просто указывает какую цель ему нужно достичь, а формирование make-правил берет на себя SCons.
Итогом этого является то, что проектный файл в SCons (MPC, Mxx_ru) больше напоминает обычную маленькую простую программу. Тогда как в Boost.Build это make-правила со всякими особенностями, присущими make.
Все субъективно, естественно.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, Handie, Вы писали:
RO>>Коней на переправе не меняют, это верно, но если нужна какая-то новая библиотека, по-моему, есть смысл поискать в первую очередь в Boost, а потом уже и в других местах. Логистические проблемы Boost мне не представляются сколько-нибудь значимыми.
H>Посмотрел boost regex и в ужасе перешел на TRE.
Ну и что тебя там напугало? Уже пятый пост шарахаешся?
Возьми тогда boost::xpressive или опять душа в пятки?
Здравствуйте, minorlogic, Вы писали:
M>А меня вот не наводит. И еще если програмист на С++ не пользуется стандартной билиотекой по умолчанию, это уже наводит меня на определенные мысли.
Интересно. А что ты скажешь если программист не пользуется стандартной билиотекой по умолчанию, но при этом хорошо ее знает и имеет серьезный опыт ее применения?
M>А если кричит что буст это отстой и при этом не строчки не зная и не понимая как это работает
Аналогично. Если от буста отказались после длительного применения?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, skeptik_, Вы писали:
_>Ага. А взамен такой товарищ будет юзать самописный список с линейным поиском.
Неверно.
_>Плавали, знаем.
Ну вот и понятно в какой субстанции плавали и соответственно что об этом знаете.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, CreatorCray, Вы писали:
CC>Здравствуйте, skeptik_, Вы писали:
_>>Ага. А взамен такой товарищ будет юзать самописный список с линейным поиском. CC>Неверно.
_>>Плавали, знаем. CC>Ну вот и понятно в какой субстанции плавали и соответственно что об этом знаете.
Нет, просто доводилось исправлять так написанные продукты.
Здравствуйте, CreatorCray, Вы писали:
CC>Здравствуйте, minorlogic, Вы писали:
M>>А меня вот не наводит. И еще если програмист на С++ не пользуется стандартной билиотекой по умолчанию, это уже наводит меня на определенные мысли. CC>Интересно. А что ты скажешь если программист не пользуется стандартной билиотекой по умолчанию, но при этом хорошо ее знает и имеет серьезный опыт ее применения?
M>>А если кричит что буст это отстой и при этом не строчки не зная и не понимая как это работает CC>Аналогично. Если от буста отказались после длительного применения?
Было бы интересно поработать с таким програмистом, если бы он смог предоставить лучшее решение.