Здравствуйте, vsb, Вы писали:
vsb>Я не понимаю, почему С++ не используют and, or вместо этой криптографии.
А вы для начала вообще понимаете, зачем нужно разделение на & и &&? Без этого нельзя сравнивать с другими языками, где and/or (например, Паскалем и Бейсиком).
(Мой любимый вопрос из списка заподлянских вопросов, кстати. Ответ не так прост, как кажется на первый взгляд. Обычно мычат что-то типа: «Ну, энтот жыж бинарный, а энтот логический...», что, кстати, сразу плохой признак. Приходится уточнять: в каких ситуациях требуется разделение? Блин, теперь из-за этих факаперов хороший вопрос испорчен...)
Здравствуйте, Shtole, Вы писали:
S>Здравствуйте, vsb, Вы писали:
vsb>>Я не понимаю, почему С++ не используют and, or вместо этой криптографии.
S>А вы для начала вообще понимаете, зачем нужно разделение на & и &&? Без этого нельзя сравнивать с другими языками, где and/or (например, Паскалем и Бейсиком).
Прекрасно понимаю. & для битов, && для логики.
S>(Мой любимый вопрос из списка заподлянских вопросов, кстати. Ответ не так прост, как кажется на первый взгляд. Обычно мычат что-то типа: «Ну, энтот жыж бинарный, а энтот логический...», что, кстати, сразу плохой признак. Приходится уточнять: в каких ситуациях требуется разделение? Блин, теперь из-за этих факаперов хороший вопрос испорчен...)
Вот чтобы такого заподлянского кода не было, и не нужно усложнять. Если & используется для логики, значит этот код не просто пахнет, а воняет. Про использование && для битов даже писать не буду.
А чтобы не путать & и &&, нужно просто запретить &&/|| и использовать and/or.
Здравствуйте, Homunculus, Вы писали:
vsb>>>Прекрасно понимаю. & для битов, && для логики. S>>Это не ответ. H>А какой ответ?
Мой ответ: разделение на два разных оператора нужно для того, чтобы указать компилятору, нужно или нет вычислять вторую часть условия, когда из первой уже всё ясно. Это важно, например, для функций с сайд-эффектами, возвращающих bool.
В тех языках, где используются and/or для всего это означает принципиальный отказ от такого способа устранения неоднозначностей. И приходится выкручиваться другими способами. Например, в Паскале, насколько я помню, это решается в контексте, заданном директивой {$B +/-}. То есть, задали {$B +} — будет сгенерирован принудительный вызов, задали {$B -} — не будет. (Прелестно, не правда ли?) Ну, можно ещё принять, что условие всегда выполняется полностью / всегда выполняется по необходимости. Оба этих решения очевидно хуже двух разных операторов. Кстати, в Шарпе, где bool обособлен, разделение на & и && всё же сохраняется, как раз в вышеописанных целях: https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/boolean-logical-operators. Выглядит немного искуственно. Ну а в C/C++, где bool в принципе не особо нужен, это изначально изящно объединили с побитовыми вычислениями.
Пхх. Ну я, например, знал про это и часто использую, например, в проверке указателя на NULL и сразу же вызове метода по этому указателю. Вот только сомневаюсь что я вспомнил бы про это на собеседовании
Здравствуйте, Homunculus, Вы писали:
H>Пхх. Ну я, например, знал про это и часто использую, например, в проверке указателя на NULL и сразу же вызове метода по этому указателю. Вот только сомневаюсь что я вспомнил бы про это на собеседовании
Здравствуйте, Homunculus, Вы писали:
S>>Потому и заподлянский
H>Ну, если цель собеседования — унизить и сотворить западло, то да. Хороший кстати способ, чтоб неадекватный работодатель сам себя отсеял
Цель может быть любая. Например, посмотреть, как поведёт себя человек, столкнувшись с заподлянским вопросом. Хорошие программисты при этом улыбаются
S>(Мой любимый вопрос из списка заподлянских вопросов, кстати. Ответ не так прост, как кажется на первый взгляд. Обычно мычат что-то типа: «Ну, энтот жыж бинарный, а энтот логический...», что, кстати, сразу плохой признак. Приходится уточнять: в каких ситуациях требуется разделение? Блин, теперь из-за этих факаперов хороший вопрос испорчен...)
Вообще говоря, компилятор мог бы соизволить выдать варнинг если в битовые операции вовлечен bool.
Как много веселых ребят, и все делают велосипед...
Здравствуйте, Shtole, Вы писали:
S>Цель может быть любая. Например, посмотреть, как поведёт себя человек, столкнувшись с заподлянским вопросом. Хорошие программисты при этом улыбаются
Да, вызывает улыбку работодатель, которому нужен не человек, решающий задачи, а тот, кто в условиях открытого космоса при нехватке кислорода сможет с завязанными глазами взломать сайт Пентагона. Нафиг-нафиг таких собеседователей
Здравствуйте, Homunculus, Вы писали:
S>>Цель может быть любая. Например, посмотреть, как поведёт себя человек, столкнувшись с заподлянским вопросом. Хорошие программисты при этом улыбаются
H>Да, вызывает улыбку работодатель, которому нужен не человек, решающий задачи, а тот, кто в условиях открытого космоса при нехватке кислорода сможет с завязанными глазами взломать сайт Пентагона. Нафиг-нафиг таких собеседователей
Я правильно понимаю, что вы знание самых фундаментальных основ языка сравниваете со взломом сайта Пентагона в условиях открытого космоса при нехватке кислорода? Ирония.джпг
Здравствуйте, ononim, Вы писали:
S>>(Мой любимый вопрос из списка заподлянских вопросов, кстати. Ответ не так прост, как кажется на первый взгляд. Обычно мычат что-то типа: «Ну, энтот жыж бинарный, а энтот логический...», что, кстати, сразу плохой признак. Приходится уточнять: в каких ситуациях требуется разделение? Блин, теперь из-за этих факаперов хороший вопрос испорчен...)
O>Вообще говоря, компилятор мог бы соизволить выдать варнинг если в битовые операции вовлечен bool.
Здравствуйте, Shtole, Вы писали:
S>Я правильно понимаю, что вы самые фундаментальные основы языка сравниваете со взломом сайта Пентагона в условиях открытого космоса при нехватке кислорода? Ирония.джпг
Делание выводов о профессионализме человека, основываясь на вспоминании и озвучивании элементарных основ языка в нервной ситуации — это маразм. Помню меня на ТО попросили включить левый и правый поворотник. И я тупанул, вылетело из головы. Хотя делаю это на машинальном уровне на дороге каждый день
Здравствуйте, Homunculus, Вы писали:
S>>Я правильно понимаю, что вы самые фундаментальные основы языка сравниваете со взломом сайта Пентагона в условиях открытого космоса при нехватке кислорода? Ирония.джпг
H>Делание выводов о профессионализме человека, основываясь на вспоминании и озвучивании элементарных основ языка в нервной ситуации — это маразм. Помню меня на ТО попросили включить левый и правый поворотник. И я тупанул, вылетело из головы. Хотя делаю это на машинальном уровне на дороге каждый день
Здравствуйте, ononim, Вы писали:
O>>>Вообще говоря, компилятор мог бы соизволить выдать варнинг если в битовые операции вовлечен bool. S>>Это в Си-то? O>На скрине плюсы.
Что-то подсказывает мне, что если бы комитетчики начали бы ломать совместимость на таком глубоком уровне, его бы ещё тогда и закопали. И до нынешних печальных времён он бы просто не дожил. Почему-то все говорят «Си с классами» с презрительной интонацией, а я вот думаю, если посмотрить в TIOBE, где Си, а где плюсы, вполне можно предположить, что пока профит от совместимости перевешивает потери от некоторых не самых удачных нововведений.
Кстати, вот этот код на C# тоже должен выдать варнинг?
bool SecondOperand()
{
Console.WriteLine("Second operand is evaluated.");
return true;
}
bool a = false & SecondOperand();
Console.WriteLine(a);
bool b = true & SecondOperand();
Console.WriteLine(b);
O>>>>Вообще говоря, компилятор мог бы соизволить выдать варнинг если в битовые операции вовлечен bool. S>>>Это в Си-то? O>>На скрине плюсы. S>Что-то подсказывает мне, что если бы комитетчики начали бы ломать совместимость на таком глубоком уровне, его бы ещё тогда и закопали.
Варнинг — это не про совместимость. Кроме того, даже с совместимостью, ведь сломали же гораздо часто юзаемые вещи, типа
char *x = malloc(0x1000);
Как много веселых ребят, и все делают велосипед...