Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / Исключения в C++

Исключения в C++

Страницы: 1 2 37 8 Следующая »
IBetsПользовательwww7 мая 201823:13#0
Почему Google не используют исключения в C++?
Если они такие дорогие, то просто не выбрасывать в цикле.

return [](){};Участникwww7 мая 201823:20#1
https://google.github.io/styleguide/cppguide.html#Exceptions
On their face, the benefits of using exceptions outweigh the costs, especially in new projects. However, for existing code, the introduction of exceptions has implications on all dependent code. If exceptions can be propagated beyond a new project, it also becomes problematic to integrate the new project into existing exception-free code. Because most existing C++ code at Google is not prepared to deal with exceptions, it is comparatively difficult to adopt new code that generates exceptions.
Great V.Постоялецwww13 мая 201820:25#2
IBets
> Почему Google не используют исключения в C++?
Потому что неосиляторы.
Очевидно же.
DelfigamerПостоялецwww13 мая 201821:16#3
Вот, видимо, зря я в соседнем треде не поднял вопрос о кодстайлах. Хотел сказать, что у Google есть свои причины писать код так, как это делают они, и что эти причины далеко не всегда применимы, следовательно - кодстайл Google не универсален. Например, для геймдева соглашения гугл - скорее говно, чем польза.
Думал, тут все люди умные, и без меня об этом догадаются.
Если уж вам так хочется писать, как крутые дядьки, по крайней мере возьмите дядек, которые пишут то же, что вы. А ещё лучше - посмотрите на несколько дядек и подумайте, почему они пишут по-разному и что из этого - обоснованные требования, а что - не более, чем сложившиеся традиции.
foxesПостоялецwww14 мая 20180:55#4
return [](){};
Там вообще много чего написано. Они также "упростили" документацию разработчика благодаря этому, иначе пришлось бы все нюансы описывать, как и что надо делать в разных случаях.

IBets
Я так понял они его просто не использую в релизе. Исключения не более чем удобны для отладки, а в релизе генерят лишний мусор. По мне, я такую логику поддерживаю, поскольку есть железо и оно в рамках ос может все что надо сгенерить. Лишнего зачем городить?
Где то на эту тему уже было общение по поводу излишек кода при использовании исключений, и как от них избавиться - заменой исключения на передачу выходного/глобального параметра.

IBets
> Если они такие дорогие, то просто не выбрасывать в цикле.
Вот ты сделаешь функцию с генерацией исключения, а я ее буду использовать в цикле. Одним словом просто усложняет разработку.

Правка: 14 мая 2018 1:23

kvakvsПостоялецwww14 мая 20181:30#5
Могу придумать два случая когда исключения только мешают:
1. Работа с микроконтроллерами, код обработки исключений жирный, а места мало.
2. Работа с легаси библиотеками на С, тогда исключения между разными языками не работают.
А так то не осилили прост.
МизраэльПостоялецwww14 мая 201813:11#6
kvakvs
> Могу придумать два случая когда исключения только мешают:
> 1. Работа с микроконтроллерами, код обработки исключений жирный, а места мало.
> 2. Работа с легаси библиотеками на С, тогда исключения между разными языками не
> работают.
> А так то не осилили прост.
Есть ещё третья и основная причина - если весь код у тебя не компилится в единый бинарник, про исключения можешь забыть.
RikkПостоялецwww14 мая 201813:58#7
kvakvs
> 1. Работа с микроконтроллерами, код обработки исключений жирный, а места мало.
есть свидетельства которые утверждают —- google делан на типа тыщи штук домашние компьютеры типа там Pentium4 версии 2000годов , набрали такие —сделали сеть .простейшее оборудование+качественные отказоустойчивые программы. то есть не спец.сервера.
Ghost2Постоялецwww14 мая 201814:04#8
Rikk

> google делан на типа тыщи штук домашние компьютеры типа там Pentium4 версии 2000годов
Это ваш таджикский гугл так "делан".

RikkПостоялецwww14 мая 201814:06#9
Ghost2
> Это ваш таджикский
таджики или нетаджики но такие свидетельства существуют.
pdaПостоялецwww14 мая 201814:18#10
Есть ещё одна причина не использовать исключения. Дело в том, что Google - компания, пишущая себе серверный код. Который работает в основном на Linux. А на Linux нет системных исключений и необработанное исключение в одном модуле не проталкивается выше по стеку, а приводит к падению программы. Не то, чтобы с этим нельзя было бороться, но это неприятные моменты, "череватые боком".
RikkПостоялецwww14 мая 201814:55#11
Изображение
innuendoПостоялецwww14 мая 201814:56#12
pda
> Есть ещё одна причина не использовать исключения. Дело в том, что Google -
> компания, пишущая себе серверный код. Который работает в основном на Linux.

недолго работал в конторе, которая писал банкофский софт под Linux, без исключений никака

Ghost2Постоялецwww14 мая 201817:28#13
Rikk

Меньше надо читать желтую прессу и надписи на заборах.

Вдумайся в аббревиатуру ПК и задумайся, зачем они нужны гуглу. У гугла давно кастомное железо в датацентрах.
И если они оптимизируют в своем железе не производительность, а производительность на ватт/доллар,
то это совсем не значит, что на таком же железе чья-то бабушка "просматривает электронную почту".

=A=L=X=Постоялецwww14 мая 201818:43#14
Ghost2
> то это совсем не значит, что на таком же железе чья-то бабушка "просматривает
> электронную почту".

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

Изображение

Хотя может сейчас и есть что-то кастомное, чтобы вообще выкинуть всё ненужное и цену вообще в ноль увести. Но сама идея изначально и состояла в облаке самых дешевых ширпотребных материнок с винтами, чтобы отказ одного компьютера для всего облака не значил ровным счётом ничего.

Правка: 14 мая 2018 18:50

Страницы: 1 2 37 8 Следующая »

/ Форум / Программирование игр / Общее

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