Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » go to

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2

Открыть новую тему     Написать ответ в эту тему

DI0K



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Почему не рекомендуеться использовать go to?
Я слышал это считаеться плохим стилем програмирования.

Всего записей: 137 | Зарегистр. 01-06-2004 | Отправлено: 12:22 31-07-2004
c0r0ner



злобный доктор
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DI0K
 

Цитата:
Почему не рекомендуеться использовать go to?

1. Очень затрудняет чиабельность кода.
2. Проблемы при отладке
3. Нет такой задачи, которую нельзя решить без Goto
4. Просто так не принято.

----------
Я - сущий ангел. Только крылья в стирке, а нимб на подзарядке.

Всего записей: 742 | Зарегистр. 09-12-2001 | Отправлено: 14:35 31-07-2004
vserd

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DI0K
Применение Goto не является плохим стилем программирования.
Плохим стилем программирования является черезмерное увлечение оператором Goto.
Т.е. если тебе проще воспользоваться этим оператором, чем сооружать другую конструкцию и операторов, то нужно пользовать Goto.
Если же ты пишешь код на подобии этого
Oper1
Oper2
Goto Lbl1
Lbl2 Oper 3  
oper 4
end
 
Lbl1
oper5
goto Lbl2
то это плохой стиль.
 
Хотя его-же можно выразить в виде функции
 
Oper1
Oper2
sub1
Oper 3  
oper 4
end
 
Sub1  
oper5
endSub
 
Так что пользуйся наздоровье. Но помни что черезчур, то вредно.

Всего записей: 2065 | Зарегистр. 08-05-2002 | Отправлено: 14:56 31-07-2004
mihas83



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vserd

Цитата:
Так что пользуйся наздоровье. Но помни что черезчур, то вредно

И все таки желательно избегать его...
Об этом пишут все классики, а в некоторых вузах ставят даже двойки...


----------
Мы знаем: время растяжимо. Оно зависит от того,
Какого рода содержимым Вы заполняете его. (C. Маршак)

Всего записей: 7832 | Зарегистр. 15-07-2003 | Отправлено: 17:33 31-07-2004
iyura

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В вузах ставят двойки те преподаватели, которые занимаются только обучением программированию и не тянут реальные проекты. С моей точки зрения в goto не никакого зла. Просто использовать его нужно с умом (классический пример - выход из вложенных циклов)

Всего записей: 5 | Зарегистр. 07-05-2003 | Отправлено: 19:48 31-07-2004
c0r0ner



злобный доктор
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
 не тянут реальные проекты

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

Цитата:
классический пример - выход из вложенных циклов

хе хе, это как, вместо breack


----------
Я - сущий ангел. Только крылья в стирке, а нимб на подзарядке.

Всего записей: 742 | Зарегистр. 09-12-2001 | Отправлено: 20:34 31-07-2004
UncoNNecteD



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Раньше сам удивлялся, почему goto - это неправильно.
Сейчас, после пары лет довольно серьезных разработок понимаю, что ни разу его не использовал.
Вот так то

----------
-= Я тут чертовски давно =-

Всего записей: 4040 | Зарегистр. 21-03-2002 | Отправлено: 04:45 01-08-2004
mihas83



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
UncoNNecteD

Цитата:
Сейчас, после пары лет довольно серьезных разработок понимаю, что ни разу его не использовал

Анологично. За 7 лет встречал, по-моему, 1 раз.
А проекты большие и разные.

----------
Мы знаем: время растяжимо. Оно зависит от того,
Какого рода содержимым Вы заполняете его. (C. Маршак)

Всего записей: 7832 | Зарегистр. 15-07-2003 | Отправлено: 08:05 01-08-2004
TheChampion

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
По поводу goto хорошо написал автор TCP/IP: "попробуйте создать столь же эффективный код не используя goto" [1] (см. www.kalinin.ru, "Религия и goto").
 
И еще: допустим, у вас есть цикл четырехкратной вложенности. Как выйти из самого внутреннего цикла дальше в программу? break? Не получится, он выйдет во внешний цикл. Можно использовать много break и флаги, тогда см. [1].
 
И еще: break и return - это тоже своеобразная форма goto, но ее никто не осуждает, а только приветствуют. Религия!

