реклама на сайте
подробности

 
 
> Оператор GoTo, безусловный переход или правила хорошего тона
J_B
сообщение Sep 29 2006, 15:13
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 20
Регистрация: 17-01-06
Пользователь №: 13 275



Почему считается, что "нехорошо" использовать данного оператора?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
_artem_
сообщение Sep 29 2006, 22:40
Сообщение #2


учащийся
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 29-10-05
Из: города контрастов
Пользователь №: 10 249



Сколько людей столько и мнений. Если не злоупотреблять, то goto иногда более удобный вариант чем циклы и свитчи с continue и break'ами (imho).

Есть еще другая истина в последней инстанции - файл должен помешаться на одну страницу текста - то есть полностью отображаться на экране дисплея . Так нет у некоторых на файл приходится по сотне килобайтов. Kрайности.

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

Скажу так - каждый прав по своему)


--------------------
Зачем лаять на караван , когда на него можно плюнуть?

Go to the top of the page
 
+Quote Post
zltigo
сообщение Sep 30 2006, 06:10
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(_artem_ @ Sep 30 2006, 01:40) *
Была какая то статья, с которой весь этот садомазоэстетический спор в мире програмистов начался, не помню только ее название.

Началась это на моей памяти Виртом с обоснования теоретической базы "Паскаля" как попытки создать язык идеальный для толкования компилятором ну априори предполагаемый "удобным" для пользователя ввиду его однозначности. Для компилятора, спору нет, goto в большинстве случаев - проблема, ибо начисто ломает его все стандартные "домашние заготовки". Соответственно простые компиляторы давних времен генерили весьма поганый код. Компиляторы поумнели и стали нормально понимать удобные человеку конструкции, идеалисты от компиляции продолжают движение и дошли до "Оберона".
На сегодняшний день причин не использовать в "C" goto в удобном месте нет.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Petka
сообщение Sep 30 2006, 09:43
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 453
Регистрация: 23-08-05
Пользователь №: 7 886



Цитата(zltigo @ Sep 30 2006, 10:10) *
На сегодняшний день причин не использовать в "C" goto в удобном месте нет.


Хм.... Причина есть! И на сегодняшний день она ещё более актуальна! Дело в том, что сейчас серьёзный проект можно написать только работая в команде разработчиков. И для того, что бы в твоём коде можно было разобраться другому человеку, надо писать по общепринятым "правилам хорошего тона". Одним из правил является форматирование отступами вложенного кода (например тело цикла, условия - так проще найти глазами конец цикла и условия и т.д.). С использованием Goto такое форматирование осуществить в общем случае невозможно, что приводит полному мясу кода, который спустя некоторое время не только сторонний человек понять не сможет, но и даже сам разработчик. А компиляторы тут ни при чём, сейчас они умные. ИМХО любой логичный алгоритм можно изящно записать без Goto. Это как "любую мысль можно передать без мата".
Go to the top of the page
 
+Quote Post
zltigo
сообщение Sep 30 2006, 10:04
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Petka @ Sep 30 2006, 12:43) *
С использованием Goto такое форматирование осуществить в общем случае невозможно, что приводит полному мясу кода, который спустя некоторое время не только сторонний человек понять не сможет, но и даже сам разработчик.

Если выражаться коротко, то это бред.

Цитата
ИМХО любой логичный алгоритм можно изящно записать без Goto.
Это как "любую мысль можно передать без мата".

Можно все, но не изящно. Ибо понятие изящно применимо к более-менее искуственно замкнутым системам. Там где на систему плотно влияют внешние непреодолимые обстоятельства там и требуются якобы "неизящные" выходы и не самые исключения, которые подтверждают правила. Причем попав в такую ситуацию я предпочитаю четко и ясно выразить свлю мысль, например словом "пи....ц", поятным каждому нормальному человеку а не "изящно" и муторно с жевать сопли для "литературной" передачи
мысли.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Petka
сообщение Sep 30 2006, 14:40
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 453
Регистрация: 23-08-05
Пользователь №: 7 886



Цитата(zltigo @ Sep 30 2006, 14:04) *
Цитата(Petka @ Sep 30 2006, 12:43) *

С использованием Goto такое форматирование осуществить в общем случае невозможно, что приводит полному мясу кода, который спустя некоторое время не только сторонний человек понять не сможет, но и даже сам разработчик.

Если выражаться коротко, то это бред.

