Войти
ПрограммированиеФорумОбщее

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

Страницы: 1 2 37 8 Следующая »
#0
23:13, 7 мая 2018

Почему Google не используют исключения в C++?
Если они такие дорогие, то просто не выбрасывать в цикле.


#1
23:20, 7 мая 2018

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.

#2
20:25, 13 мая 2018

IBets
> Почему Google не используют исключения в C++?
Потому что неосиляторы.
Очевидно же.

#3
21:16, 13 мая 2018
Вот, видимо, зря я в соседнем треде не поднял вопрос о кодстайлах. Хотел сказать, что у Google есть свои причины писать код так, как это делают они, и что эти причины далеко не всегда применимы, следовательно - кодстайл Google не универсален. Например, для геймдева соглашения гугл - скорее говно, чем польза.
Думал, тут все люди умные, и без меня об этом догадаются.
Если уж вам так хочется писать, как крутые дядьки, по крайней мере возьмите дядек, которые пишут то же, что вы. А ещё лучше - посмотрите на несколько дядек и подумайте, почему они пишут по-разному и что из этого - обоснованные требования, а что - не более, чем сложившиеся традиции.
#4
0:55, 14 мая 2018

return [](){};
Там вообще много чего написано. Они также "упростили" документацию разработчика благодаря этому, иначе пришлось бы все нюансы описывать, как и что надо делать в разных случаях.

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

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

#5
1:30, 14 мая 2018

Могу придумать два случая когда исключения только мешают:
1. Работа с микроконтроллерами, код обработки исключений жирный, а места мало.
2. Работа с легаси библиотеками на С, тогда исключения между разными языками не работают.
А так то не осилили прост.

#6
13:11, 14 мая 2018

kvakvs
> Могу придумать два случая когда исключения только мешают:
> 1. Работа с микроконтроллерами, код обработки исключений жирный, а места мало.
> 2. Работа с легаси библиотеками на С, тогда исключения между разными языками не
> работают.
> А так то не осилили прост.
Есть ещё третья и основная причина - если весь код у тебя не компилится в единый бинарник, про исключения можешь забыть.

#7
13:58, 14 мая 2018

kvakvs
> 1. Работа с микроконтроллерами, код обработки исключений жирный, а места мало.
есть свидетельства которые утверждают —- google делан на типа тыщи штук домашние компьютеры типа там Pentium4 версии 2000годов , набрали такие —сделали сеть .простейшее оборудование+качественные отказоустойчивые программы. то есть не спец.сервера.

#8
14:04, 14 мая 2018

Rikk

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

#9
14:06, 14 мая 2018

Ghost2
> Это ваш таджикский
таджики или нетаджики но такие свидетельства существуют.

#10
14:18, 14 мая 2018

Есть ещё одна причина не использовать исключения. Дело в том, что Google - компания, пишущая себе серверный код. Который работает в основном на Linux. А на Linux нет системных исключений и необработанное исключение в одном модуле не проталкивается выше по стеку, а приводит к падению программы. Не то, чтобы с этим нельзя было бороться, но это неприятные моменты, "череватые боком".

#11
14:55, 14 мая 2018
Изображение
#12
14:56, 14 мая 2018

pda
> Есть ещё одна причина не использовать исключения. Дело в том, что Google -
> компания, пишущая себе серверный код. Который работает в основном на Linux.

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

#13
17:28, 14 мая 2018

Rikk

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

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

#14
18:43, 14 мая 2018

Ghost2
> то это совсем не значит, что на таком же железе чья-то бабушка "просматривает
> электронную почту".

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

Изображение

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

Страницы: 1 2 37 8 Следующая »
ПрограммированиеФорумОбщее

Тема в архиве.