Всего записей: 656 | Зарегистр. 25-06-2004 | Отправлено: 08:52 01-08-2004
OldGopher



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Goto повышает Вашу устойчивость на работе.  
Сложнее потом понять, что Вы написали. Разобраться в Вашем коде...
 
Рекомендую писать программы так, чтобы о Вашем увольнении даже не заикались...

Всего записей: 3802 | Зарегистр. 25-10-2001 | Отправлено: 09:27 01-08-2004
mihas83



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
OldGopher

Цитата:
Рекомендую писать программы так, чтобы о Вашем увольнении даже не заикались...

Побольше закладывать толковых багов в программу с самого начала...
Решение которых знаешь только ты...  

Всего записей: 7832 | Зарегистр. 15-07-2003 | Отправлено: 14:16 01-08-2004
vndovr

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
есть цикл четырехкратной вложенности

Если такое есть на этапе реализации то, с высокой долей вероятности, чего-то не хватило на этапе проектирования.  

Цитата:
попробуйте создать столь же эффективный код не используя goto

Goto в написании эффективного кода занимает место ...надцатое. Само собой, всегда можно найти задачу где goto выглядит "в тему" и тыкать ей в лицо противникам goto. Но в большинстве задач использование более эффективных алгоритмов, методик, паттернов и т.д. оказывают значительно больший эффект. Поэтому лучше потратить время на их поиск, чем на бесполезные споры о пользе goto.
 
OldGopher
Это веская причина А есть опыт успешного применения?

Всего записей: 359 | Зарегистр. 05-02-2004 | Отправлено: 14:32 01-08-2004
WiseAlex



Софтовых дел М...
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
а в некоторых вузах ставят даже двойки...  

Иногда даже за использование циклом с постусловием

Цитата:
В вузах ставят двойки те преподаватели, которые занимаются только обучением программированию и не тянут реальные проекты

К сожалению во многих вузах это так
OldGopher

Цитата:
Goto повышает Вашу устойчивость на работе.  
Сложнее потом понять, что Вы написали. Разобраться в Вашем коде...  

Если человек освоил С++, то goto его уж точно не остановит
vndovr

Цитата:
Поэтому лучше потратить время на их поиск

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

Всего записей: 1001 | Зарегистр. 02-03-2003 | Отправлено: 00:21 02-08-2004
Almaz



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
WiseAlex
Цитата:
использование циклом с постусловием  
это что? until что ли? если да, то почему? пардон, что туплю, чукча не читатель, чукча писатель
Цитата:
К сожалению во многих вузах это так  
почему к сожалению? они и должны преподавать, а не халтурить на стороне
по делу: последний раз goto пользовал в старинном fortran'e под БЭСМ-6, а уже в PL/1 можно было без него обойтись. как где-то вычитал, что плохо, так и перестал. и тогда особо не задумывался, и потом тоже
 
TheChampion
Цитата:
Как выйти из самого внутреннего цикла дальше в программу? break? Не получится, он выйдет во внешний цикл. Можно использовать много break и флаги... И еще: break и return - это тоже своеобразная форма goto, но ее никто не осуждает, а только приветствуют. Религия!
полностью согласен. только все равно леплю break'и, а синтаксис goto даже и не помню
 
vndovr
Цитата:
в большинстве задач использование более эффективных алгоритмов, методик, паттернов и т.д. оказывают значительно больший эффект. Поэтому лучше потратить время на их поиск, чем на бесполезные споры о пользе goto
двумя руками за. и еще, грамотное документирование программы гораздо важнее, чем легкая ересь с goto. побольше бы в вузах этому учили.
 
mihas83
Цитата:
в некоторых вузах ставят даже двойки
имхо это самый серьезный аргумент (без дураков). и в конторах тоже бывают начальники/ограничения

Всего записей: 2219 | Зарегистр. 20-06-2002 | Отправлено: 01:28 02-08-2004
ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ИМХО все споры о пользе goto происходят по одной простой причине. Прораммирование по правилам происходит сверху вниз, а оператор goto портит этот принцип, из этого и следует, что если есть возможность, то лучше его не использовать, но если его использование необходимо, (даже автор Bred2 использовал его в своей программе, а надеюсь никто не скажет, что он безграмотный программист сорри вор оффтоп) то почему бы и нет. Хотя я тоже присоединюсь к выше сказанным словам за последние 7 лет программирования, ни разу не было случая его использования.


