Size: a a a

2020 August 12

EP

Evgeniy Pichuzhkin in C++ Together 2.0
С дефолтом я с тобой крайне несогласен
источник

EP

Evgeniy Pichuzhkin in C++ Together 2.0
Интуитивно это тоже понятно
Если мы выполнив часть выражения узнали результат, который ни при каких условиях в дальнейшем не изменится — в чем смысл дальнейшего вычисления выражения?
источник

CC

Cool Cooler in C++ Together 2.0
Evgeniy Pichuzhkin
С дефолтом я с тобой крайне несогласен
Почему?
Программист либо пишет
if (a) { if (b) { ... } }
либо явно включает эту фичу
источник

EP

Evgeniy Pichuzhkin in C++ Together 2.0
Опять же, случай с отстрелом конечности при stateful проверках чего-либо — это несущественно, и я бы на это наплевал
источник

EP

Evgeniy Pichuzhkin in C++ Together 2.0
Cool Cooler
Почему?
Программист либо пишет
if (a) { if (b) { ... } }
либо явно включает эту фичу
Ты даже не представляешь себе насколько быстро код превратится в нечитабельную лапшу, если всем придется писать вот так вот как ты предлагаешь
источник

T

Timur Bairamukov 🚫🧢... in C++ Together 2.0
Cool Cooler
Почему?
Программист либо пишет
if (a) { if (b) { ... } }
либо явно включает эту фичу
Ты же можешь поменять ифы местами и будет вроде как норм. Нет?

Я про пример с операцией вставки
источник

CC

Cool Cooler in C++ Together 2.0
Evgeniy Pichuzhkin
Интуитивно это тоже понятно
Если мы выполнив часть выражения узнали результат, который ни при каких условиях в дальнейшем не изменится — в чем смысл дальнейшего вычисления выражения?
Это зависит от конкретной проги
Например, в коде выше может быть надо вызвать GetUncle(n) 2 раза
И раз уж у тебя в полном выражении if'а указно GetUncle(n) 2 раза, то и исполняться оно должно 2 раза
Ну то есть как программист сказал, так пусть и будет

Я понимаю, что чаще всего short-circuit оптимизация пригождается, но нужно её явно включать, она не должна быть по дефолту
источник

f&

fox.py &>/dev... in C++ Together 2.0
Cool Cooler
Это не интуитивно понятно
Должен быть лишь выключатель для данной фичи, а по дефолту должна быть отключена
так по дефолту -O0
источник

🦊

🦊fox.cpp in C++ Together 2.0
Cool Cooler
void InsertRepairTree(Node* n) {
 if (GetParent(n) == nullptr) {
   InsertCase1(n);
 } else if (GetParent(n)->color == BLACK) {
   InsertCase2(n);
 } else if (GetUncle(n) != nullptr && GetUncle(n)->color == RED) {
   InsertCase3(n);
 } else {
   InsertCase4(n);
 }
}
Само-балансирующее древо?
источник

CC

Cool Cooler in C++ Together 2.0
🦊fox.cpp
Само-балансирующее древо?
Ага
источник

CC

Cool Cooler in C++ Together 2.0
Ща хочу реализовать
источник

EP

Evgeniy Pichuzhkin in C++ Together 2.0
Cool Cooler
Это зависит от конкретной проги
Например, в коде выше может быть надо вызвать GetUncle(n) 2 раза
И раз уж у тебя в полном выражении if'а указно GetUncle(n) 2 раза, то и исполняться оно должно 2 раза
Ну то есть как программист сказал, так пусть и будет

Я понимаю, что чаще всего short-circuit оптимизация пригождается, но нужно её явно включать, она не должна быть по дефолту
Я с тобой всё ещё не согласен
источник

🦊

🦊fox.cpp in C++ Together 2.0
Чё функции такие стремные
источник

CC

Cool Cooler in C++ Together 2.0
Cool Cooler
void InsertRepairTree(Node* n) {
 if (GetParent(n) == nullptr) {
   InsertCase1(n);
 } else if (GetParent(n)->color == BLACK) {
   InsertCase2(n);
 } else if (GetUncle(n) != nullptr && GetUncle(n)->color == RED) {
   InsertCase3(n);
 } else {
   InsertCase4(n);
 }
}
А это не мой код
источник

🦊

🦊fox.cpp in C++ Together 2.0
Пользы от такого деления примерно никакого
источник

CC

Cool Cooler in C++ Together 2.0
🦊fox.cpp
Чё функции такие стремные
Да я хз, это не мой код
источник

CC

Cool Cooler in C++ Together 2.0
Это на википедии
источник

🦊

🦊fox.cpp in C++ Together 2.0
Evgeniy Pichuzhkin
Редкие случаи отстрела программистом своих конечностей учитывать не стоит
Разработчики компиляторов радостно утверждают, что UB не бывает)
источник

CC

Cool Cooler in C++ Together 2.0
Я бы, кстати, написал if (a) { if (b) { ... } }
Я всегда так пишу в подобных случаях
источник

EP

Evgeniy Pichuzhkin in C++ Together 2.0
Cool Cooler
Я бы, кстати, написал if (a) { if (b) { ... } }
Я всегда так пишу в подобных случаях
Ебать ты странный
Не хотел бы я писать с тобой один и тот же код
источник