goto - с любимыми не расставайтесь, или break не тащит
Модератор: Модераторы
>>что за зуд ?
Твой "боевой" пример является образцом как нельзя и с алгоритмической стороны и синтаксической
>>Ну а что делать если каждый фрейм нужно сравнить с каждым ?
зачем сравнивать то что не изменилось с прошлого прогона? твой код 99.999999% процентов времени будет делать бесполезные сравнения из итерации в итерацию, а при достаточно больших количествах областей будет работать секунды и минуты вместо "мгновенного" результата.
>>Короче, вариантов "без GoTo" немало, но иногда смысла в них не так уж монго.
Ты пишешь на паскале и должен получать за GoTo по рукам
>>Кстати еще одна "легаси заковырка" inc и dec . Один бог ведет почему но сто раз сталкивался с тем что стоит добавить
>>их в код и в программе могут начаться разные "аномальные явления"
Компилятор тут не причем 99.999999%, бога нет. Остаешся ты... просто ты не умеешь писать а потом не умеешь понимать почему работает не так как тебе бы хотелось
В проблемах надо разбираться, выяснять их причины, сравнивать варианты... а не тырить гдето "боевой" код и удивляться "аномалиям"
Твой "боевой" пример является образцом как нельзя и с алгоритмической стороны и синтаксической
>>Ну а что делать если каждый фрейм нужно сравнить с каждым ?
зачем сравнивать то что не изменилось с прошлого прогона? твой код 99.999999% процентов времени будет делать бесполезные сравнения из итерации в итерацию, а при достаточно больших количествах областей будет работать секунды и минуты вместо "мгновенного" результата.
>>Короче, вариантов "без GoTo" немало, но иногда смысла в них не так уж монго.
Ты пишешь на паскале и должен получать за GoTo по рукам
>>Кстати еще одна "легаси заковырка" inc и dec . Один бог ведет почему но сто раз сталкивался с тем что стоит добавить
>>их в код и в программе могут начаться разные "аномальные явления"
Компилятор тут не причем 99.999999%, бога нет. Остаешся ты... просто ты не умеешь писать а потом не умеешь понимать почему работает не так как тебе бы хотелось
В проблемах надо разбираться, выяснять их причины, сравнивать варианты... а не тырить гдето "боевой" код и удивляться "аномалиям"
Я просто мимо проходил
У вас нет необходимых прав для просмотра вложений в этом сообщении.
zub писал(а):Ты пишешь на паскале и должен получать за GoTo по рукам
пойду поплачу... меня бить собираются...
zub писал(а): а не тырить гдето "боевой" код и удивляться "аномалиям"
Дядюшка Зуб ЭТО БЫЛ МОЙ КОД (разумеется я им не горжусь но он работает )... Несколько раз пытался сделать без ГоуТу ...и не то чтобы не получалось, но код или усложнялся без меры или попускал рядом стоящие области, а задача была такая что лучше захватить лишние чем пропустить ( хотел применять "честный детектор" движения для распознавания рук, пальцев и жестов. )
Но это так "лирика" и немного оффтоп . А чуть ближе к теме-то, что нужно постоянно перезапускать поиск что-бы выловить как можно больше соседних областей . Чуть красивее бы смотрелась отдельная функция писка с выходом по Exit, но это почти то же самое "принудительное пребывание цикла" что и по ГоуТу .
Alex2013, человек, наверно, не знает что такое безусловный переход и не догадывается, что зачастую машина сама прописывает этот безусловный переход, вместо программиста.
Переходы на короткие расстояния не всегда возможны, циклы зачастую забивают код и в любом случае приходится использовать безусловный переход на дальние расстояния. Хотя, всё равно по сути и то и другое - это GoTo.
Переходы на короткие расстояния не всегда возможны, циклы зачастую забивают код и в любом случае приходится использовать безусловный переход на дальние расстояния. Хотя, всё равно по сути и то и другое - это GoTo.
>>и не то чтобы не получалось, но код или усложнялся без меры или попускал рядом стоящие области, а задача была такая что лучше захватить лишние чем пропустить
Вот уже без гото и области не клеятся оказывается. Чето не получилось с полтычка написать по нормальному, поэтому гото это хорошо. Ты как всегда в своем репертуаре. Вставляй еще больше картинок по теме
Seenkao
Причем тут безусловный переход? я против гото в исходниках на языке высокого уровня, а не против переходов в выхлопе компилятора.
Компилятор пусть компилирует как считает нужным, твое дело не мешать - гото мешает.
Вот уже без гото и области не клеятся оказывается. Чето не получилось с полтычка написать по нормальному, поэтому гото это хорошо. Ты как всегда в своем репертуаре. Вставляй еще больше картинок по теме
Seenkao
Причем тут безусловный переход? я против гото в исходниках на языке высокого уровня, а не против переходов в выхлопе компилятора.
Компилятор пусть компилирует как считает нужным, твое дело не мешать - гото мешает.
мешает - не пользуйся!zub писал(а):гото мешает.
Мне не мешает! Я пользуюсь!
Добавлено спустя 9 минут 36 секунд:
Банально!
Мне надо прыгнуть с кода на код, для проверки работоспособности программы. Писать дополнительные вызовы процедур, искать обходные пути, чтобы "завуалировать" GoTo, нафиг это не нужно.
Я проверяю часть программы, как она сработает. Зачем я буду изобретать велосипед, чтобы потратить своё время?
А вот в последствии, я уже буду смотреть, если код будет рабочим, останется GoTo в коде или нет.
Останется в том случае, если код не будет ни где повторятся и я его не буду использовать для других мест. Зачем мне очередное нагромождение?
Ну и в противоположном случае не останется. Так же, для сокращения объёма как программы, так и потраченного времени.
Меня мало волнует что там подумает компилятор. Я ему даю задание, а он должен его выполнить и не ему за меня решать, что надо сделать. (Хотя и у него, иногда, интересный код проскальзывает).
>>Мне надо прыгнуть с кода на код
Вспомнишь этот топик сидя на отдельной сковороде))
Вспомнишь этот топик сидя на отдельной сковороде))
- Снег Север
- долгожитель
- Сообщения: 3067
- Зарегистрирован: 27.11.2007 15:14:47
- Контактная информация:
сколько лет прошло, а фраза не меняется (я в том смысле что мне уже не один десяток раз так говорили).zub писал(а):Вспомнишь этот топик сидя на отдельной сковороде))
Снег Север, хоть читал что там написано? Особенно в самом конце.
Добавлено спустя 26 минут 29 секунд:
Да, где-то там про комментарии была речь. Поднял свой старенький проект, танки делал, надо кое-что найти... Не знаю, чего больше, комментариев или кода.
Но даже с учётом комментариев, и то что вы любители ООП, то блин... проект надо знать, а так в любом случае заблудишься, месяц будешь ковыряться, чтоб понять что к чему и почему.
Снег Север писал(а):Быдлокодер
Добавлено спустя 4 минуты 13 секунд:
Seenkao писал(а):zub писал(а):
гото мешает.
мешает - не пользуйся!
Мне не мешает! Я пользуюсь!
"Не навиться Гитлер - не ешь !"(С) детский анекдот
Добавлено спустя 4 минуты 25 секунд:
zub писал(а):>>Мне надо прыгнуть с кода на код
Вспомнишь этот топик сидя на отдельной сковороде))
zub принюхайся ! Может быть рядом уже того ... "чем-то вкусненьким пахнет"
Добавлено спустя 7 минут 6 секунд:
zub писал(а):>>и не то чтобы не получалось, но код или усложнялся без меры или попускал рядом стоящие области, а задача была такая что лучше захватить лишние чем пропустить
Вот уже без гото и области не клеятся оказывается. Чето не получилось с полтычка написать по нормальному, поэтому гото это хорошо. Ты как всегда в своем репертуаре. Вставляй еще больше картинок по теме
Я к тому что просто лишний код писать не вижу смысла .... (Кстати в этом случае все было "с точностью до наоборот": вначале я написал без "ужасающего Goto " и все работало но потом поял что "нафига козе баян" и сделал проще ....
А картинка просто объяснение причины нужды в "углубленном поиске " и это не фотожаба (хотя каюсь пришлось "ловить момент" - из за чего собственно от идеи использовать "детектор движения для улучшения распознавания" я пока отказался )
И вообще конкретные примеры тут особой роли не играют . Просто ИМХО один из наиболее наиболее простых и наглядных вариантов экстренного выхода из "многоярусного FOR-цикла" это использование Goto. И попробуй без мистики объяснить что может произойти ПЛОХОГО при его использование в случае необходимости экстренного выхода из простого "многоярусного FOR-цикла"
Последний раз редактировалось Alex2013 29.10.2020 23:49:36, всего редактировалось 1 раз.
>>И попробуй без мистики объяснить что может произойти
Очень грубо: цикл является блоком программы с своей точкой входа и выхода, компилятор (оптимизатор) решает что нужно сохранить\восстановить на входе выходе, что можно распихать по регистрам. прыгая туда-сюда минуя точки входа-выхода ты вынуждаешь компилятор отказаться от большинства оптимизаций и код получается в разы медленней (не изза какихто мистических переходов, а изза того что тупо переменные остались в памяти а не размещены в регистрах внутри короткого много раз повторяемого блока)
Можно конечно сказать что это разрабы ленятся, не оптимизируют гото, но его проще выкинуть чем учесть в оптимизаторе. Никакой пользы в гото нет, штатные варианты цыклов и способы их прерывания гораздо лучше
Очень грубо: цикл является блоком программы с своей точкой входа и выхода, компилятор (оптимизатор) решает что нужно сохранить\восстановить на входе выходе, что можно распихать по регистрам. прыгая туда-сюда минуя точки входа-выхода ты вынуждаешь компилятор отказаться от большинства оптимизаций и код получается в разы медленней (не изза какихто мистических переходов, а изза того что тупо переменные остались в памяти а не размещены в регистрах внутри короткого много раз повторяемого блока)
Можно конечно сказать что это разрабы ленятся, не оптимизируют гото, но его проще выкинуть чем учесть в оптимизаторе. Никакой пользы в гото нет, штатные варианты цыклов и способы их прерывания гораздо лучше
zub писал(а):Очень грубо: цикл является блоком программы с своей точкой входа и выхода, компилятор (оптимизатор) решает что нужно сохранить\восстановить на входе выходе, что можно распихать по регистрам. прыгая туда-сюда минуя точки входа-выхода ты вынуждаешь компилятор отказаться от большинства оптимизаций и код получается в разы медленней (не из за каких то мистических переходов, а из за того что тупо переменные остались в памяти а не размещены в регистрах внутри короткого много раз повторяемого блока)
Допустим что это верно но усложнение кода без использования "ужаса на крыльях ночи " (я о goto если кто не понял ) вполне может съесть весь выигрыш от "супер оптимизации ". И кроме того так или иначе "многоярусный цикл" нужно как-то прервать (например "поднять флаг" и сделать "три брейка" ) так что "потоковая" оптимизация так или иначе идет к "мохнатой бабушке".
И еще, какой это к черту "умный оптимизатор" если он не умеет учитывать возможность применения примитивного и главное совершенно ШТАТНОГО ОПЕРАТОРА
>>И еще, какой это к черту "умный оптимизатор"
напиши умнее
>>кроме того так или иначе "многоярусный цикл" нужно как-то прервать
тебе про фому ты про ерему. нет в нормально написанной программе многоярусных циклов for которые надо прерывать
>>И попробуй без мистики объяснить что может произойти
Мистики не бывает. Есть баги в твоем коде и баги в чужом(компилятор, лцл, ...) коде. причем первого в 1000 раз больше
напиши умнее
>>кроме того так или иначе "многоярусный цикл" нужно как-то прервать
тебе про фому ты про ерему. нет в нормально написанной программе многоярусных циклов for которые надо прерывать
>>И попробуй без мистики объяснить что может произойти
Мистики не бывает. Есть баги в твоем коде и баги в чужом(компилятор, лцл, ...) коде. причем первого в 1000 раз больше
zub писал(а):прыгая туда-сюда минуя точки входа-выхода ты вынуждаешь компилятор отказаться от большинства оптимизаций и код получается в разы медленней
А теперь вопрос! (который, кстати, уже вроде я задавал
Я пишу код, который я знаю как работает и что должно происходить. С каких пор оптимизатор должен понимать что творится у меня в голове и что я хочу сделать?
Это моя программа! Я её делаю! И любому пользователю этой программы пофиг что у неё внутри. ЕЁ ЗАДАЧА ВЫПОЛНЯТЬ СВОИ ФУНКЦИИ. А вы мне тут про то что я не должен что-то использовать?
Добавлено спустя 1 минуту 44 секунды:
Более того, большинству программистов пофиг (я думаю в большинстве своём, особенно сейчас, даже ломать не стануть какую-нибудь простенькую программу или игрушку), а нужны лишь входные и выходные данные.
Добавлено спустя 3 минуты 10 секунд:
zub писал(а):тебе про фому ты про ерему. нет в нормально написанной программе многоярусных циклов for которые надо прерывать
мда... товарищ программист... да циклы рвут вдоль и поперёк, а не умеешь рвать их, значит не судьба.
Добавлено спустя 1 минуту 34 секунды:
тут, в первую очередь надо отвечать за себя!zub писал(а):причем первого в 1000 раз больше
А за себя я отвечу, я точно не смогу всё учесть в программе, пока её не протестируют миллион людей.
Добавлено спустя 2 минуты 45 секунд:
Alex2013, забей.
zub, вы заурядный программист, который изучил программирование "вдоль и поперёк"! Вы всё знаете! Все алгоритмы вам известны! Я склоняю пред вами свою голову, Ваше Высочество!