----------
И создал Бог женщину... Существо получилось злобное, но забавное...

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 02:04 02-08-2004
mihas83



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
WiseAlex

Цитата:
Если обобщить, то, следуя рекомендациям mihas83 и собственному опыту, можно поставить диагноз: 1 goto в год вам не повредит  

Ты неправильно меня интерпретировал. Я сказал:

Цитата:
За 7 лет встречал, по-моему, 1 раз.  

И автором его был не я...

Всего записей: 7832 | Зарегистр. 15-07-2003 | Отправлено: 09:06 02-08-2004
Sleepwalker



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
короче, класс алгоритмов, которые нельзя реализовать без GT очень мал  
имхо, GT плох не своей работой, а именно пониманием алгоритма программы... несколько переходов вверх и вниз - и становится весело

----------
...или я ничего не понимаю в этой жизни... или понимаю слишком хорошо...

Всего записей: 1957 | Зарегистр. 19-10-2002 | Отправлено: 10:45 02-08-2004
WiseAlex



Софтовых дел М...
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Almaz

Цитата:
это что? until что ли?  

да

Цитата:
то почему?

не знаю... кто-то им скпазал, что это плохо и все

Цитата:
они и должны преподавать, а не халтурить на стороне  

не уверен-я заканчивал электропривод и там все преподы что-то делали и делают сами
mihas83

Цитата:
Ты неправильно меня интерпретировал.

правильно - там дальне пояснение, впрочем это не так важно
----
Пора заканчивать - тема переросла во флэйм, Предлагаю кому-то обобщить и поставить точку

Всего записей: 1001 | Зарегистр. 02-03-2003 | Отправлено: 10:58 02-08-2004
CamTracer

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
WiseAlex
Где заканчивал?
Пиши в почту
 
Попытаюсь обобщить.
пoto это такая традиция - никому он нужен, а все равно без него никак.

Всего записей: 264 | Зарегистр. 07-07-2004 | Отправлено: 11:13 02-08-2004
vserd

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mihas83

Цитата:
Так что пользуйся наздоровье. Но помни что черезчур, то вредно  
И все таки желательно избегать его...  
Об этом пишут все классики, а в некоторых вузах ставят даже двойки...  

 
Вот именно, класики. Если ты еще вспомнишь историю развития языков, и посмотришь когда и почему появились статьи о вреде GOTO то поймешь, что значит повальное использование GOTO, а что занчит нормальное использование.  
В ВУЗах скорей всего правильно ставят двойки, потому что студенты еще не доконца понимают смысл языков. В 99,9(9)%  учебных программ можно обойтись без этого оператора.  
Даже в реальных программах мне пришлось его использовать не более 2-3 раз, за лет 12 профессионального кодинга и проектирования.
 
c0r0ner

Цитата:
Человек который "тянет" реальные проекты никогда не будет использовать go to потому что он может работать не один, и код тогда разарабатывать будет просто нереально

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

Цитата:
Goto повышает Вашу устойчивость на работе.  
Сложнее потом понять, что Вы написали. Разобраться в Вашем коде...  
Рекомендую писать программы так, чтобы о Вашем увольнении даже не заикались...

 
Это до тех пор, пока рядом с вами (вашим директором) не появится человек, который покажет что программы написанные им, гораздо устойчевее, легче поддаются сопровождению. Тогда вы с вероятностью 0.8-0.9 вылетите с работы. Бизнес, обычно, не любит высоких рисков, а программы которые может сопровождать только их автор, обычно относятся к высоким рискам.  
 
Если же ваши программы относительно легко модифицируются, и отвечают требованиям бизнеса, то директор при виде вашего заявления об увольнении будет с вами долго разговаривать, и повышать зарплату и бонусы.
 
CamTracer

Цитата:
Попытаюсь обобщить.  
пoto это такая традиция - никому он нужен, а все равно без него ник

Вернее немного не так.
Все хаят и запрещают Goto, а все равно без него никак :)))

Всего записей: 2065 | Зарегистр. 08-05-2002 | Отправлено: 11:59 02-08-2004
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » go to


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru