ФлеймФорумПрограммирование

Почему не любят goto? (2 стр)

Страницы: 1 2 3 421 Следующая »
#15
22:37, 19 окт 2011

LuckyMan
> Почему во многих учебниках написано, что goto это такая гадость, никогда не
> используйте?
Потому что много лет назад один антисоветчик по имени Дейкстра, слывший авторитетом, ляпнул глупость, а её подхватили и до сих пор носят, как писаную торбу. Быдлокодерский мейнстрим уже давным-давно скатился в автоматное программирование - такое СГ, с которым по убойности и нечитаемости не сравнится никакое goto. Однако же, goto продолжают травить, а автоматное программирование отчего-то никого не смущает и даже почитается за высший пейлотаж. (Кстати, весьма показательно покаяние на странице обсуждениия некоего Кузнецова Бэ Пэ, бывшего адептом данной "парадигмы" на протяжении 30 лет, и токмо лишь недавно прозревшего - он, как человек учёный, сумел сформулировать внятными словами тот дзен, которые я, простой сермяжный быдлокодер, давным-давно постиг через грабли интуитивно.) Наглядный пример того, как дурные авторитеты подменяют и подавляют в индустрии разум и осознание.

#16
22:51, 19 окт 2011

Все за исключением обработки ошибок на C обычно можно переписать без goto и код не раздуется и не станем менее читаемым.

#17
22:54, 19 окт 2011

Sbtrn. Devil
> Быдлокодерский мейнстрим уже давным-давно скатился в автоматное программирование

Кстати, там очень удобно использовать goto.

#18
22:56, 19 окт 2011

Sbtrn. Devil
> Быдлокодерский мейнстрим уже давным-давно скатился в автоматное
> программирование - такое СГ, с которым по убойности и нечитаемости не сравнится
> никакое goto.

но-но-но-но-но !
КА не трогай, пожалуйста :)

#19
23:07, 19 окт 2011

Вот программа написанная без гото. Всё просто логично и понятно, один слой логики
А вот если начать использовать гото, в какой кошмар может превратиться понимание работы и отладка этого гвна

#20
23:41, 19 окт 2011

На заре появления C++ некоторые горячие головы решили, что настало время избавиться от препроцессора. В каждом втором учебнике по C++ десятилеьней давности так и было написано -  "не используйте макросы, пользуйтесь константами и шаблонами". И многие программисты, начинавшие в те времена, пишут макросы скрипя зубами, ибо постоянно испытывают ощущение, что макросы - это что-то плохое и недостойное для ООП, но они, сцуко, удобные :)

#21
0:04, 20 окт 2011

Barabus
Макросы - источник ошибок, поэтому и не рекомендуют.
Лично я макросы люблю.

#22
0:07, 20 окт 2011

Я практически не использую goto, не потому что так написано в учебнике или препод в универе сказал. Я не использую его, потому что в большинстве случаев его использовать нет необходимости, и только примерно из 10000 строк кода бывает я вижу случай когда goto это решение всех проблем в короткие сроки, без goto пришлось бы переписывать всю функцию или больше.
Думаю в книжках написано, что он зло по одной причине, проще так написать и все. Если использовать goto часто, то страдает читаемость и отладка. Но есть небольшие плюсы, да все эти случаи решаются и без goto переписыванием кода. Вот поэтому в книжках и пишут что зло.
Самое главное решить это самому, зло или не зло, а что пишут другие, это всего лишь их мнение, Дейкстра он, Вася Пупкин, не имеет значения.

#23
0:35, 20 окт 2011

Последний раз использовал goto в бейсике для БК0010

#24
1:11, 20 окт 2011

Den Zurin
> Кстати, там очень удобно использовать goto.
Неа. Там, как правило, состояния растасканы по разным функциям.

kvakvs
> Вот программа написанная без гото. Всё просто логично и понятно, один слой
> логики
> А вот если начать использовать гото, в какой кошмар может превратиться
> понимание работы и отладка этого гвна
Начнём с того, что аналогия вопиюще неверная. На картинке - структура элементов, разнесённых в пространстве, а алгоритм - структура элементов, разнесённых во времени.
Ну и во-вторых, если мы изобразим алгоритм в виде блок-схемы (что ты, очевидно, и подразумевал), то - сюрприз! - там нет никаких while, goto и т. п. Там будут просто тупо стрелочки перехода из состояний в состояние. В какую языковую конструкцию они воплотятся - зависит от предпочтений быдлокодера, коему поручат имплементацию алгоритма. В формировании того, что ты нарисовал в качестве "кошмара", использование той или иной конструкции, таким образом, роли решительно не играет, ибо они вторичны. А единственное, что играет роль - вид алгоритма. То бишь, если алгоритм кривой и фейспальмовый, то хоть используй для его имплементации goto, хоть не используй - это не поможет ни в плане читаемости, ни в плане отладки, ни в каком бы то ни было ином плане. А если он кошерен и орхетектурен - опять-таки, хоть используй goto, хоть не используй, он останется читаемым и отлаживаемым. (При условии, конечно, что злобный буратино не старается умышленно усложнить себе жизнь заведомо героическими путями - но тут, опять же, к услугам злобного буратины масса способов героизма, на фоне которых goto далеко не в первых рядах. Например: развёртка рекурсивной программы в итеративную, автоматное программирование, эксклюзивное использование while...)

#25
1:16, 20 окт 2011

Sbtrn. Devil
> у и во-вторых, если мы изобразим алгоритм в виде блок-схемы

...то мы увидим что чем меньше в алгоритме пересечений линий, тем проще его понять. И алгоритм без гото - как раз не содержит пересечений. А вот готами легко сделать непланарную хрень, которую вообще не разобрать.

#26
1:19, 20 окт 2011

slava_mib
> иногда удобнее написать 1 goto чем извращаться пытаясь обойтись без него.

Сколько писал на це++, но так и не мог вспомнить есть там goto или нет...

#27
2:59, 20 окт 2011

Den Zurin
> Обработка исключений в Си. Без goto можно попытаться сделать, но получится
> некрасиво.
setjmp/longump в помощь

#28
3:08, 20 окт 2011

CoffeeCoder
> в некоторых языках (C например) без goto не обойтись.
Еще в 80-х доказали, что алгоритм любой сложности можно реализовать без гоу ту...

#29
4:27, 20 окт 2011

Почему ГОТО плохо? Потому что получим - спагетти-код - http://ru.wikipedia.org/wiki/Спагетти-код

А вот за упоминание "чем в 10 циклов все запихивать!" Надо бить по головам. Смысл не в том что ГОТО плохо или хорошо. Проблема в том что программист пишет эти самые десять циклов, а это ошибка. То есть если не использовать ГОТО - программист сто раз подумает прежде чем написать конструкции из 3 и более циклов, а если он знает что у него всегда есть магическое зелье GOTO, то он просто забьет и будет писать те самые десять-сто for - читаемость и логика убиваются полностью.

Страницы: 1 2 3 421 Следующая »
ФлеймФорумПрограммирование