Ненавижу
автоматически рождающиеся объекты типа блокирующего 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.
Но научить правильно не всегда получается.
no subject
Date: May. 31st, 2006 18:32 (UTC)no subject
Date: May. 31st, 2006 18:37 (UTC)Тот пример, какой я привел - кажется совсем глупым?
no subject
Date: May. 31st, 2006 18:46 (UTC)Но рефкаунтов всё равно не было.
Правда, расскажи за sine qua non!
no subject
Date: May. 31st, 2006 18:51 (UTC)И те - именно один на чанк?
Уважуха. Давай ты еще меня добьешь и скажешь, что пулов не было вообще. И патиклы летали группами по ровно 20.
no subject
Date: May. 31st, 2006 20:07 (UTC)Пулы были. Кэши были.
Размеры партикл систем были известны, конечно, заранее.
Операторов new во время собственно retail игры, насколько я помню, таки не было совсем. Но могу легонько приврать.
Впрочем, assertы вроде ближе к релизу не срабатывали.
no subject
Date: Jun. 1st, 2006 07:37 (UTC)no subject
Date: Jun. 1st, 2006 07:53 (UTC)Даже стеки были. На каждый поток.
Я не говорю, что каждый выделил себе по максимуму на всякий случай (хотя, кстати, в каких-то местах это близко к правде).
Я говорю, что максимум этот определен, и суммарный максимум тоже и от него пляшешь.
Когда я говорю "динамическое выделение", я имею ввиду Васю Пупкина с немытой попой, когда он делает v.push_back() или создает какой-нибудь string или того хуже hashmap.
Ну или там std::vector в функции просто чтобы ему напомнили, если он индексы неправильно посчитает, а boost::array не подходит, потому что требует фиксированного размера.
no subject
Date: Jun. 1st, 2006 05:35 (UTC)А вообще приведенный тобой пример - это идеологический refcount, который как метод решения локальной задачи вполне применим. Я против refcount, который темплейтом оборачивает любой поинтер, даже если это локальная переменная с очевидным временем жизни несколько микросекунд.
no subject
Date: Jun. 1st, 2006 07:27 (UTC)Не в ref count зло, очевидно, но в ленности духа.
no subject
Date: Jun. 1st, 2006 07:51 (UTC)Руслан, Дима, вы серьезно верите, что ленность духа неминуемо следует из refcount и STL? ;)
no subject
Date: Jun. 1st, 2006 08:06 (UTC)Я видел много программистов и еще больше кода.
И - да - любой из пунктов выше плюс STL - это индекс рисков на ленность духа.
Но есть еще программисты, которым не нужен STL и smart ptr, потому что они дебилы и еще и мой пост прочли. И они будут теперь говорить, что smart ptr - это плохо, и поэтому они не будут даже разбираться, что это такое.
Чтобы уметь НЕ пользоваться, нужно сначала таки научиться пользоваться.
И про это хорошо пишет Гай Кавасаки.