Хотелось бы узнать, почему некоторые программисты-олдфаги так не любят goto и действительно ли его использование - смертный грех)
ЗЫ: прошу не разводить холивар, отвечайте аргументировано)
Другие языки программирования и технологии
Почему все так ненавидят Goto?
1) Что по сути есть Goto - для машины это всего лишь переход на инструкцию в какой-то подпрограмме, шутки ради можно goto реализовать в F# или Ruby например, но это сведется к вызову функций. В машинно-зависимых низкоуровневых языках goto жизненно необходим - это стандартная операция над указателем инструкций процессора IP (instruction pointer). Другими словами, goto (CMP/JMP) будет присутствовать так или иначе в любой скомпилированной в машинные инструкции программе.
2) Локальные переходы в теле функций или дальние прыжки можно оформить вызовом switch или if..else или вызывать нужный блок/функцию путем передачи определенных указателей/делегатов/параметров/блоков/лямбд внутрь подпрограммы. А когда функция/код является органичной частью языка, goto не нужен, а все другие операторы управления исполнением программы можно обобщить, как это сделали в F# http://msdn.microsoft.com/ru-ru/library/dd233228.aspx и др. функциональных языках.
2) Локальные переходы в теле функций или дальние прыжки можно оформить вызовом switch или if..else или вызывать нужный блок/функцию путем передачи определенных указателей/делегатов/параметров/блоков/лямбд внутрь подпрограммы. А когда функция/код является органичной частью языка, goto не нужен, а все другие операторы управления исполнением программы можно обобщить, как это сделали в F# http://msdn.microsoft.com/ru-ru/library/dd233228.aspx и др. функциональных языках.
Никто его не ненавидит, в ассемблере, например, без него невозможно сделать цикл или условие. Просто читается, что он разрывает линейность выполнения программы, как break в циклах, а это считается плохим тоном. Но если так написать проще и быстрее, то почему бы нет? Главное — хорошо прокомментировать свой код, чтобы всё осталось понятным.
Этот оператор не совместим со структурным и модульным программированием. С его помощью можно так запутать программу что сам черт ногу сломает.
Классическая книга даст ответ на твой вопрос
У. Дал, Э. Дейкстра, К. Хоор. Структурное программирование. 1975 год.
Классическая книга даст ответ на твой вопрос
У. Дал, Э. Дейкстра, К. Хоор. Структурное программирование. 1975 год.
Его не ненавидят.
Как написал Назаров Артем, GOTO вошел в языки высокого уровня из языков низкого уровня для более удобного переноса старых алгоритмов. Сейчас уже все по другому, он просто не нужен. Например, в JAVA его вообще нет
Как написал Назаров Артем, GOTO вошел в языки высокого уровня из языков низкого уровня для более удобного переноса старых алгоритмов. Сейчас уже все по другому, он просто не нужен. Например, в JAVA его вообще нет
плохой стиль. в редчаййших случаях уж когда никак не найти выход можно его использовать
оператор goto делает код менее понятным, а спарка из нескольких goto превращает даже небольшую программу в неструктуризованную лапшу.
именно поэтому использовать его нужно как можно реже и по делу.
именно поэтому использовать его нужно как можно реже и по делу.
Похожие вопросы
- Почему многие программисты ненавидят ассемблер?Ведь у него куча плюсов!Он позволяет максимально задействовать
- Почему очень многие ненавидят Visual Basic(Basic) и говорят что он колечит логику и мозг программиста?
- Про шрифт comic sans. Почему его так ненавидят дизайнеры?
- Люди которые против goto утверждают что оно мешает чтению, и как пример приводят СОТНЮ goto в функции. И что-же....
- Почему goto нехороший стиль программирования ?
- паскаль, как работать с оператором goto, как ставить метки, чтобы при операции goto 1,
- Подскажите кто помнит QB (Бэйсик)Что значат операторы: DIM, FOR...NEXT, STEP, GOTO...
- Как можно написать программу на языке C, которая будет выводить числа от 1 до 1000 без if, switch, do, while, for, goto?
- почему наличие команд GOTO свидетельствует о низкой квалификации программиста?
- метки - дурной стиль. почему использование goto считается дурным стилем в программировании? в чем реальные минусы?