Перейти к содержанию

goto in Linux?


Гость

Рекомендуемые сообщения

  • 3 недели спустя...

Вообще-то насколько я помню goto уже практически не используется (по этике программированя), к тому же он весьма неудобен. При компиляции возникают нюансы с адресацией, к тому же нафига нужен такой допотопный оператор со статичной привязкой, если можно использовать циклы? Нельзя передать точку управления из следствия then в операнду if т.к. возникает логический парадокс. К тому же метка должна стоять в начале строки

А есть он или нет в Линухе я незнаю - сам-то чайник в нём, ObjectPascal знаю, Ц вроде как потихоньку разуметь начинаю.

Ссылка на комментарий
Поделиться на другие сайты

2 ArcEvil: высказывание правильное в принципе, но не по теме.

ОР интересовался наличием goto в shellе -- поскольку в DOSовском

"командном процеессоре" развитых структурных конструкций нет и

goto является единственным средством организации ветвлений да

циклов (я думаю, все поняли, что я имею в виду).

Что касается других языков программирования (в частности C)

то наличие или отсутствие в них goto вообще говоря с платформой

никак не связано.

Насчет неудобства goto -- вопрос довольно деликатный. Безусловно,

в обычной жизни им пользоваться не след, если есть другие

способы. Однако использование goto для выхода из глубоко

вложенного цикла с большим числом итераций иногда может оказывать

существенное влияние на скорость и т. п. Smile

А что вы имели в виду говоря о "нюансах с адресацией" или

"статичной привязки"?

Ссылка на комментарий
Поделиться на другие сайты

  • 3 недели спустя...

У вас шел то какой?

И почему все не любят goto? Какой то, простите, дурак сболтнул - и все повторяют... Приведите хотябы ОДИН аргумент, почему яне должен юзать GOTO, если мне через него ПРОЩЕ?

Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...

Ну, например в C++ можно очень легко перепрыгнуть через определение объекта класса, и конструктор не вызовется.

А вобще в 90% случаев без goto можно и нужно обходиться. Он затрудняет читаемость кода и вобще выглядит некрасиво. Что значит проще? Приведите пример.

Оставшиеся 10% (и даже меньше) - как раз выход из нескольких вложенных циклов (ну редко они встречаются в реальных программах Smile ) и переход к концу функции в низкоуровневых приложениях (в ядре ОС например), где перед return нужно сделать одинаковых действия во всех случаях case, if-then-else и т.п.

Ссылка на комментарий
Поделиться на другие сайты

Гм. Ну насчет дураков -- это вы, уважаемый, загнули.

Если Э. Дейкстра, Н. Вирт, Д. Кнут итп -- дураки, то о нас

с вами и говорить нечего.

Насчет аргументов против goto -- в приниципе рекомендуется

почитать означенных авторов.

Но если вкратце -- (непродуманное) использование goto затемняет логику работы программы, затрудяет отладку и профилирование --

в частности, потому что нарушается вложенность базовых блоков.

Я уж не говорю о сопровождении. Некрасиво, одним словом.

Программировать же по принципу КАК ПРОЩЕ -- это вообще сомнительная концепция. В частности, из нее следует что нужно

предпочесть последовательный поиск хэшированию, а сортировку

пузырьком -- всем остальным видам сортировки.

Я уже говорил, что IMHO единственный случай, где применение goto

оправдано -- это выход из глубоко вложенного цикла.

(Ну я разумеется не говорю о задачах жесткого реального времени,

встроенных системах и тп где важно выжать максимум производительности или написать максимально компактный код)

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...