Ну и сколько ты расчитываешь получить за 'goto' в C коде?
Кстати, может кто прояснит мне, какой глубокий смысл есть писать:
if (....) {
};
Точка с запятой нафига там?
Посмотри на код ядра! Там дохрена goto. Дело в том, что это аналог
exception-handling в C. А насчет точки с запятой после if так да,
просто как-то само собой получилось :)
а ты попробуй выйди из for'a, а потом из if'a, и с нужным тебе откатом, и посмотри что будет удобнее/понятнее - goto или куча нового кода. Если начитался красочных книжек для детей, где написано, что goto - нини, то я теб сочувствую.
Ну, чтобы не прыгать из for'a сделали while,
но с ним конечно думать об условии выполнения надо, на то ты и програмёр. На мой взгляд, злоупотреблять goto тоже не стоит.
Оно может быть оправдано, если, например, позволяет избежать
введения функций для разовых операций и "красивости кода".
Может, кто еще примеры знает?
Драйверы -- плохой пример, слишком узкоспециализированный.
Там главное -- скорость и эффективность,
и код как правило небольшой.
Если бы преподы по информатике видели, как физики-экспериментаторы пишут
драйверы для управления своими железяками, они бы рыдали
и бились головой об стену. Но тем не менее они работают
на экспериментах годами:)
Опять этот бред про goto...
1) Оператор в языке есть. Си отражает Ассемблер, а в нём всё делается через goto и это нормально и удобно. Или даже это будете опровергать? ;-)
2) Есть задачи, на которых goto в самый раз.
Иначе делают (у меня на работе делали, лишь бы не юзать злое goto - ибо от него всё зло) извраты наподобии:
do
{
бла-бла
if(error)break;
бла-бла
}while(0);
Костылями это явно попахивает. А на самом деле тут в самый раз goto заюзать.
3) Стремление уйти от простых решений в сторону "упрощения структуры" - аля C++ со всеми его извратами - это тупники ПО. Бэйсик - так вообще идеал - там всё абстрактно - любая переменная, насколько я помню :-).
Вывод: не хочется ВАМ юзать - НЕ ЮЗАЙТЕ, пишите хоть на html с джавой и визуал-басиком - "светлого" вам будущего, но не надо хаить, тех, кто пишет оптимизированный код, незаморачиваясь на идеологию.
ИМХО goto юзают те, кто любит ассемблер.
P.S: Просто накопилось.
>Посмотри на код ядра! Там дохрена goto.
это говорит только о том что линь-ядро есть какашка, а сам Линус дубина, изобретатель велосипедов. Еслиб не комьюнити и сторонний софт - линь бы и года не прожил.
да мен. всё как надо. =)
кто готу хаит - это вы зря.
вам тут сказали, что с - отражение асма (там тоже есть проблемы переносимости кода, в С) вот и не надо.
кто на асме без jcc i jmp кодит?
блин. даже при проектировании, построении блок-схемы алгоритма стрелки являются переходами.
еслу тут все такие НЕ_КОДЕРЫ, а ПРОГРАММИСТЫ-теоретики с хорошим знанием различных подходов и т.д. и т.п. пишите выши программы, и не лезьте в систему, которая чем скорее, тем лучше.
а костыль - это самое ходовое что есть в жизни.
не знаю ни одного проекта где его так или иначе не использовали.
даже в высоких теориях всяких есть "правило костыля"
денормализация в бд, хороший пример.
а уж про численные методы я вообще молчу.
а операционное исчисление.
кто возится с сапром - тоже "костыловед"
>>позволяет избежать введения функций для разовых операций
вот именно. Разовая операция как правило - откат. И вставлять всюду вместо goto 10-15 откатных строчек - тупость, которую не разумеют только авторы учебников типа "С за 10 дней".
ну, у меня откаты редко бывают -- проги в основном
числодробительные, вылетит, и фиг с ней, главное -- результат.
Когда активно пишешь работу, приходится постоянно в прогу условия добавлять для проверок гипотез,... иногда просто
удобнее по меткам прыгать, чтобы лишние if/switch не плодить.
На момент написания статьи по результатам работы программа только что минет не делает:)
Имхо в большинстве случаев использование goto оправдано как раз из-за
того , что код получается читабельнее, ну и, вообще, быстрее написать goto , чем париться и замутить чего-нибудь в три раза длиннее и во столько же раз неудобоваримее.
С преподами надо уметь спорить, особенно если
претендуешь на высокую оценку.
Я как-то сдавал информатику, при решении тестовой задчки
меня переклинило, вместо while() поставил for и в теле
цикла был if() с goto. Препод естественно сразу это обнаружил,
и по дури сказал, что так нельзя и это работать не будет,
это некорректно но отношению в ЭВМ,... :)
Тут уже меня прорвало -- какая еще корректность?!
Пойдемте проверим -- если не заработает, будут любые ошибки,
ставьте 2, человек сразу пошел на попятный;)
Правда, общался я, конечно, вежливо, с упором на то, что меня
переклинило:)
Да там совсем суровый мужик был - профессор, типа.
Пролистывает книжки, и морщится , будто бы он лучше все написал.
К тому же декан.
Карова, одним словом.
К любому человеку, как известно, подход нужен.
По моему опыту, с преподами, особенно злобными, простейшая технология такая: хотя бы иногда ходишь на семинар и так несильно пристаешь с вопросами, выходящими за рамки семинара или курса лекций.
Сразу создается впечатление, что человек проявляет недюжинный
интерес к предмету. Хотя, конечно, для этого тебе действительно
придется предмет нормально ботать, заодно и вопросы возникнут :-)