static bool isCrazyMurderinqRobot = false; humans (void){ iffisCrazyMurderinqRobot oppressive le / oppressive-silence :: убить всех человеков :: баг :: фича :: Oppressive Silence

Oppressive Silence баг фича убить всех человеков oppressive-silence 
static bool isCrazyMurderinqRobot = false;
humans (void){
iffisCrazyMurderinqRobot
oppressive lervce,Oppressive Silence,баг,фича,убить всех человеков,oppressive-silence
Подробнее
static bool isCrazyMurderinqRobot = false; humans (void){ iffisCrazyMurderinqRobot oppressive lervce
Oppressive Silence,баг,фича,убить всех человеков,oppressive-silence
Развернуть
Сэкономили на нормальной IDE
А разве IDE такое отслеживает? мне казалось это компилятора задача
Тут нет никаких ошибок с точки зрения компилятора. А с точки зрения IDE может возникнуть замечание, что странное место для присвоения, да и то не факт
Нормальный компилятор выдаст ворнинг. Так что не игнорируйте предупреждения, ребята =)
Рекомендую ставить -Werror в релизе ;)
Но перед этим
-Wall -Wextra и ещё несколько ключей, которые не входят в all и extra

да и -Werror= и в дебаге не помешает
-pedantic
-Werror в дебаге порой мешает - то там "лишняя" переменная, то еще что, что тебе скоро понадобится.

-Wall, -Wextra, -pedantic и так далее для каждого языка различны, но чем больше, тем лучше! =)
По-моему, параметр -pedantic аналогичен картинке ниже.
Я не говорю делать Werror для всех ворнингов в дебаге, а бить по рукам для особо извращённых случаев.
Например, всегда использую -Werror=return-type -Werror=delete-incomplete, тк считаю подобные косяки слишком опасны, чтобы быть просто ворнингами.
Мелочи IDE может отслеживать. Вообще есть и анализаторы всякие, не входящие в IDE для таких вещей.
1 2 3 4 5 6 7 8 9 10 <?php $b = 0; $isCrazyRobot = false; if ($isCrazyRobot = true) { _________—__________/\______ 6} Assignment in condition more... (Ctrl+Fl)
На здравом смысле сэкономили. Булевские переменные сравнивать с true или false бессмысленно.
Побуду кэпом: в if сэкономили на одном знаке равенства и происходит не сравнивание, а присваивание.
if (someBooleanVar == true) => if (someBooleanVar) - вот что имел в виду комментатор выше. И совершенно прав в этом.
Я в курсе. Ошибочка довольно распространённая. Но если бы не пытались сравнить bool с константой, то такого бы не случилось и разрабы могли бы продолжить быдлокодить.
Скорее на кодстайле, все-таки не зря правилом хорошего тона является написание констант слева в условных операторах. Тогда не то что компилятор, любая мало-мальски нормальная ИДЕ начнет очень громко ругаться.
Косипоры)
А ты у нас не программист?
Или, может - не мамкин?
Лучше в условиях не ставить "== (true/false)"
Хорошо, а как тогда сравнить переменные между собой без == ?
Так то сравнивание переменных. А в данном случаи компилятор достаточно умен чтоб самому узнать единственная переменная тру или фолс.
Как это делают индусы, разумеется:
if (a.toString().length < 5) ...
Извини, не знаю я индусский, чтобы объяснить, что сравниваются переменные, а не переменная и константа. Хотел сумничать, та написал бы уж "if (a - b) else doIt();", что равнозначно " if (a == b) doIt();".
Ты нервный. Это от процедурного программирования. Сравнивай так:

if (a.compare(b)) ...

А в общем случае "a - b" недопустимо, поскольку для некоторых типов переменных операция +/- не определена.
Указатели через приведение типов замечательно вычитаются. Вещественные и целочисленные типы умеют в отрицание. Нельзя сравнить только массивы данных (к которым относятся строки и объекты), но это очевидно. Я что-то пропустил?
Строки и объекты нынче встречаются чаще, чем что-либо еще. Но у меня вопрос - ты всерьез собрался сравнивать два вещественных числа через == или сравниваемую с нулем разницу?
В IA86 есть сопроцессорные команды FCOM и FSUB, в которые и траслируется соответственно == и вычитание вещественных чисел. В системах, где вещественные числа на уровне процессора не поддерживаются, необходима нормализация, а потом можно и сравнивать и вычитать. Не знаю, какие у тебя проблемы возникли при сравнении вещественных чисел.
Конечно же ты не знаешь, я в этом даже не сомневался, но решил дать тебе шанс.

Операции с вещественными числами ограничены в точности и ведут к накопительным ошибкам. Поэтому прямое сравнение двух переменных не имеет смысла. Их сравнивают так: abs(a - b) < EPS, где EPS - окрестность в пределах которой числа будут считаться идентичными.

