Про самое последнее дело — совершенно согласен. Но если вдруг припрёт, то текстовый редактор найти проще, чем конвертер Постскрипта. Кроме того, документация по SVG кажется мне более полной и понятной.
К счастью, всё это уже сделано, и многократно.
Правда иногда использовать такого монстра проектирования для рисования простой картинки — всё равно, что стрелять из пушки по воробьям.
Я же описываю противоположную крайность. Метафорически, когда дырка нужна, а сверла нет, то и гвоздиком проковырять можно.
Девушка вбивала данные в компьютер, а Гусев оценивал обстановку. Обычная государственная контора, безликий ремонт, безликая мебель, все чистенько, аккуратненько, и почему-то совершенно нет очередей, что для него, выходца из двадцатого века, было очень странно. На стойке, рядом с окошком, рядом с ручкой для посетителей, Гусев обнаружил какую-то кнопку. Наверное, звонок, чтобы привлечь внимания, если у окошка никого нет, подумал Гусев и машинально эту кнопку нажал. Ну так, знаете, обычный рефлекс. Видишь кнопку, нажимаешь на кнопку.
Звонок так и не прозвенел, зато девушка вздрогнула. Даже не так. По ее телу пробежала судорога, и она направила на Гусева взгляд своих красивых, внезапно наполнившихся слезами глаз.
— Ну, зачем вы так? — спросила она. — Я же работаю.
— Э, — сказал Гусев, чувствуя себя обезьяной, забравшейся в салон автомобиля. — Извините. Я не хотел. Я машинально.
Девушка всхлипнула и вернулась к работе.
Гусев посмотрел на нее сквозь прозрачное стекло и увидел электрический провод, подсоединенный к ее офисному креслу на колесиках и ему стало еще более стыдно, чем раньше. Зато он понял, почему в государственных учреждениях нынче нет очередей.
Жестоко, подумал он, вспоминая попытки оплатить квитанцию в сберкассе или забрать на почте свою посылку. Возможно, в те времена он бы и не отказался от такой кнопки, бьющей нерасторопных госслужащих током, но сейчас…
Мне кажется, что была задумана реакция типа «Engineer, oh, so cute».
Но у людей, знакомых с «When I see a bird that walks like a duck...», реакция будет скорее «And how do you quack?»
Согласен, что объявлять кучу типов неудобно. Но это хорошо, это заставит программиста быть аккуратнее. Программа, где не обработана хотя бы одна ошибка, просто не скомпилируется.
Ну, не каждая строчка вообще, а только каждая потенциально опасная строчка.
На мой взгляд, это вполне приемлемая цена за отсутствие исключений.
try {
innocent_looking_function();
}
catch ( const boost::exception& e ) {
// Everyone uses boost
handle_error( boost::diagnostic_information( e ) );
}
catch ( const std::exception& e ) {
// Everyone uses std
handle_error( e.what() );
}
catch ( const CException& e ) {
// The library provider has defined his own CException thrown by reference
handle_error( e.what() );
}
catch ( CException* e ) {
// But there is a 20 year old MFC stuff as well; do include magic in order to compile
handle_error( e->Text() );
e->Delete();
}
catch( ... ) {
// I have no idea what else can be thrown
handle_error(_T("No idea what was thrown"));
}
Правда иногда использовать такого монстра проектирования для рисования простой картинки — всё равно, что стрелять из пушки по воробьям.
Я же описываю противоположную крайность. Метафорически, когда дырка нужна, а сверла нет, то и гвоздиком проковырять можно.
Цивилизация страуса
Но у людей, знакомых с «When I see a bird that walks like a duck...», реакция будет скорее «And how do you quack?»
На мой взгляд, это вполне приемлемая цена за отсутствие исключений.
Garbage collector'а нет в языке, но разные аллокаторы можно подключать через библиотеки (например Arena).
Получается, что только Singleton, Factory, Strategy, LazyInitialization, и GodObject (хоть как-то) работают, а остальные — так, планктонствуют.
В C++98 нет constexpr.
А нельзя ли для масштаба добавить к трём lock-free стэкам ещё и простейший стэк с блокировкой (CriticalSection или mutex)?