|
этот страшный ужасный GoTo
|
|||
---|---|---|---|
#18+
Cat2В чужом коде гораздо легче разобраться если там GOTO, а не бесчисленные комбинации флагов выхода из циклов Как-то ты не совсем корректно формулируешь мысль - почем ты одному GOTO сопоставляешь бесчисленные комбинации флагов выхода из циклов? 1. Если у нас бесчисленные комбинации флагов выхода из циклов, то тогда у нас будут бесчисленные переходы GOTO. 2. Вопрос, что лучше, бесчисленные переходы GOTO или бесчисленные комбинации флагов выхода из циклов? От бесчисленных переходов GOTO голова кругом пойдет. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2012, 17:50 |
|
этот страшный ужасный GoTo
|
|||
---|---|---|---|
#18+
МСУ, кстати на заметку, в Бабсике можно сразу покинуть 3 цикла при желании Код: vbnet 1. 2. 3. 4. 5. 6. 7.
без всяких там GoTo как написано в педивикии ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2012, 17:54 |
|
этот страшный ужасный GoTo
|
|||
---|---|---|---|
#18+
Roman Mejtes, а в JavaScript есть break ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2012, 18:57 |
|
этот страшный ужасный GoTo
|
|||
---|---|---|---|
#18+
МСУCat2В чужом коде гораздо легче разобраться если там GOTO, а не бесчисленные комбинации флагов выхода из циклов Как-то ты не совсем корректно формулируешь мысль - почем ты одному GOTO сопоставляешь бесчисленные комбинации флагов выхода из циклов? 1. Если у нас бесчисленные комбинации флагов выхода из циклов, то тогда у нас будут бесчисленные переходы GOTO. 2. Вопрос, что лучше, бесчисленные переходы GOTO или бесчисленные комбинации флагов выхода из циклов? От бесчисленных переходов GOTO голова кругом пойдет. Речь о выходе из цикла нижнего уровня. Для каждого из вложенных циклов в общем случае нужен свой флаг выхода. Переменные должны описываться рядом с их использованием. Нет глобальным переменным! - это тоже спорный подход. Нужно только одно goto, что бы выйти из цикла, а не стопицот проверок флагов. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2012, 20:41 |
|
этот страшный ужасный GoTo
|
|||
---|---|---|---|
#18+
Да ерунда это все. На том-же ассемблере вообще без гоуту шага не ступишь. :) Но, вообще, последнее время надобности не возникало. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2012, 21:11 |
|
этот страшный ужасный GoTo
|
|||
---|---|---|---|
#18+
Cat2Нужно только одно goto, что бы выйти из цикла, а не стопицот проверок флагов. В функцию оформить и выйти ретурном. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2012, 21:40 |
|
этот страшный ужасный GoTo
|
|||
---|---|---|---|
#18+
Edd.DragonCat2Нужно только одно goto, что бы выйти из цикла, а не стопицот проверок флагов. В функцию оформить и выйти ретурном. Мысль я понял, не понял сколько функций Вы предлагаете для десяти уровней вложенности циклов? GOTO - полезный оператор. Присутствует во всех языках программирования, ориентированных на решение практических задач. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2012, 21:57 |
|
этот страшный ужасный GoTo
|
|||
---|---|---|---|
#18+
Cat2десяти уровней вложенности циклов Часто у вас такие циклы? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2012, 22:19 |
|
этот страшный ужасный GoTo
|
|||
---|---|---|---|
#18+
YUBAНа том-же ассемблере вообще без гоуту шага не ступишь. :) это кажется. Каждый лишний переход - срыв конвейера. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2012, 22:29 |
|
этот страшный ужасный GoTo
|
|||
---|---|---|---|
#18+
Cat2Речь о выходе из цикла нижнего уровня. Для каждого из вложенных циклов в общем случае нужен свой флаг выхода. Переменные должны описываться рядом с их использованием. Нет глобальным переменным! - это тоже спорный подход. Нужно только одно goto, что бы выйти из цикла, а не стопицот проверок флагов. Решение классическое и старо как мир, его уже озвучили. Собственно, разделение логики кода на составляющие методы - бест практис. Писать код процедурно в одном методе под тысячи строк - зло, за которое нужно расстреливать. Cat2Мысль я понял, не понял сколько функций Вы предлагаете для десяти уровней вложенности циклов? А сколько признаков будет, столько и напиши функий. На практике больше трех вложенностей я не встречал, и то поискать эти примеры нужно, сейчас не упомню. Если в твоем коде слишком большая вложенность по признакам, проблема не в функциях, а в архитектуре кода. На кол архитектора. Cat2GOTO - полезный оператор GOTO - зло, от которого нужно отказываться при любом раскладе. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2012, 22:37 |
|
этот страшный ужасный GoTo
|
|||
---|---|---|---|
#18+
ИзопропилYUBAНа том-же ассемблере вообще без гоуту шага не ступишь. :) это кажется. Каждый лишний переход - срыв конвейера.Вызов функции в языках высокого уровня, по существу и есть гоуту. В ассемблере это явно как переход на адрес. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2012, 23:00 |
|
этот страшный ужасный GoTo
|
|||
---|---|---|---|
#18+
YUBAВ ассемблере это явно как переход на адрес. не путайте JUMP и CALL ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2012, 23:13 |
|
этот страшный ужасный GoTo
|
|||
---|---|---|---|
#18+
Изопропилне путайте JUMP и CALLМодификации. :) И, кстати, не везде это есть. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2012, 23:30 |
|
этот страшный ужасный GoTo
|
|||
---|---|---|---|
#18+
YUBAИзопропилне путайте JUMP и CALLМодификации. :) И, кстати, не везде это есть. BALR 14,0 ? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2012, 23:32 |
|
этот страшный ужасный GoTo
|
|||
---|---|---|---|
#18+
Cat2Мысль я понял, не понял сколько функций Вы предлагаете для десяти уровней вложенности циклов? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40.
И еще раз - вопрос не в том, что краше, а в том, чтобы не взрывать ни компилятору, ни себе башню. Это плохо, что во всех языках есть goto. Без него всем было бы чуточку легче. Кому-то меньше зубодробительной логики по разбору кода, а кому-то меньше потенциальных проблем (хорошо, если компилятор чего подскажет, а если нет?). ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2012, 01:14 |
|
этот страшный ужасный GoTo
|
|||
---|---|---|---|
#18+
Edd.Dragon Гавнокод Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40.
Мда. За такую "архитектуру" нужно выпроваживать в зал расстрела... Только разделение логики на методы спасут отца русской демократии. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2012, 10:25 |
|
этот страшный ужасный GoTo
|
|||
---|---|---|---|
#18+
Edd.Dragon, Хм, как вариант для рефакторинга очень даже ничего. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2012, 10:42 |
|
этот страшный ужасный GoTo
|
|||
---|---|---|---|
#18+
МСУТолько разделение логики на методы спасут отца русской демократии. а любая я ли логика поддаётся эффективному разделению на методы? а вдрух я реализую конечный пулемёт автомат. там не то что без готу не обойтись , но и на методы делить то трудновато. и в конце концов на методы делить мона тогда , когда более менее ясно , как дальше двигаться, а если поведение метода окончательно не определено, то рано его делить на под методы. был метод какой то ( матрицу обкатывал в рекурсии), который при создании трудно было разделить. вот он и получился строк 200-300 , уж не помню точно. да , потом его разпили удачно , но только потом. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2012, 10:48 |
|
этот страшный ужасный GoTo
|
|||
---|---|---|---|
#18+
beg-in-erа любая я ли логика поддаётся эффективному разделению на методы? Вопрос из разряда теории "всегда ли можно оптимизировать код". Всегда, даже если ты максимально оптимизировал код, это не означает, что он больше не поддается оптимизации. Думай, как можно структурировать и декомпозировать логику и уйти от лапшекода. beg-in-erа вдрух я реализую конечный пулемёт автомат. там не то что без готу не обойтись , но и на методы делить то трудновато. Слабо пример привести, в котором не обойтись без GOTO? Если "трудновато" декомпозировать - это не означает, что это нельзя сделать. beg-in-erи в конце концов на методы делить мона тогда , когда более менее ясно , как дальше двигаться, а если поведение метода окончательно не определено, то рано его делить на под методы. Если не ясно, "как дальше двигаться" - рано писать программу. Нужен анализ и обследование предметной области. Когда будет представление, тогда можно автоматизировать процессы. А так ты просто сотрясаешь воздух сферическими конями в вакууме. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2012, 10:57 |
|
этот страшный ужасный GoTo
|
|||
---|---|---|---|
#18+
МСУbeg-in-erа любая я ли логика поддаётся эффективному разделению на методы?Вопрос из разряда теории "всегда ли можно оптимизировать код". Всегда, даже если ты максимально оптимизировал код, это не означает, что он больше не поддается оптимизации. Думай, как можно структурировать и декомпозировать логику и уйти от лапшекода. пропущено...Всегда можно, но не всегда нужно. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2012, 11:14 |
|
этот страшный ужасный GoTo
|
|||
---|---|---|---|
#18+
МСУЕсли "трудновато" декомпозировать - это не означает, что это нельзя сделать. понятно что всё можно , но иногда оно может пойти во вред. или затраты по времени будут ощутимы. авторЕсли не ясно, "как дальше двигаться" - рано писать программу речь не о проге , а об конкретном алгоритме. т.е. тогда , когда мы знаем , что хотим получить , но не знаем точно как это сделать 1. Либо много альтернатив, и выбрать изначально правильную невозможно 2. Либо при создании первичной реализации алгоритма получаются промежуточные данные, которые уже в последствии и делают основу конечной реализации. Без этих данных реализацию построить невозможно, а на бумаге это не просчитать. в частности тогда шла речь о реализации алгоритма Литтла, ака метод ветвей и границ. как он работает , я чесно говоря до сих пор не понимаю ( т.е. я не до конца въехал, почему он таки даёт почти правильный результат , и почему он иногда даёт не всегда оптимальный результат) как раз для таких случаев goto просто незаменим. и меня уже не переубедить никогда в том , что goto надо отправлять на свалку, что он вреден, что он колечит мозг. goto это лишь удобный метод достижения поставленной задачи. но как атомное оружие в программировании , его надо юзать с умом, там где он реально необходим, где все for, while.... курят в сторонке ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2012, 11:42 |
|
этот страшный ужасный GoTo
|
|||
---|---|---|---|
#18+
beg-in-er1. Либо много альтернатив, и выбрать изначально правильную невозможно Ну так берем и тестируем алгоритмы. Более выйгрышное по каким-то там определенным параметров забираем себе. beg-in-er2. Либо при создании первичной реализации алгоритма получаются промежуточные данные, которые уже в последствии и делают основу конечной реализации. Без этих данных реализацию построить невозможно, а на бумаге это не просчитать. Ну так выноси расчет и взаимодействие с этими данными в отдельный слой, тем самым декомпозируя основной алгоритм. beg-in-erкак раз для таких случаев goto просто незаменим. Мне нравится твоя логика, ты пишешь, что не знаешь как он работает и что не разобрался с этим алгоритмом, но точно уверен в необходимости GOTO. Зачет ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2012, 11:52 |
|
этот страшный ужасный GoTo
|
|||
---|---|---|---|
#18+
МСУМне нравится твоя логика, ты пишешь, что не знаешь как он работает и что не разобрался с этим алгоритмом, но точно уверен в необходимости GOTO. Зачет я знаю как работает его реализация, Но я до конца не понял ( тогда) почему работает сам алгоритм. почему он находит почти лучший вариант. и это непонимание не относится к программированию никаким боком. так что твой "зачёт" - мимо кассы. авторНу так выноси расчет и взаимодействие с этими данными в отдельный слой, тем самым декомпозируя основной алгоритм. не понял , а это к чему. поясню свою мысль. когда шла та реализация - необходимо было найти решение транспортной задачи с доп моментами. на рассмотрении были "муравьи", "генетика" и "ветви" (куда же без них). что генетические алгоритмы , что муравьные вроде давали результат, но что то с доп моментами с ними было плохо. пришлось лезть в метод ветвей и границ, в реализации Литтла, получить промежуточные данные, на основании которых и был выведен новый алгоритм, который выполнял поставленную задачу за приемлемое время. Оптимизация NP полной задачи это не таблицу в БД добавить. тут надо найти правильное/приемлемое решение. и заранее вычислить конечную реализацию просто невозможно. необходимо пройти по всем кругам. и тут не применим ваш график буровых работ для служащих ВВС (с) стандартные подходы тут не подходят. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2012, 12:17 |
|
|
start [/forum/topic.php?fid=20&msg=38096697&tid=1405414]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
88ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
others: | 337ms |
total: | 530ms |
0 / 0 |