Ненавижу
автоматически рождающиеся объекты типа блокирующего loading-on-demand. И синглтоны типа Майерса.
автоматически уничтожающиеся объекты под smart_ptr. И подсчёт ссылок.
автоматически регистрирующиеся получатели сообщений. И unbound рассылку сообщений.
автоматически создающиеся нетривиальные объекты со статическим storage duration. И вообще бурную деятельность до main().
мгновенность, нераспределенность, модель exception, lower-order programming.
Но научить правильно не всегда получается.
автоматически рождающиеся объекты типа блокирующего loading-on-demand. И синглтоны типа Майерса.
автоматически уничтожающиеся объекты под smart_ptr. И подсчёт ссылок.
автоматически регистрирующиеся получатели сообщений. И unbound рассылку сообщений.
автоматически создающиеся нетривиальные объекты со статическим storage duration. И вообще бурную деятельность до main().
мгновенность, нераспределенность, модель exception, lower-order programming.
Но научить правильно не всегда получается.
Re: модель exception
Date: May. 30th, 2006 23:05 (UTC)Но если бы были нужны или если мы говорим про специфические места типа Live и т.п., или если мы говорим про бизнес логику на стыке игра-биллинговая система, то
- они мгновенны - то есть откатить транзакцию или показать диалоговое окно или отложить обработку или тупо retry в процессе раскрутки стека нельзя; в теории это ненужно, на практике - тот же откат транзакций - или сбой в двухфазном коммите - гораздо более сильное средство.
- они непереносимы в другие контексты.
в многопоточном движке исключение типа "ошибка инициализации ассета" (и уж тем более "нет памяти") бессмысленно и возникает не там, где оно нужно. классическая проблема HRESULT и передачи ошибок в схемах типа pipelines-фильтры-IPC.
В принципе о них можно думать как о второй ветви continuation.
И в принципе в исключения можно нарастить всю историю трансформации исключения от "нет файла" до "поменяйте DVD с игрой" (как в .NET).
- у них жёсткий неуправляемый матчинг, основанный на прямолинейной иерархии наследования. часто хочется декларативной тегированной или шаблонно-тегированной схемы сопоставления.
Re: модель exception
Date: May. 31st, 2006 00:41 (UTC)Конечно система не идеальная, лучще что бы компилятор решал где могут быть ошибки (если ему известна логика поведения модулей), а где нет, нужна обработка или нет, но это уже в сторону Singularity. Оно нас всех вылечит...
Re: модель exception
Date: May. 31st, 2006 21:02 (UTC)Аналогичная проблема есть в классическом паттерне типа фильтры (пайплайн).
Скажем, alla UNIX система наборных мелких утилит, которые ты соединяешь output->input.
Если ты рассчитываешь, что всё хорошо -- всё хорошо.
Но если что-то поросло - удачи :)