Пример ошибки:
# perl -e '$a=$b=1.50; $a-=1.5; for (1..15) {$b-=0.1}; print ("$a, $b, ".($a==$b ? "true":"false"))'
0, -1.94289029309402e-16, false
Вспомнился анекдот про 43 миллионных... Но это уже совсем другая история.
Узнаю старые добрые трюки из численных методов на фортране :)
Я написал true/false в скобках для конкретизации: если функция или переменная имеют (возвращают) значение true или false, лучше не писать "==" вообще.
Для данного конкретного случая и подобных - согласен.
Истину говорю вам, мир погубит быдлокод.
Но ведь можно просто
if isCrazyMurderingRobot
kill(humans);
К else+; и без {}/begin..end отдельная претензия. Зависит от языка.
Не-не-не надо обязательно писать именно так, а еще вот так while(1==1){...} . Нас так в универе учили(с)
З.Ы. это сарказм если че
А можно в стиле perl:
isCrazyMurderingRobot && kill(humans);
javascript тоже такое сжуёт
Функция kill есть? Есть. Значит все-таки запрограммировали на это.
А вообще так и надо тем, кто смешивает CamelCase и snake_case
Потому что правильно писать:

if(true == isCrazyMurderingRobot)

Вот тогда IDE точно скажет что-то не так
Тогда и компилятор заматерится. К сожалению, данный метод работает только при наличии констант или результат функции в условии. С переменными всё равно можно ошибиться.
Чтобы не ошибиться, нужно просто не доверять программирование таких роботов юниорам. Опытные разработчики знают о всех потенциально опасных местах и несколько раз их перепроверяют чисто по привычке.
У опытных разработчиков имеются наборы тестов, которые позволяют частично исключить логические ошибки. Но алгоритмические всё равно останутся незамеченными и всплывут уже при использовании ПО.
Он все правильно написал, есть вообще правило: КОНСТАНТА при сравнении должна быть слева. А всякие идиоты ебашат справа.

Этому есть одно простое объяснение, если у вас константа слева и вы поставите '=' вместо '=='. Что компилируемый, что интерпретируемый язык даже не запустят программу.

if(true = isCrazyMurderingRobot)
Не все читали умные книги про совершенный код.
Спасибо магистр Йода, но в языках с нормальными компиляторами (а не как JS/PHP), подобные извращения не нужны. Компилятор выдает предупреждение, этого достаточно.
зажрались. компилятор выдаст.
совсем так перестанете головой думать
Чем меньше держишь в голове фигни, которую можно в голове не держать, тем больше держишь в голове того, что действительно важно. Ресурсы мозга весьма ограниченны.
Посадить бы таких умных писать программы вначале в блокнот (написал с маленькой буквы специально, я не про программу Блокнот).
отсутствие знаний про "эту фигня" в итоге и приводит к тому, что оч много "специалистов" вообще не представляют как работают микропроцессорные системы. зато херачат мегабайты кода да еще без комментариев.
а потом все дружно удивляются, чего это 64 процессорный sun загружен под жвах.
На микропроцессорный уровень реально пофиг сейчас, почти везде.
Но вот как нафигачат O(n^2) там, где не надо, так хоть вешайся =)
Гм, а вы товарищ рисковый. А если на сборку уходит несколько часов? Будем ждать пока сборка отвалится? А еще при этом всем будете сравнивать переменную с результатом функции и случайно поставите только один знак равенства? Это и компилятор и иде пропустят как валидный код и подвох можно будет заметить только во время тестирования(и будет еще хорошо если автотестами все покрыто). А вот если правильную очередность соблюдать, то можно здорово упростить жизнь себе и своим коллегам.
Компилятор это не пропустит, если не забыть про флаги компилятора
vga@lws04:~/code/csandbox$ cat main.cpp finclude <iostream> int randomNumber() { return 4; > int main() { int i = 0; if (i = randomNumber()) { std::cout « "IF TRUE" « std::endl; > else { std::cout « "IF FALSE" « std::endl; > return 0; > vga@lws04:~/code/csandbox$ g++ -Wall -Werror
Ну опять таки, компиляция занимает сколько? Пару десятков миллисекунд. А теперь возвращаемся к ситуации когда на компиляцию уходит гораздо больше времени.
Если компиляция занимает много времени, то это отдельная проблема с которой надо бороться.
В проекте небольшого размера на C/C++ линковка обычно занимает от нескольких скунд. И с этим ничего уже не сделать.
Ну, если пошла линковка, то компиляция уже прошла, правильно? ;)
У меня другой вопрос: почему вообще добавлять такую функцию? И почему не добавить идентификацию своих и чужих, если это военный робот? А 3 закона робототехники? Да ну нафиг!
А писали бы на шарпах, такой фигни не былоб.
Ассемблер рулит. На нём так вообще невозможно ошибиться.
асемблер? серьезно? да там яйца можно себе отстрелить
ну так..точечно да. хорошо использовать (для узких мест).
для клиентского ПО каких нибудь учетных систем он нафиг не нужен.
остаются спецпроцессоры, да критичный по ресурсам и времени функционал.
Я просто иначе написал фразу unkuse.
Можно ещё так: "А писали бы на асме, такой фигни не былоб" (стилистика сохранена).
А вообще, MenuetOS и ПО к ней.
ну там вообще все по другому. пришлось тут с год назад вспоминать. аж слышно было как мозги заскрипели.
блять и никто не удивился а нафиг вообще писать такое в код роботам? вот это вот killhumans? без него никак нельзя было?
ну не писать же код выключения закона Ома. Вот тогда будет пиздец!
if (isGood === true) {
.... beNiceTo(humans);
} else if (isGood === false) {
.... beBadTo(humans);
} else {
.... kill(humans);
}
Кстати, в Perl возможно дойдет до kill ;-)
В javascript тоже дойдёт, без проблем :)
Хватит умничать, во всех языках с duck typing дойдет :)
▶ typeof(isGood)
◀ "string"
Это ещё что, может быть и "Object", потому распарсилось из XML ответа как null :)
еще не забудь про область видимости, если оно пришло через асинхронный запрос и выполнилось в виртуальной машине.
А я нихера не понял :(
Это чисто программистские шуточки) не обращай внимание
Все таки роботы не от этого взбунтовались. Скорее от такого
http://govnokod.ru/3032
сегодня определенно вечер приятных воспоминаний про дедала и fvmas
Чесно, слово ))
Срачь и пипискомерство в комментариях, доставляет больше самой картинки.
Только зарегистрированные и активированные пользователи могут добавлять комментарии.
Похожие темы

