Имя: Пароль:
IT
Наука
Теорема Бома — Якопини реалистична? или снова про goto
0 MatrosoV AleXXXand_R
 
28.06.11
15:32
1. Использовать можно, но в крайнем случае 46% (42)
2. Да, GOTO - нельзя использовать 38% (35)
3. Другое 9% (8)
4. Лучше использовать, чем чаще, тем лучше 7% (6)
Всего мнений: 91

Теорема Бома — Якопини — утверждение о структурном программировании, согласно которому любой исполняемый алгоритм может быть преобразован к структурированному виду, то есть такому виду, когда ход его выполнения определяется только при помощи трёх структур управления: последовательностей (sequence), ветвлений (selection) и повторов (repetition).

Теорема была сформулирована и доказана итальянскими математиками Коррадо Бомом (англ. Corrado Böhm) и Джузеппе Якопини (Giuseppe Jacopini) в их статье 1966 года[1]. В статье также описывались методы преобразования неструктурированных алгоритмов в структурированные.

Публикация теоремы была толчком к началу дебатов о структурном программировании. Спустя 2 года вышла статья Эдсгера Дейкстры «Go To Statement Considered Harmful»[2], в которой он критиковал использование оператора GOTO и высказывался в пользу улучшения стиля программного кода за счёт использования структур управления и отказа от других инструкций, управляющих ходом алгоритма.

wiki:Теорема_Бома_—_Якопини

А как вы считаете - можно ли обойтись в программировании без GOTO (Перейти)? И считается ли плохим стилем программирования его использование или нет?
5 Grusswelle
 
28.06.11
15:34
(0) За исключением Ассемблера. И то, можно извратиться без меток.

Да, GOTO - нельзя использовать
15 Mort
 
28.06.11
15:37
Использование программистом GOTO означает, что при кодировании, мысленно он управляет программным потоком, а не абстракциями. Короче, я бы такого не взял.

Да, GOTO - нельзя использовать
25 Scooter
 
28.06.11
16:08
я в 1с даже не знаю как это писать

Да, GOTO - нельзя использовать
50 Ахиллес
 
28.06.11
16:23
(38) Убогий программист генерящий невразумительный чересчур сложный код, убогая среда исполнения и убогая утилита. Вот и все оправдания GOTO.

Да, GOTO - нельзя использовать
59 Grusswelle
 
28.06.11
16:25
Использование GoTo - удел маргиналов, невежественной босоты и прочих неучей. Вы уж простите.

Да, GOTO - нельзя использовать
74 Grusswelle
 
28.06.11
16:28
(64) +1. Ну не GoTo же...

Да, GOTO - нельзя использовать
92 Лефмихалыч
 
28.06.11
16:32
ибо даже любой из примеров "оправданного" применения можно переписать без готов и от этого станет только читабельнее

Да, GOTO - нельзя использовать
98 Grusswelle
 
28.06.11
16:34
(87) Не, ну в идеале - возврат должен быть один. Максимум - два, если

Если ... Тогда
   Возврат А
Иначе
   Возврат Б
КонецЕсли;

^^^^^^^^^^^^^^ но не больше. В остальных случаях я лично рекомендовал бы (да и сам так делаю) формировать некую переменную, назовём её "Результат", и в конце функции - один единственный "Ыозврат Результат". И НИКАКИХ GOTO!

Да, GOTO - нельзя использовать
103 Grusswelle
 
28.06.11
16:36
(101) Обращайся! ;-)

Да, GOTO - нельзя использовать
111 Grusswelle
 
28.06.11
16:41
(109) GoTo НЕЛЬЗЯ использовать. НЕЛЬЗЯ. И всё. Это - как плод греха у Адама и Евы. Он - есть, но использовать его НЕЛЬЗЯ.

Да, GOTO - нельзя использовать
122 Grusswelle
 
28.06.11
16:48
(115) Нет никаких комплексов. Это как цианистый калий - он есть, но использовать его нельзя. Это как водородная бомба! GoTo, конечно, может легко решить многое, но те, кто прибегает к его использованию автоматически характеризуют себя не с лучшей стороны. Такое впечатление, что разработчики языков то и дело смеются над нами, не исключая этот оператор из синтаксиса языка.

Да, GOTO - нельзя использовать
123 abitfrosty
 
28.06.11
16:48
Еще ни разу не встречал ситуации, где использование меток было бы необходимостью.

Да, GOTO - нельзя использовать
126 Grusswelle
 
28.06.11
16:50
(124) Он это делал под стволом у виска!

Да, GOTO - нельзя использовать
128 Grusswelle
 
28.06.11
16:52
(127) Потому, что GoTo НЕЛЬЗЯ использовать!

Да, GOTO - нельзя использовать
156 Grusswelle
 
28.06.11
17:05
(148) Это забыли убрать! От "Бейсика" осталось!!! >:-Е

Да, GOTO - нельзя использовать
161 Jolly Roger
 
28.06.11
17:07
б-о-й-а-н...

