Флейм
GameDev.ru / Флейм / Форум / Архитектура без исключений (C++) (5 стр)

Архитектура без исключений (C++) (5 стр)

Поделиться
Страницы: 1 2 3 4 5 6 7 Следующая »
1 frag / 2 deathsУчастникwww7 дек. 201710:30#60
war_zes
При исключениях не будет никакого if нигде, кроме нижнего уровня, лалка.
nesПостоялецwww7 дек. 201710:51#61
Merrewend
Доходчиво, благодарю.
beejahПостоялецwww7 дек. 201714:48#62
return [](){};
> Он проходит по всему стеку вызовов и ему известны адреса функций, никто не
> мешает сохранить их и потом разрезовить в имена, кроме крестокомитета конечно
Не не не. Стэк вызовов - это маршрут, по которому идет флоу во время формирования и обработки эксепшна.
И достать из него бектрейс ты не можешь. Вернее, можешь однажды и не достать - это такие дебри ОС и бинарного формата, что вообще никто ничего не гарантирует - достаточно посмотреть под теми же виндами, насколько это специфично для x32 / x64.

Бектрейс - это другое, это стек вызовов, который был в момент возникновения эксепшона - т.е он сидит в прицепленном контексте.
Из которого его еще достать надо. А как его достать - это уже сфера вендора, который просто скажет крестокомитетчикам:

"Ребята, идите нахер со своими рацпредложениями. Мы 20 лет решаем проблемы языка, т.е ваши проблемы своими средствами.
Сейчас вы нам еще на 20 лет задач подкинете? Почему бы вам не выкинуть свое говно на помойку и не проявить энтузиазм в направлении языков, в которых подобные проблемы уже решены, и решены вовремя, а не висят 20 лет в состоянии "ну, мы написали кодогенератор, посмотрите, правда, похоже на систему исключений"? ДА ИДИТЕ В ЖОПУ СО СВОИМИ КРЕСТАМИ, НОРКОМАНЫ".

Как-то так.

МизраэльПостоялецwww7 дек. 201716:07#63
return [](){};
> Могу привести пример где компилятор сгенерит более оптимальный код с
> исключениями чем с ретурн кодами
А можешь привести пример, где исключение летает между модулями на разных языка? Нет? Исключения - досвидос.
beejahПостоялецwww7 дек. 201716:56#64
Я же говорю, норкоманы.
ZefickПостоялецwww7 дек. 201718:05#65
nes
> Вот вы гребаные умники, вместо того чтоб тупо глумиться на 100500 страниц темы,
> могли бы по-человечески объяснить
  Да бесполезно объяснять идиотам-максималистам, которые научились в жизни только одному трюку и не хотят менять привычки. Таких только жизнь заставит измениться, а до тех пор они не собираются что-то понимать даже если им нормально объяснить. Тут надо объяснять на разрывающих пердак примерах, только тогда есть шанс пробить барьер скептицизма, но никому не охота этого делать. Практика и так давно показала, что удобство от использования исключений с лихвой покрывает любые возможные пенальти производительности, которые ещё вообще не факт, что появятся. Ну ковыряются какие-то юродивые с кодами возврата в своей песочнице, нормальным людям от этого что, плохо что ли?

Правка: 7 дек. 2017 18:06

Panzerschrek[CN]Участникwww7 дек. 201718:10#66
Zefick
> Практика и так давно показала, что удобство от использования исключений с
> лихвой покрывает любые возможные пенальти производительности

В Жабе хоть обиспользуйся исключениями, там производительность пофигу. А вот кресты используют там, где не совсем пофигу, и в этом случае исключения кое-где только мешают.

