информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Атака на InternetЗа кого нас держат?Портрет посетителя
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / theory
Имя Пароль
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Есть такие языки, где нет такого оператора. [обновл.] 31.07.07 16:55  Число просмотров: 6188
Автор: DPP <Dmitry P. Pimenov> Статус: The Elderman
Отредактировано 02.08.07 13:06  Количество правок: 1
<"чистая" ссылка> <обсуждение закрыто>
А голосование тут не очень то уместно. Этак можно признать или нет наличие бога на небе в зависимости от того, за какую точку зрения больше людей проголосует. Можно и сложные теоремы (Ферма) признавать аксиомами, если за это большинство проголосует.
Мне думается, что про оператор перехода нужно либо прослушать доказательство и попытаться найти ошибки, либо привести весомый пример, где без него хуже, чем с ним.
Еще выход: поизучать и поразбираться в програмках, написанных без него и таких, чтоб этого оператора там было более десяти на сотню других.

> Люди, кто-нибудь может привести пример, где использование
> GOTO оправдано? Я знаю, что существуют такие задачи, но

Есть такие языки, где нет такого оператора.
Есть такие языки, где без этого оператора никак (БЭЙСИК, ФОРТРАН, ...).
Есть такие языки, где без него можно!
Можно привести пример, где его использование требуется, но там же можно привести пример, как без него можно обойтись.

> слабо представляю, как это в живую выглядит. Вроде в
> синтаксических анализаторах используется, и в очень сложных
> математических расчётах.

Если представить математические вычисления, где подряд идут операторы вычисления по формулам, то среди них очень чудно будет смотреться "goto label54279", причем, если следующий за ним оператор будет не помечен, или помечен, но не будет в программе оператора перехода на него. Это пример безобразного использования этого оператора.
Чаще всего он полезен для выхода из вложенных циклов. Пример можно придумать самостоятельно. Есть способ вываливаться из циклов и без этого оператора, например изменить параметр, который отвечает за повторяемость цикла. Правильные языки это позволяют.

> Сейчас практически все мои знакомые программисты считают,
> что использование GOTO – это признак кривизны кода.
> Хотелось бы их разубедить.

Вопрос-то философский. Можно придумать задачу, когда нужно будет вываливаться из десятка вложенных циклов. Здесь однозначно проще написать один "goto", чем заводить десяток переменных, добавлять десяток дополнительных проверок, править десяток переменных. Мало того, такая программа будет еще выполняться медленнее.
НО! В подобных случаях метка, на которую нужно будет перейти, будет достаточно удалена от самого оператора перехода. Это первое нарушение читабельности и понимаемости программы. Во вторых наличие в циклах дополнительных проверок будет обозначать то, что они, возможно, будут завершаться досрочно. Это опять же повышает понимаемость программы.
Вывод: Если язык позволяет, то следует избегать использование этого оператора. Черезмерное его применение - лучший способ запутать компилятор, сделать программу неудобочитаемой, замедить ее выполнение, поскольку переходы могут разрушать конвеер.
<theory> Поиск 






Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach