Текущий архив: 2011.06.19;
Скачать: CL | DM;
Вниз
Goto in Delphi Найти похожие ветки
← →
clickmaker © (2011-02-23 13:54) [40]> однажды я проснулся и понял, что goto - это реально плохая
> вещь. Тогда я взял весь java-код в мире, и выбросил оттуда
> все goto. Это заняло пару часов
с бодунища и не такое сделаешь
← →
Inovet © (2011-02-23 14:07) [41]> [40] clickmaker © (23.02.11 13:54)
> с бодунища и не такое сделаешь
Где убрал - забыл, и резервную копию забыл сделать. С тех пор в java нет goto.
← →
DiamondShark © (2011-02-23 14:24) [42]
> goto удобен тут для кодирования state-машины
Для кодирования state-машины goto не нужен вообще никак.
← →
Игорь Шевченко © (2011-02-23 14:33) [43]как сказано в одном из комментов к
> http://habrahabr.ru/blogs/development/114326/
"goto — инструмент. Лучше учиться, как им правильно пользоваться, чем его избегать. "
с этой точкой зрения я согласен целиком и полностью.
← →
DiamondShark © (2011-02-23 14:34) [44]
> goto — инструмент
Грабли -- тоже инструмент.
← →
clickmaker © (2011-02-23 14:39) [45]> Грабли -- тоже инструмент
так же как молоток, дрель и бензопила "Дружба". И что? Если не разбрасывать, где ни попадя и не юзать с перепоя, то вполне себе жить можно
← →
asail © (2011-02-23 14:52) [46]
> DiamondShark © (23.02.11 14:34) [44]
> Грабли -- тоже инструмент.
Весьма, кстати, полезный...
По сабжу, лет эдак 5-6 не возникало необходимость в Goto. Ни разу. Вот так, чтоб без него ну совсем плохо было бы. Но, вполне допускаю ситуации, где сие чудо могло бы пригодиться.
А вот, Exit использовал часто, но осторожно. Как правило, исключительно в начале функций для проверки вводных. Чтоб лишних блоков begin..end не городить.
← →
Anatoly Podgoretsky © (2011-02-23 15:26) [47]> palva (23.02.2011 13:29:36) [36]
Любой программист должен уметь не программировать в таком стиле
← →
Фокс Йовович (2011-02-23 15:39) [48]goto полезен для выхода из кучи вложенных циклов
← →
KilkennyCat © (2011-02-23 18:14) [49]а в асме ваще все плохо.
← →
Mystic © (2011-02-23 18:30) [50]
> Для кодирования state-машины goto не нужен вообще никак.
Тогда часто теряется вся наглядность.
← →
asail © (2011-02-23 19:39) [51]
> Фокс Йовович (23.02.11 15:39) [48]
Abort, как правило, достаточно...
← →
QAZ (2011-02-24 12:18) [52]а я обожаю связку иф\тхен+гото :)
сильно упрощает многие алгоритмы,а также делаем простые алгоритмы более продвинутыми и универсальными
← →
Григорьев Антон © (2011-02-24 12:53) [53]
> Anatoly Podgoretsky © (23.02.11 13:03) [35]
> > Alkid (23.02.2011 12:52:33) [33]
>
> А Вирт слабак
А вот и нет. Вирт выбросил goto из своего Оберона, который вышел в 1988 году. Разработка Java началась только в 1990 году, так что Вирт был раньше. Кстати, апологеты Оберна утверждают, что авторы Java очень активно изучали опыт Оберона и даже приглашали разработчиков этого языка для консультаций, но теперь от этого открещиваются.
А ещё в Обероне Вирт выкинул оператор for, сказав, что while его вполне заменяет. Правда, в Обероне-2 ученики Вирта for восстановили, неудобно без него.
← →
Anatoly Podgoretsky © (2011-02-24 14:05) [54]> Григорьев Антон (24.02.2011 12:53:53) [53]
Разброд и шатание
← →
oldman © (2011-02-24 16:06) [55]Эх... Вспоминаю PL... Структурированный язык... Goto запрещен в принципе...
И ведь обходились!
← →
Игорь Шевченко © (2011-02-24 16:28) [56]
> Вспоминаю PL
в PL/1 goto был
← →
Anatoly Podgoretsky © (2011-02-24 16:34) [57]> oldman (24.02.2011 16:06:55) [55]
Чтобы обходиться без Goto запрет не нужен
← →
И. Павел © (2011-02-24 19:41) [58]А мне еще в школе учительница по программированию (самая первая и самая лучшая :) изначально не рассказывала про goto. Поэтому я привык без него обходиться. Ни разу в жизни не использовал. Если не считать маленькие программки на assembler. Хоть и не считаю единичные goto смертным грехом.
А в JAVA можно давать названия блокам. Это помогает делать break и continue из вложенного цикла без вспомогательных средств и без goto. Вообще в этом языке много старых камней преткновения сгладили. Надеюсь, новых меньше добавили :)
← →
KilkennyCat © (2011-02-24 19:55) [59]конструкция begin...end вызывает сомнений не меньше, чем Goto.
← →
Дмитрий Тимохов (2011-02-25 01:03) [60]a вот начал пользоваться - очень удобная штука, если, конечно, не читать, форумы с ассами программирования в дельфи
← →
KilkennyCat © (2011-02-25 01:59) [61]ассы - это хорошо сказано :)
← →
Григорьев Антон © (2011-02-25 06:58) [62]
> KilkennyCat © (25.02.11 01:59) [61]
> ассы - это хорошо сказано :)
Это ещё Архангельский придумал, см. http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1082
← →
Alkid © (2011-02-25 10:47) [63]
> Игорь Шевченко © (23.02.11 13:42) [37]
> Много где нету. И много где есть. И что с того ? :)
Это была иллюстрация к вопросу о том, почему не запрещено на уровне компилятора :)
← →
oxffff © (2011-02-25 10:58) [64]goto наше все.
Без безусловного перехода никуда.
(назовите это jmp(x86), br(MSIL), goto(high level language)).
← →
Alkid © (2011-02-25 12:31) [65]
> oxffff © (25.02.11 10:58) [64]
>
> goto наше все.
> Без безусловного перехода никуда.
> (назовите это jmp(x86), br(MSIL), goto(high level language)).
Это зависит от выразительных средств языка.
← →
oxffff © (2011-02-25 12:39) [66]
> Alkid © (25.02.11 12:31) [65]
>
> > oxffff © (25.02.11 10:58) [64]
> >
> > goto наше все.
> > Без безусловного перехода никуда.
> > (назовите это jmp(x86), br(MSIL), goto(high level language)).
>
>
> Это зависит от выразительных средств языка.
Он все равно присутствует в явном или не явном виде(не буквально).
Например в виде break, exit, raise.
← →
RWolf © (2011-02-25 12:57) [67]всё дело в семантике операции.
break и прочие означают не то же самое, что goto, хоть и транслируются в такой же переход.
и это сильно помогает читать программу, а значит, улучшает код.
← →
KilkennyCat © (2011-02-25 13:01) [68]это брек-то помогает читать код? особенно в сравнении с гоуту??
← →
Inovet © (2011-02-25 13:04) [69]> [68] KilkennyCat © (25.02.11 13:01)
> это брек-то помогает читать код? особенно в сравнении с гоуту??
А нет? Break досрочный выход в известое место, а goto фиг знает куда может выйти.
← →
KilkennyCat © (2011-02-25 13:11) [70]никогда не слышал о гоуту с рандомным переходом
← →
RWolf © (2011-02-25 13:20) [71]видя в коде слово break, я знаю, что а) есть охватывающий цикл, б) он может завершиться досрочно, в)он обрывается именно здесь.
если на его месте будет стоять goto, я должен буду сначала найти, куда он передаёт управление, затем понять задумку автора (в нашем случае — цикл или нет, как влияет на него переход, в каком состоянии после него остаётся контекст), ибо сам по себе goto никакой дополнительной смысловой нагрузки не несёт.
← →
KilkennyCat © (2011-02-25 13:32) [72]вы придираетесь.
зато я с гоуту гораздо гибче выхожу из цикла.
пример бряка:начало цикла
бряк
конец цикла
какая-то хрень.
здесь начнется с какая-то хрень.
предположим, что вам не надо она, если из цикла вышли по бряку.
будете писать условие.
с гоуту:начало цикла
гоуту на некакую-то хрень
конец цикла
какая-то хрень.
некакая-то хрень
← →
KilkennyCat © (2011-02-25 13:34) [73]хотя, может это мне легко... я недалеко от бейсика ушел.
← →
Компромисс (2011-02-25 13:51) [74]начало цикла
гоуту на некакую-то хрень
конец цикла
какая-то хрень.
некакая-то хрень
Почти спагетти получилось. Явно напрашивается функция
Найди_хрень
начало цикла
return найденная хрень
конец цикла
return null
с очевидным использованием
хрень = Найди_хрень
if(хрень != null){
обработай хрень
}
...
← →
Компромисс (2011-02-25 13:52) [75]Точнее
хрень = Найди_хрень
if(хрень == null){
обработай отсутствие хрени
}
...
← →
oxffff © (2011-02-25 14:28) [76]
> RWolf © (25.02.11 12:57) [67]
> всё дело в семантике операции.
> break и прочие означают не то же самое, что goto, хоть и
> транслируются в такой же переход.
> и это сильно помогает читать программу, а значит, улучшает
> код.
Не о ней речь. А вообще о безусловных переходах.
Но если рассуждать по Вашему, то например raise опасней goto, поскольку
в goto переход статичен, а raise позволяет не только выпругныть через несколько процедур, но выпригивать из одной и той же процедуры в разные места. Страшно? Но ведь используем.
← →
KilkennyCat © (2011-02-25 15:08) [77]а некоторые пишут условный переход, в котором условие всегда будет одно. своего рода гоуту :) хоть и в результате неграмотности.
← →
Jeer © (2011-02-25 15:32) [78]
> KilkennyCat © (25.02.11 13:11) [70]
>
> никогда не слышал о гоуту с рандомным переходом
Мы делали так:
Если в некоторой функции, в предпоследней строчке есть вызов другой функции, то вместо конструкции
CALL SUBFUNC
RET
мы делали
JMP SUBFUNC
Мелочь, а приятно.
← →
Inovet © (2011-02-25 16:07) [79]> [78] Jeer © (25.02.11 15:32)
> Мелочь, а приятно.
Экономили такты и стек.:)
← →
KilkennyCat © (2011-02-26 16:27) [80]
>
> Экономили такты и стек.:)
ну так, старая школа, сразу видно.
а сейчас винчестеры большие, памяти до дури, процессоры с ядрами.
Страницы: 1 2 3 вся ветка
Текущий архив: 2011.06.19;
Скачать: CL | DM;
Память: 0.63 MB
Время: 0.013 c