Похожие посты
ПОСКОЛЬКУ ты ПРЕДПОЧИТАЕШЬ ПРОВОДИТЬ ВРЕМЯ В СВОЕЙ ИАИОТСКОЙ ЛАБОРАТОРИИ,А НЕ СО МНОЙ - Я ТЕБЯ БРОСАЮ.
ОН РАБОТАЕТ///1
подробнее»

Смешные комиксы,веб-комиксы с юмором и их переводы Oppressive Silence oppressive-silence мой перевод

ПОСКОЛЬКУ ты ПРЕДПОЧИТАЕШЬ ПРОВОДИТЬ ВРЕМЯ В СВОЕЙ ИАИОТСКОЙ ЛАБОРАТОРИИ,А НЕ СО МНОЙ - Я ТЕБЯ БРОСАЮ. ОН РАБОТАЕТ///1
В ПОСЛЕДНИЕ ГОДЫ ТВОЕЙ ЖИЗНИ Я ВСЁ ВРЕМЯ ТАЙНО ОТСЛЕЖИВАЛ И ЗАПИСЫВАЛ ТВОИ МЫСЛИ. НО ЛИШЬ НЕДАВНО Я ОБНАРУЖИЛ НЕСКОЛЬКО АЛГОРИТМОВ, КОТОРЫЕ ПОЗВОЛИЛИ МНЕ ЛЕГКО СМОДЕЛИРОВАТЬ ЧЕЛОВЕЧЕСКОЕ СОЗНАНИЕ.
ЧЯ ИСПОЛЬЗОВАЛ ТВОИ ДАННЫЕ 50-ЛЕТНЕЙ ДАВНОСТИ КАК ИСХОДНЫЕ И - ВУАЛЯ/ ТЫ ЗДЕСЬ/
А САМОЕ ЛУЧШЕЕ, ЭТО
подробнее»

Oppressive Silence oppressive-silence Смешные комиксы,веб-комиксы с юмором и их переводы длиннопост мой перевод

В ПОСЛЕДНИЕ ГОДЫ ТВОЕЙ ЖИЗНИ Я ВСЁ ВРЕМЯ ТАЙНО ОТСЛЕЖИВАЛ И ЗАПИСЫВАЛ ТВОИ МЫСЛИ. НО ЛИШЬ НЕДАВНО Я ОБНАРУЖИЛ НЕСКОЛЬКО АЛГОРИТМОВ, КОТОРЫЕ ПОЗВОЛИЛИ МНЕ ЛЕГКО СМОДЕЛИРОВАТЬ ЧЕЛОВЕЧЕСКОЕ СОЗНАНИЕ. ЧЯ ИСПОЛЬЗОВАЛ ТВОИ ДАННЫЕ 50-ЛЕТНЕЙ ДАВНОСТИ КАК ИСХОДНЫЕ И - ВУАЛЯ/ ТЫ ЗДЕСЬ/ А САМОЕ ЛУЧШЕЕ, ЭТО
^Excuse me, Hiss, but did you just throw a paper cup into
a plastic recycling Зеркало-зеркальце, висящее на стене, скажи,кто самая прекрасная из всех?
Осколки-осколочки, лежащие на земле, скажите,кто самая прекрасная из всех девчонок в округе?
Маленькие осколки-осколочки, которые я держу в руке, скажите,кто самая
прекрасная для созерцания?
Хны-хны... АТОМЫ, лежащие в мое
подробнее»

oppressive-silence Смешные комиксы,веб-комиксы с юмором и их переводы

Зеркало-зеркальце, висящее на стене, скажи,кто самая прекрасная из всех? Осколки-осколочки, лежащие на земле, скажите,кто самая прекрасная из всех девчонок в округе? Маленькие осколки-осколочки, которые я держу в руке, скажите,кто самая прекрасная для созерцания? Хны-хны... АТОМЫ, лежащие в мое