-Eugene-Постоялецwww7 дек. 201718:35#67
Zefick
> Практика и так давно показала, что удобство от использования исключений с
> лихвой покрывает любые возможные пенальти производительности, которые ещё
> вообще не факт, что появятся.
не использовать исключения != использовать коды возврата.
Можно использовать return false и он лучше обоих. И в 80% решает задачу.
ZefickПостоялецwww7 дек. 201718:41#68
Panzerschrek[CN]
> А вот кресты используют там, где не совсем пофигу, и в этом случае исключения кое-где только мешают.
  Просто в крестах даже не определяется каким образом они должны быть реализованы на бинарном уровне. Поэтому, например, нельзя кидать исключения из функций DLL и делать много других вещей. Если бы это сразу сделали по человечески, то и не было бы таких тем, как эта. А если исключения действительно так тормозят, то как раз в языках типа явы, питона или JS было бы больше смысла использовать коды возврата, но почему-то именно там исключения активно используются. И ещё фишка в том, что как раз там-то они почти бесплатные, потому что рантайму не нужно делать практически ничего в том случае, когда они не бросаются. Так что теория неосиляторов не подтверждается в который уже по счёту раз.

Правка: 7 дек. 2017 18:45

beejahПостоялецwww7 дек. 201718:57#69
Zefick
Тогда почему неюродивые и прогрессивные не могут предоставить реализацию банального графического апи системного уровня OpenGL или Directx, использующую исключения? Потому что задача с их скиллами написания оберток над обертками не пересекаются? Или потому что использовать исключения за пределами очередной обертки над оберткой - не так выгодно, как ты тут заливаешь?
Зефик критикует максимализм, лол.
Panzerschrek[CN]Участникwww7 дек. 201719:14#70
Zefick
> Просто в крестах даже не определяется каким образом они должны быть реализованы
> на бинарном уровне. Поэтому, например, нельзя кидать исключения из функций DLL
> и делать много других вещей.
Ну, бинарная совместимость никем и никогда не гарантировалась вообще для всего. В стандарте даже нету ничего про name mangling, так что каждый лепит что-то своё.
Поэтому, кстати, никто в здравом уме не использует активно кресты с DLL. Исключение - DLLки с чисто сишными функциями.

> А если исключения действительно так тормозят, то как раз в языках типа явы,
> питона или JS было бы больше смысла использовать коды возврата
В этих языках столько всякой рантаймовой петушни, что исключения их уже не особо портят.

> И ещё фишка в том, что как раз там-то они почти бесплатные, потому что рантайму
> не нужно делать практически ничего в том случае, когда они не бросаются
Ага, а за отсутствие деструкторов платим говносборщиком.

beejahПостоялецwww7 дек. 201719:51#71
Panzerschrek[CN]
> Поэтому, кстати, никто в здравом уме не использует активно кресты с DLL.
Не поэтому.
Потому что 1. крестоинтерфейс принципиально вообще никуда не протянешь, кроме крестов, даже с супер-портабельным бинарным выхлопом  2. экспортировать нечего - темплейт на темплейте темплейтом в хедера под сборку подгоняет.
ZefickПостоялецwww7 дек. 201719:57#72
Panzerschrek[CN]
> Ага, а за отсутствие деструкторов платим говносборщиком.
  Ну кто-то платит, а кто-то нет. Сборщик мусора в современной яве начинает давать какой-то заметный вклад начиная с куч размером в десятки гигабайт. Ты такие, конечно же, никогда в своей жизни не видел и вряд ли вообще увидишь, если продолжишь кодить на крестах.
1 frag / 2 deathsУчастникwww7 дек. 201719:59#73
Zefick
> Ну кто-то платит, а кто-то нет.
Платить приходится, когда какой-то достижимый, но нафиг не нужный объект держит в видеопамяти массив на пару гигов.
-Eugene-Постоялецwww7 дек. 201720:02#74
1 frag / 2 deaths
> Платить приходится, когда какой-то достижимый, но нафиг не нужный объект держит
> в видеопамяти массив на пару гигов.
Ты так говоришь, будто о диспозаблях не слышал.
Страницы: 1 2 3 4 5 6 7 Следующая »

/ Форум / Флейм / Программирование

2001—2017 © GameDev.ru — Разработка игр