Задачка на 5-тый класс, сколько goto нужно нарисовать, чтобы реализовать этот кусок кода join $ fix $ \loop -> atomicModifyIORef' isInitialized $ \x -> case x of _ | x > 0 && even x -> (x, return ()) -- initialized - skipping _ | x > 0 -> (x, yield >> join loop) -- initializing in other thread - wait _ | even x -> ( (-x) + 1, init2) -- deinitialized - initializing _ -> (x, yield >> join loop)) -- deinitializing - wait
Быдлокодерострадания.
int __init my_init_function(void)
{
int err;
/ registration takes a pointer and a name /
err = register_this(ptr1, "skull");
if (err) goto fail_this;
err = register_that(ptr2, "skull");
if (err) goto fail_that;
err = register_those(ptr3, "skull");
if (err) goto fail_those;
return 0; / success /
fail_those: unregister_that(ptr2, "skull");
fail_that: unregister_this(ptr1, "skull");
fail_this: return err; / propagate the error /
}
Почему нельзя было написать это без goto? Через if-else это отлично хендлится. Я не понимат.
З.Ы. Это код из книжки
«Linux Device Drivers, Third Edition By Jonathan Corbet, Alessandro Rubini, Greg Kroah-Hartman
February 2005»
if (f1()){break;}
...
if (f2()){break;}
...
break;
}
Нету goto? Будет goto.
Так мы, русские программисты, отвечаем недореализациям широкоиспользуемых языков
Я хочу засунуть все ненавистников goto в пещеру и сказать им: «Здравствуйте, я хочу сыграть с вами в игру, во время которой вам надо доказать САМИМ СЕБЕ, что вы не говно. Суть такова. Из пещеры три выхода. В первый выход, который прямо позади вас, через две минуты зайдут злые роботы-убийцы со ржавыми пилами и баллонами с мочой со СПИДом. Второй выход слева от вас. Это дверь. Третий выход где-то перед вами, в далёёёёкой темноте, а пещера запутанная и в ней очень неудобно и плохо. Вам надо отсюда выбраться, либо сдохнуть от роботов либо потеряться в лабиринте и сдохнуть там. И, нет, вы не можете воспользоваться дверью. Эта дверь это символическое представление оператора GOTO в нашем мире. Вы, дебилы-полудурки, ненавидите goto. Вы не можете пройти через эту дверь. А я люблю goto.» И с этими словами я выхожу через дверь, которую закрываю на ключ. И СЛЫШУ ВОЙ И СТОНЫ И КРИКИ БОЛИ ПО ТУ СТОРОНУ!
Я влосемь лет мечтаю о таком фильме!
А в конце, после титров, когда один из уродов ползком выберется из пещеры, я подойду к нему, сяду перед ним и состоится такой диалог:
— Почему вы ненавидите goto?
— Goto это плохой стиль!
— Но ведь я спокойно вышел через дверь, а вам пришлось искать пути, пробираться через ямы со змеями, отрезать себе пальцы, что бы пройти в некоторых местах.
— Но Goto это плохой стиль!
— А вы знаете, я считаю, что латинские буквы в именах переменных это плохой стиль
— Но тогда в исходных кодах имена переменных и числа будут сливаться в одну кашу
— Но это ведь плохой стиль, нет?!
— Вы псих!
— Вооот. Вы, кажется, начали понимать, почему я всех вас считаю сумасшедшими.
Я кончил
pastebin.org
Для тех, кому лень смотреть по ссылке --- там метки и goto.
FFFFFFFFFFFFFFUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!111111