Заблокирован
|
||||||
1 | ||||||
Правда ли, что "Goto: за и против" от Дейкстры - явная и сознательная монополизация рынка?06.05.2023, 19:06. Показов 603. Ответов 8
Метки нет (Все метки)
Ведь с помощью гото программировать мог каждый школьник, ДА нечитабельно и ДА не программу управления полетом на Марс, а простые задачи, но де-факто МОГ! А пусть тот же школьник 1-2 класса попробует написать хотябы самый простой самый классический хафман, без арифметиков и прочей хрени - следуя высоким идеалам Структурного Программирования... да уж...
Только посмотрите на этот прекрасный код (на абстрактном ЯП т.к. первый конкретный пока только изучаю): Код
if decoding=yes goto decoding int[256] frequency int counter=1 l1: if counter>len(file) goto exit1 ++frequency[file[counter]] //Волшебное сочетание квадратных скобок! ++counter goto l1 exit1: counter=1 l2: if counter>256 goto exit2 if frequency[counter]=0 frequency[counter]=99999999999999 ++counter goto l2 exit2: list<char>[256] codes list<tree<char>> trees=[1, 256] l3: if len(trees)=1 goto exit3 add(codes[min(trees)], 0) add(codes[min2(trees)], 1) add(trees, createtree(min(trees), min2(trees))) remove(trees, min(trees) && min2(trees)) goto l3 exit3: counter=1 l4: if counter>len(file) goto exit101 add(output, codes[file[counter]]) ++counter goto l4 decoding: //Тут только не придумал что написать, моих знаний не хватает... exit101: close(file) close(output) exit(0)
И я ж НЕ ГОВОРЮ, что надо применять гото безрассудно. Например, внутрь цикла или в другую процедуру - это безрассудно. Но ни один адекватный компилятор и не позволит этого сделать. А насчет "на метку управление может прийти черт знает откуда, хоть из соседнего файла" - в любой нормальной иде есть волшебная кнопочка "Ссылки сюда", позволяющая забыть об этой надуманной "проблеме" до скончания веков. И еще. Я вовсе не против обходиться без гото. Но я против ДОГМ! Что "это нельзя, и все", без объяснения причин или по надуманным причинам. Если завтра скажут "нельзя применять процедуры" по надуманной причине, я тоже буду против. Не потому, что я фанат процедур, а потому, что я ненавижу догмы.
0
|
06.05.2023, 19:06 | |
Ответы с готовыми решениями:
8
Goto - за и против Goto - за и против (2) Оператор GOTO: за и против Конечно-разностные схемы, Лакса явная и Мак-Кормака явная на C++ Метод конечных разностей. Явная и не явная схема |
фрилансер
5520 / 5112 / 1051
Регистрация: 11.10.2019
Сообщений: 13,396
|
|
06.05.2023, 20:22 | 2 |
Novichok888, без goto конечно же лучше, тут не о чем рассуждать.
другое дело, что приведённый код на C++ тоже далёк от идеала. Написан чайником
0
|
Заблокирован
|
|
07.05.2023, 09:02 [ТС] | 3 |
Что значит "лучше"? Для следующего догмам наверное "лучше". Но я спросил не какой "лучше", а какой КОРОЧЕ и какой ЧИТАБЕЛЬНЕЕ. Может кто нить ответить аргументировано?
0
|
Модератор
3055 / 2197 / 459
Регистрация: 26.03.2015
Сообщений: 8,482
|
|
07.05.2023, 12:56 | 4 |
0
|
фрилансер
5520 / 5112 / 1051
Регистрация: 11.10.2019
Сообщений: 13,396
|
|
07.05.2023, 14:38 | 5 |
0
|
Модератор
3055 / 2197 / 459
Регистрация: 26.03.2015
Сообщений: 8,482
|
|
07.05.2023, 22:53 | 6 |
Есть мнение, что каждая функция должна отображать одну идею. Поэтому (в рамках этой идеи) размер функции редко превышает 4 строки.
0
|
08.05.2023, 16:16 | 7 |
Коды отличаются не только наличием или отсутствием Goto, но и многим другим, включая разные ЯП. Сравнение некорректно.
Напишите два полностью идентичных кода на одном и том же ЯП, за исключением того что в первом будет Goto, а во втором нет. Тогда и обсудим эту тему.
1
|
08.05.2023, 16:19 | 8 |
0
|
646 / 522 / 72
Регистрация: 20.09.2014
Сообщений: 3,367
|
|
08.05.2023, 16:58 | 9 |
Я проанализовал код. Вывод: вместо goto следовало использовать четыре цикла while и один условный переход if-else. Этот код линейный, не годится для сравнения структурного и императивного подхода.
0
|
08.05.2023, 16:58 | |
08.05.2023, 16:58 | |
Помогаю со студенческими работами здесь
9
Найти номер рынка, где цена земляники минимальна, если человек не хочет идти до рынка, удаленного от дома на расстояние большее, чем R Ответ в виде "правда" или "ложь" на "а правда ли что" с определенным условие №2 Ответ в виде "правда" или "ложь" на "а правда ли что" с определенным условие №1 Что являются функциями рынка Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |