|
Платежеспособный зверь
8966 / 4389 / 1655
Регистрация: 28.10.2009
Сообщений: 11,647
|
|
Оператор GOTO: за и против20.11.2011, 16:38. Показов 16135. Ответов 146
Метки нет (Все метки)
Люди, по ходу, газет не читают:
Оператор GOTO в языках высокого уровня является объектом критики, поскольку чрезмерное его применение приводит к созданию нечитаемого «спагетти-кода». Впервые эта точка зрения была отражена в статье Эдсгера Дейкстры «Доводы против оператора GOTO», который заметил, что качество программного кода обратно пропорционально количеству операторов GOTO в нём. Статья приобрела широкую известность как среди теоретиков, так и среди практиков программирования, в результате чего взгляды на использование оператора GOTO были существенно пересмотрены. В своей следующей работе Дейкстра обосновал тот факт, что для кода без GOTO намного легче проверить формальную корректность. Код с GOTO трудно форматировать, так как он может нарушать иерархичность выполнения (то есть парадигму структурного программирования), и потому отступы, призванные отображать структуру программы, не всегда могут быть выставлены правильно. GOTO также аннулирует многие возможности компилятора по оптимизации управляющих структур Доводы против оператора GOTO оказались столь серьёзны, что в структурном программировании его стали рассматривать как крайне нежелательный Начало тут
0
|
|
| 20.11.2011, 16:38 | |
|
Ответы с готовыми решениями:
146
Оператор GOTO и его метки Goto - за и против Оператор goto |
|
Кормпилятор
|
||
| 28.01.2017, 13:04 | ||
|
Конечно допускаю, что где-то(достаточно редко) вложенные циклы в количестве 100500 может быть и нужны, но подкорка головного мозга понимает, что за прогу, которая прошибает бошкой стену и вешает проц намертво, никто ничего не заплатит. В подавляющем большинстве недетерминированных задач использовать полный перебор - себе дороже.
0
|
||
| 28.01.2017, 13:42 | |
|
Quiet Snow
Мне кажется, что вы не до оцениваете применение кратных циклов в большом количестве для практики. Обычно и не требуется ТОТАЛЬНЫЙ ПЕРЕБОР. А требуется строго определенное выполнение самого внутреннего цикла (там может быть и условие). Иными словами такие программы работают достаточно быстро и в ряде случаев эффективно. Им помогает GOTO.
0
|
|
|
Кормпилятор
|
||
| 28.01.2017, 13:52 | ||
|
нужны ваши программы, какие программы и как их можно применить для чего-то полезного...
0
|
||
|
|
||
| 28.01.2017, 13:56 | ||
|
0
|
||
|
Кормпилятор
|
||
| 28.01.2017, 15:07 | ||
|
гигом памяти, да и даже старее компы не списывают. Но даже если и седьмой кор, это не повод поддерживать подход переборов и тотальный подход многопоточности. Нужно рассчитывать на то, что прогу могут запустить на самом убогом оборудовании. Про многоядерность говорил ещё с 2004 года - что оно тупиково, сейчас это отчётливо видно(12 ядер да сваяли, а частота какая? И как там будет работать одноядерная прога... знамо как, как кусок какахи...), а единственное где применяется эта самая многоядерность, так это развесить программы по ядрам, ну или в видеокодеках, то что можно дёшево распараллелить. В итоге люди предпочитают брать поменьше ядер и побольше частоту, да ещё и разгоняют свои бедные процессорики, сдавая их через два-три года в БУ, да гонимое железо нормально подолгу не работает. Во-первых современные компы недалеко ушли по сравнению с теми же пеньками прескотами в плане одноядерных задач и если бы не SIMD и толстые кеши, то разница была бы не сильно очевидная, во-вторых ресурсы всегда сильно ограничены, а пользователь всегда хочет комфорта, удобства и чтобы не было подвисаний и фризов, поэтому более интеллектуальные подходы как правило работают лучше. На самом деле многоядерность это штука довольно нестабильная, в плане своей концепции, Далеко не каждую архитектуру можно нормально заточить с учётом всех факторов. К тому же она значительно усложняет архитектуру софта. Приведу пример, сижу, допустим поигрываю на гитарке, повесил VSTHost на одно ядро дал ему приоритет, вдруг с бодуна касперыч или любой другой софт резко начинает конкурентно отбирать ЦП у VST хоста, тот начинает хрипеть, т.к. сбивается вся синхронизация (там дабл буфер флипующийся аппаратно с нотификацией) и что мне это должно доставить наслаждение, рестартать движок каждый раз когда, либо скайп что-то пукнет, либо анвирь полезет сканировать или обновляться(а его на ядра другие нельзя перевесить). Также с другим софтом, под XP и семёркой(в меньшей степени но тоже есть) чувствуется когда первое ядро забито под завязку, начинает останавливаться вся система. Загружаешь больше 40% на всех ядрах, реалтайма уже не видать(на далеко не слабом оборудовании при грамотном распределении софта по ядрам), проги начинают тупить, фризить, заикаться, потому что есть такой фактор как шина данных\команд и она не резиновая (напомню что в любой многопоточной системе всё это добро(не заточенное, т.е. код который называют небезопасным, а его валом) по итогу хардварно сводится в последовательный процесс, т.к. железо не может просто взять и забить на свои функции, если 4 потока захотят одновременно без специальных средств синхронизации получить доступ к одному участку памяти, шина данных окажется в затруднительном положении, но хардвар обязан будет такую ситуацию обработать исходя из распределения возможностей своих конвейеров, силу боттлнека на 12 ядерном компе даже боюсь представить, там шина конечно толстенная, но боюсь она этого не стерпит... Самый пожалуй дерьмовый фактор - когда программа не может знать сколько ресурсов есть в системе, т.к. на них постоянно влияют другие приложения. В таких условиях прога должна быть либо адски заточена потреблять с каждого ядра по чуть чуть и при этом насытиться, либо исповедовать старую проверенную временем идеологию - быть оптимизированной настолько насколько это возможно под одно ядро, но при определённых процессах занимать и другие ядра. Конечно этим всё не ограничивается, сейчас люди ковыряют и мелкозернистое распараллеливание, может это в будущем и будет той целевой нишей многоядерности вкупе со всякими OpenCL и CUDA, но сейчас многоядерность слишком неэффективна, а кодеры слишком плотно разожрались увидев гигабайты холёной оперативы.
0
|
||
|
34 / 40 / 3
Регистрация: 24.11.2016
Сообщений: 159
|
|
| 28.01.2017, 19:32 | |
|
Как без гото переходить от одного блока к другому блоку?У меня там программа готовая весит в одной из 2 моих тем, откройте её и перепишите для меня пожалуйста без гото.Я ясно себе всё представляю и на такую простую тему разговаривать не хочу.
![]() ![]() Добавлено через 24 минуты Простейший способ создавать блоки использовать SLEEP 1000 чтобы сразу не пролетело без нажатия вами кнопки.
0
|
|
|
34 / 40 / 3
Регистрация: 24.11.2016
Сообщений: 159
|
|
| 28.01.2017, 19:46 | |
|
Впереди идущие данные должны быть в программе уничтожены.
0
|
|
|
Кормпилятор
|
||||
| 29.01.2017, 01:43 | ||||
|
Какие блоки через SLEEP? Какие "Впереди идущие данные"?
Потому что точек входа может быть много, компилятору нужна однозначность. Поэтому для этой задачи лучше использовать логику на защёлках. Внутри процедур переходы допустимы, но в почти 100% случаев как раз внутри хорошо оформленных процедур они и не нужны. Исключение - это обработчики ошибок.
0
|
||||
| 29.01.2017, 13:47 | ||||||
|
Реальная программа с оператором GOTO
конечно я могу написать и без оператора GOTO, но кода будет несколько больше (данная программа вычисляет и распечатывает на экран простые числа от 5 до 97) Это тот случай где GOTO делает программу проще и яснее!!
0
|
||||||
|
Платежеспособный зверь
8966 / 4389 / 1655
Регистрация: 28.10.2009
Сообщений: 11,647
|
|||||||
| 29.01.2017, 16:53 [ТС] | |||||||
0
|
|||||||
|
34 / 40 / 3
Регистрация: 24.11.2016
Сообщений: 159
|
|
| 29.01.2017, 17:01 | |
|
В математике бывает плюс и минус не использовать гото это всё равно что из математики удалить минус.Процедуры,функции,подпрограммы увеличивают делая вставку в программу это как в математике знак плюс а гото выключение части программы это как знак минус.
0
|
|
|
Платежеспособный зверь
8966 / 4389 / 1655
Регистрация: 28.10.2009
Сообщений: 11,647
|
||
| 29.01.2017, 23:20 [ТС] | ||
|
0
|
||
| 30.01.2017, 09:45 | |
|
Мне кажется, что можно подвести некоторые итоги.
Итак, я представляю лагерь сторонников GOTO. ОБВИНЕНИЕ: GOTO усложняет понимание программы 1. ОДИН оператор GOTO не превратит программу в головоломку, так что Один GOTO для программы вполне приемлем. 2. Оператор GOTO целесообразно применять для выхода из сложных конструкций. 3. Оператор GOTO должен быть выше своей метки 4. Метка должна быть чётко видна и занимать целую строку примечание если соблюдать эти правила, то GOTO внесёт Смысл в Вашу бессмысленную жизнь!! (впрочем есть люди, у которых аллергия на GOTO и выше сказанное к ним не относится)
1
|
|
|
Платежеспособный зверь
8966 / 4389 / 1655
Регистрация: 28.10.2009
Сообщений: 11,647
|
||||
| 30.01.2017, 10:01 [ТС] | ||||
|
PS Лет 20 я программировал на Бейсике и написал за свою жизнь столько операторов GOTO, сколько Вам во сне присниться не может. Это трудности роста. Когда Вы изучите какой-нибудь нормальный язык, Вы забудете GOTO навсегда и будете (как и я) с улыбкой вспоминать свои доводы в его защиту.
0
|
||||
|
Модератор
|
||||||||||||
| 30.01.2017, 10:31 | ||||||||||||
2
|
||||||||||||
|
|
|
| 30.01.2017, 12:30 | |
|
1
|
|
| 30.01.2017, 12:30 | |
|
Оператор goto
оператор GoTo Безусловный оператор GoTo Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|