Да, GOTO - нельзя использовать
192 wt
 
28.06.11
17:57
Всё зависит от школы. Если начинал работать бардачком, то и появляются безусловные переходы. В любой системе можно обойтись без этих переходов.
В чем ценность их отсутствия - это отладка сложных алгоритмов. С goto это просто головная боль.
Опыт: ассемблер, си, дельфи, ещё масса специализированных языков, и конечно же наша платформа.

Да, GOTO - нельзя использовать
218 НП
 
28.06.11
19:20
Использование GOTO определяет стиль мышления программиста.
Уже 40 лет программировать учат без GOTO. Но это - часть правды. А вся правда состоит в том, что там еще есть куча условий, чтобы программа была удобной (для отладки и сопровождения). Например, программные модули должны быть небольшими (максимум, несколько сот операторов). Или: не писать универсальных модулей для обработки различных условий совершенно разнородных объектов.
Учитывая, сто конфигурации 1С совершенно не удовлетворяют требованиям структурного программирования - используют они GOTO или не используют - ничего в корне не меняют.
Я - не использую.

Да, GOTO - нельзя использовать
224 ado
 
28.06.11
19:46
ИМХО, с некоторыми оговорками допустимо использовать только "прервать" и "продолжить", переход по метке необходимо забыть и никогда не вспоминать.

Да, GOTO - нельзя использовать
228 skunk
 
28.06.11
20:40
ну если по сути то jmp еще никому не удалось заменить ... а вот языках высокго уровня гоняться за джампом моветон ...

так что в контексте всего структурно-объектного программирования ... да гото использовать низя

Да, GOTO - нельзя использовать
233 Alsh
 
28.06.11
21:49
10 лет назад использовал, когда совсем не понимал, что делаю.
Последние 10 лет даже не вспоминал.
ИМХО использование GOTO - свидетельство некомпетентности,  вернее, тупости.

Да, GOTO - нельзя использовать
242 reanimator
 
28.06.11
23:02
гадость

Да, GOTO - нельзя использовать
243 Zamestas
 
28.06.11
23:03
Всегда можно обойтись без goto, но некоторым проще воткнуть его, чем отписать "красивый" код.

Да, GOTO - нельзя использовать
248 noprogrammer
 
28.06.11
23:15
1.Да - обойтись можно (и нужно)
2.Да - использование goto плохой(ужасный) стиль программирования

Да, GOTO - нельзя использовать
361 Zixxx
 
29.06.11
13:06
GOTO - задница, если бы так и дальше шло, то появился бы GOBACK, GOJUMP и т.д.

Да, GOTO - нельзя использовать
371 Alexey87
 
29.06.11
14:11
Пригодились, когда только писал на ассемблере...А так, ни разу не было в них нужды.

Да, GOTO - нельзя использовать
377 dragonIMV
 
29.06.11
14:46
(0) GOTO использовался последний раз в турбопаскале, когда изучали в школе тему как раз связанную с метками...сколько лет прошло с тех пор, но метками не пользуюсь...лучше уж условий сделать побольше или еще что нужное, чтобы обойтись без меток....

Да, GOTO - нельзя использовать
378 fisher
 
29.06.11
15:13
Гоуту - это граната в руках обезьян, взрывающая мозг.
Даже в тех редчайших случаях, когда без гоуту получается более громоздкий код, он всё равно читается легче. Потому что такой код имеет единообразно читаемую структуру.
Гоуту имеет сомнительное право на жизнь, как временная заплатка при отсутствии времени на рефакторинг, например.
Там где оно в типовых встречается - вреда от него особого нет, но необходимости тоже. Зато в жизни ТАКОЕ встречаешь, что без полного рефакторинга дорабатывать просто нереально.
Поэтому считаю что лучше бы его вообще не было. Вреда намного больше, чем пользы. Лучше бы на форумах были вопросы "Как реализовать", чем допускать безконтрольное размножение гоуту в дикой природе.

Да, GOTO - нельзя использовать
419 Vetal_978
 
01.07.11
09:08
нет

Да, GOTO - нельзя использовать
423 0xFFFFFF
 
02.07.11
16:26
Поскольку "Использовать можно, но в крайнем случае", поэтому лучше раз и навсегда сказать себе

Да, GOTO - нельзя использовать
431 extrim-style
 
07.07.11
11:17
обойдусь без GOTOв

Да, GOTO - нельзя использовать
447 proger2011
 
07.07.11
13:15
Вирите нет? Всю жизнь обхожусь без меток, прервать и продолжить как учили. Когда ваяю код в мысли даже не приходят варианты с этими опереторами.

Да, GOTO - нельзя использовать
503 ЗлобнийМальчик
 
12.07.11
12:06
мало что ли способов по другому усложнить код

Да, GOTO - нельзя использовать
504 GANR
 
12.07.11
14:01
За каким ???

Да, GOTO - нельзя использовать
517 360i
 
12.07.11
19:02

Да, GOTO - нельзя использовать