Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
Есть такие языки, где нет такого оператора. [обновл.] 31.07.07 16:55 Число просмотров: 6160
Автор: DPP <Dmitry P. Pimenov> Статус: The Elderman Отредактировано 02.08.07 13:06 Количество правок: 1
|
А голосование тут не очень то уместно. Этак можно признать или нет наличие бога на небе в зависимости от того, за какую точку зрения больше людей проголосует. Можно и сложные теоремы (Ферма) признавать аксиомами, если за это большинство проголосует.
Мне думается, что про оператор перехода нужно либо прослушать доказательство и попытаться найти ошибки, либо привести весомый пример, где без него хуже, чем с ним.
Еще выход: поизучать и поразбираться в програмках, написанных без него и таких, чтоб этого оператора там было более десяти на сотню других.
> Люди, кто-нибудь может привести пример, где использование > GOTO оправдано? Я знаю, что существуют такие задачи, но
Есть такие языки, где нет такого оператора.
Есть такие языки, где без этого оператора никак (БЭЙСИК, ФОРТРАН, ...).
Есть такие языки, где без него можно!
Можно привести пример, где его использование требуется, но там же можно привести пример, как без него можно обойтись.
> слабо представляю, как это в живую выглядит. Вроде в > синтаксических анализаторах используется, и в очень сложных > математических расчётах.
Если представить математические вычисления, где подряд идут операторы вычисления по формулам, то среди них очень чудно будет смотреться "goto label54279", причем, если следующий за ним оператор будет не помечен, или помечен, но не будет в программе оператора перехода на него. Это пример безобразного использования этого оператора.
Чаще всего он полезен для выхода из вложенных циклов. Пример можно придумать самостоятельно. Есть способ вываливаться из циклов и без этого оператора, например изменить параметр, который отвечает за повторяемость цикла. Правильные языки это позволяют.
> Сейчас практически все мои знакомые программисты считают, > что использование GOTO – это признак кривизны кода. > Хотелось бы их разубедить.
Вопрос-то философский. Можно придумать задачу, когда нужно будет вываливаться из десятка вложенных циклов. Здесь однозначно проще написать один "goto", чем заводить десяток переменных, добавлять десяток дополнительных проверок, править десяток переменных. Мало того, такая программа будет еще выполняться медленнее.
НО! В подобных случаях метка, на которую нужно будет перейти, будет достаточно удалена от самого оператора перехода. Это первое нарушение читабельности и понимаемости программы. Во вторых наличие в циклах дополнительных проверок будет обозначать то, что они, возможно, будут завершаться досрочно. Это опять же повышает понимаемость программы.
Вывод: Если язык позволяет, то следует избегать использование этого оператора. Черезмерное его применение - лучший способ запутать компилятор, сделать программу неудобочитаемой, замедить ее выполнение, поскольку переходы могут разрушать конвеер.
|
|
|