Аргументы?
В электронику я перешёл из "программистов". Могу позволить себе утверждать, что Вы не до конца освоили работу в команде, как и отличие языков высокого уровня от низкого. Недавно в форуме пробегала ссылка на "косметику для программистов". Советую ознакомится.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- J_B   Оператор GoTo   Sep 29 2006, 15:13
- - Yura_K   Как я понимаю, этот оператор неявно присутствует в...   Sep 29 2006, 16:02
|- - J_B   Полностью согласен, взять ассемблер - циклов без м...   Sep 29 2006, 16:22
- - ktod   Это филосовский вопрос. И ответ на него будет: ...   Sep 29 2006, 16:46
- - rezident   Гм. Когда-то давно (больше 15 лет назад) у нас в у...   Sep 29 2006, 16:47
- - jorikdima   Я слышал, что причина в том, что не известно будет...   Sep 29 2006, 16:47
- - bodja74   Потому что оператор безусловного перехода не сохра...   Sep 29 2006, 16:56
|- - singlskv   ЦитатаПочему считается, что "нехорошо" и...   Sep 29 2006, 18:05
|- - bodja74   Цитата(singlskv @ Sep 29 2006, 21:05) [Ис...   Sep 29 2006, 20:32
|- - Сергей Борщ   Цитата(bodja74 @ Sep 29 2006, 23:32) И пе...   Sep 29 2006, 21:57
- - CD_Eater   Программу проще понять, если она состоит из станда...   Sep 29 2006, 17:27
|- - muravei   Цитата(CD_Eater @ Sep 29 2006, 21:27) В н...   Sep 29 2006, 17:31
- - artem100   go to не явно присутствует во всех языках всегда ...   Sep 29 2006, 17:51
- - singlskv   Цитата(J_B @ Sep 29 2006, 19:13) Почему с...   Sep 29 2006, 18:39
|- - Леонид Иванович   Единственная ситуация, когда нужен goto, это обраб...   Sep 29 2006, 19:09
|- - zltigo   Цитата(Petka @ Sep 30 2006, 17:40) Аргуме...   Sep 30 2006, 15:07
- - J_B   Спасибо высказавшимся, просто написал переход от д...   Sep 30 2006, 04:24
- - CD_Eater   Цитата(zltigo @ Sep 30 2006, 14:04) Цитат...   Sep 30 2006, 12:20
|- - zltigo   Цитата(CD_Eater @ Sep 30 2006, 15:20) А е...   Sep 30 2006, 12:52
- - goodwin   Совсем недавно была дискуссия на телесистемах по п...   Sep 30 2006, 12:41
- - J_B   Особо переделкой без goto не занимался, но кто что...   Sep 30 2006, 14:27
|- - zltigo   Цитата(J_B @ Sep 30 2006, 17:27) Смысл та...   Sep 30 2006, 14:56
|- - xemul   Цитата(J_B @ Sep 30 2006, 18:27) Особо пе...   Sep 30 2006, 15:45
- - zltigo   Код seg[0] = tmp/100; seg[2] = tm...   Sep 30 2006, 15:55
|- - xemul   Цитата(zltigo @ Sep 30 2006, 19:55) Код s...   Sep 30 2006, 16:02
- - prottoss   Выскажусь тоже про goto... так как несколько раз п...   Sep 30 2006, 16:08
- - _artem_   Я использую goto, но это не тот случай. Не проверя...   Sep 30 2006, 17:08
- - WHALE   2 artem_ Вы про цикл с постусловием do while слыша...   Sep 30 2006, 18:40
- - _artem_   WHALE, во первых я не из пешеры), во вторых это не...   Sep 30 2006, 19:55
- - WHALE   for(I=0;I<=2;I++) { do{ TMP_P=TMP; ...   Sep 30 2006, 21:25
- - _artem_   Да никаких извинений не нужно, не обиделся.) Я сам...   Sep 30 2006, 22:17
- - Rst7   Господа, о чем речь? Посмотрите в исходники библио...   Oct 1 2006, 06:54
- - bve   Мне кажется, что "ноги растут" от старин...   Oct 1 2006, 15:19
- - _artem_   Вы правы - http://en.wikipedia.org/wiki/GOTO Но ч...   Oct 1 2006, 15:39
- - _Bill   Цитата(J_B @ Sep 29 2006, 18:13) Почему с...   Oct 2 2006, 07:48
- - AVNN   Что касается AVR и goto, то при использовании опт...   Oct 2 2006, 08:22
|- - _Bill   Цитата(AVNN @ Oct 2 2006, 11:22) Что каса...   Oct 2 2006, 08:35
- - defunct   Всякий овощ полезен будучи приготовленным надлежащ...   Oct 2 2006, 10:12
- - ValBag   Во всех наставлениях по СИ для МК "...настоят...   Oct 24 2007, 06:19
|- - alexander55   Цитата(ValBag @ Oct 24 2007, 10:19) goto...   Oct 24 2007, 07:01
|- - dxp   Цитата(ValBag @ Oct 24 2007, 13:19) Во вс...   Oct 24 2007, 07:19
||- - ReAl   Цитата(dxp @ Oct 24 2007, 09:19) Существу...   Oct 24 2007, 11:55
||- - SasaVitebsk   Цитата(ReAl @ Oct 24 2007, 14:55) Ещё в 9...   Oct 28 2007, 11:32
|- - andron86   Цитата(ValBag @ Oct 24 2007, 08:19) Для п...   Oct 24 2007, 07:23
||- - alexander55   Цитата(andron86 @ Oct 24 2007, 11:23) Раб...   Oct 24 2007, 07:58
||- - zltigo   Цитата(alexander55 @ Oct 24 2007, 10:58) ...   Oct 24 2007, 08:07
|||- - alexander55   Цитата(zltigo @ Oct 24 2007, 12:07) Вот т...   Oct 24 2007, 08:13
||- - andron86   Цитата(alexander55 @ Oct 24 2007, 09:58) ...   Oct 24 2007, 08:38
|- - defunct   Цитата(ValBag @ Oct 24 2007, 09:19) Для п...   Oct 24 2007, 12:42
- - bodja74   В ассемблере вообще ни в чем ограничений нет Пр...   Oct 24 2007, 06:40
- - DASM   Чисто в лоб типа такого Кодwhile (1) { ...   Oct 24 2007, 06:45
- - IEC   Ну результат почти такой же. В текущем примере из-...   Oct 24 2007, 07:07
|- - ReAl   Цитата(IEC @ Oct 24 2007, 09:07) А вообще...   Oct 24 2007, 11:46
- - zltigo   Продолжаем в уже существующей ветке: http://electr...   Oct 24 2007, 07:19
- - ValBag   Прошу прощения за создание новой темы без поиска. ...   Oct 24 2007, 09:49
- - Maddy   А собственно чего все так на бедного goto оплчилис...   Oct 24 2007, 10:02
- - aesok   GCC Bugzilla: Only very good and very bad progra...   Oct 24 2007, 10:04
|- - alexander55   Цитата(aesok @ Oct 24 2007, 14:04) Only v...   Oct 24 2007, 10:21
- - DASM   Не отношу себя ни к вери гуд ни вери бэд, но со вр...   Oct 24 2007, 10:19
- - DASM   OFF - ReAL - а как код в трубочку свернули ?   Oct 24 2007, 11:49
- - ValBag   Перечитал всю тему. На мой взгляд отказ от примене...   Oct 24 2007, 12:06
|- - ReAl   Цитата(ValBag @ Oct 24 2007, 14:06) Отред...   Oct 24 2007, 12:27
|- - ReAl   Цитата(ValBag @ Oct 24 2007, 14:06) Тот ж...   Oct 24 2007, 12:29
- - DASM   А что по вашему ReAl сделал ?   Oct 24 2007, 12:09
|- - ValBag   Цитата(DASM @ Oct 24 2007, 20:09) А что п...   Oct 24 2007, 12:29
- - ReAl   Раз уж я тут застрял - что я имел ввиду под ...   Oct 24 2007, 12:50
- - ValBag   ReAl ЦитатаА тут мы переводим текст с чего-то типа...   Oct 24 2007, 13:09
|- - defunct   Цитата(ValBag @ Oct 24 2007, 16:09) А чем...   Oct 24 2007, 13:16
|- - ReAl   Цитата(ValBag @ Oct 24 2007, 15:09) ReAl ...   Oct 24 2007, 13:46
|- - ValBag   Цитата(ReAl @ Oct 24 2007, 21:46) пример ...   Oct 24 2007, 14:01
- - ValBag   defunct Понятно, появляется рябь в глазах, а затем...   Oct 24 2007, 13:33
|- - alexander55   Цитата(ValBag @ Oct 24 2007, 17:33) defun...   Oct 24 2007, 13:44
- - ValBag   REAL Шашечек конечно не надо, но и ехать не получа...   Oct 25 2007, 12:45
|- - ReAl   Цитата(ValBag @ Oct 25 2007, 14:45) Самое...   Oct 25 2007, 22:04
- - ValBag   ReAl Теперь все понятно! Только наверное надо ...   Oct 27 2007, 08:58
|- - ReAl   Цитата(ValBag @ Oct 27 2007, 10:58) Тольк...   Oct 27 2007, 10:16
- - sensor_ua   ЦитатаТут эти скобки не обязательны - согласно при...   Oct 27 2007, 10:51


Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 14:05
Рейтинг@Mail.ru


Страница сгенерированна за 0.0149 секунд с 7
ELECTRONIX ©2004-2016