refresh cnucok 7bit.forum нacлeдuть
  РегистрацияПользователиАдминистраторы и модераторыПоискЧасто задаваемые вопросы На главную

7bit.forum » Техника » Обмен опытом » Куда приводит GOTO » Привет, незнакомец [войти|регистрация]
Страницы (2): [1] 2 следующая » Распечатать страницу
Понравилась тема? Поделитесь с друзьями!
Автор
Сообщение « Предыдущая тема | Следующая тема »
Юрик
Юрик - мужик
Его Величество Администратор




Группа: Администраторы

Дата регистрации: 21.06.2004
Сообщения: 3340
Кто?: Выпускник

Репутация пользователя :
+3212 -428 = 2784
Рейтинг сообщения:
+0 -0 = 0
балл   балл

МОИ ФОТКИ!


Куда приводит GOTO На верх страницы

Наткнулся на стёбную статью Big Grin

С детства нам говорили, что в программах использовать goto нельзя. Это было табу. Долгие годы я не мог его переступить. Некоторые особо рьяные ценители читаемости текста желали также запретить условные переходы, оставив только циклы, но к счастью их призывы до меня не дошли. Однако goto у меня непременно ассоциировался с плохо написаным кодом.

Поработав побольше, я пришел к выводу, что хороший текст должен быть таким:

1. Продолжать работать в любом случае, не падать при несрабатывании каких-либо функций.
2. Отслеживать все ошибки исполнения, по возможности их обходить и записывать толковый файл лога, по которому можно диагностировать проблему.
3. Быть компактным и легким для восприятия. Кроме того, хороший код содержит минимум неявно выполняемых операций.
4. Освобождать все занятые ресурсы и размещенную память в случае неудачи.

продолжение

__________________
Xριστος ανεστη εκ νεκρων
Θανατω θανατον πατησας.
Και τοις εν τοις μνημασι
Ζωην χαρισαμενος.

27.10.2005 19:05 Юрик оффлайн Искать сообщения : Юрик Добавить Юрик в адресную книгу
Кошак
Кошак - мужик
Лорд Гигабайт I-степени




Группа: Пользователи Плюс
Проголосуйте за меня!

Дата регистрации: 16.10.2005
Сообщения: 1862
Кто?: 7bit.flooder, группа 0х44с

Репутация пользователя :
+813 -470 = 343
Рейтинг сообщения:
+0 -0 = 0
балл   балл

МОИ ФОТКИ!

Предупреждений: 1


На верх страницы

ну в принципе автов убедителен... но как-то у меня тоже в крови "GOTO плохо" Tongue

__________________
Смех без причины - признак хорошего секса.

Банан великий МОЗГ!!! molitva

27.10.2005 20:21 Кошак оффлайн Искать сообщения : Кошак
Imm
Imm - мужик
Легендарный студент ИТМО




Группа: VIP-Пользователи

Дата регистрации: 22.12.2003
Сообщения: 2030
Кто?: Студент СПбГУ (физфак)

Репутация пользователя :
+877 -379 = 498
Рейтинг сообщения:
+0 -0 = 0
балл   балл


На верх страницы

Ссылка не открывается.
цитата:
Кошак пишет
но как-то у меня тоже в крови "GOTO плохо" Tongue
Эх... Басика на вас нет. Smile

__________________
Серьёзное лицо это ещё не признак ума, все глупости на Земле совершаются именно с этим выражением лица... Улыбайтесь, господа, улыбайтесь! ...
(из к/ф "Тот самый Мюнхгаузен". сценарий Г. Горина)

27.10.2005 21:18 Imm оффлайн Послать письмо Imm Искать сообщения : Imm Добавить Imm в адресную книгу
Stan F
Stan F - мужик
Его Величество Администратор


Группа: Администраторы

Дата регистрации: 14.11.2003
Сообщения: 5148
Кто?: ФЮРЕР

Репутация пользователя :
+1897 -840 = 1057
Рейтинг сообщения:
+0 -0 = 0
балл   балл


На верх страницы

плохо и все, так уж нас воспитали. не припомню правда, что об этом Страуструп пишет, но не припомню ни одного его примера, где бы ЭТО было.
мне так кажется, что применение goto свидетельствует об отсутствии у автора кода умения продумывать и логически мыслить. Либо умения программировать.
в конце концов - это ж не асм, где постоянно надо смотреть, что и куда побежало по адресу.

__________________

Последний рассвет
Тонкая нить и
Холодная сталь
Поможет забыть мне
Сотрёт глубину
Исчезнет печаль
Прольётся внутри
Моя мёртвая кровь
Развеет твой крик

28.10.2005 00:07 Stan F оффлайн Сайт Stan F Искать сообщения : Stan F Добавить Stan F в адресную книгу
AssaultRifle
AssaultRifle - мужик
Лорд Гигабайт I-степени




Группа: VIP-Пользователи

Дата регистрации: 07.06.2005
Сообщения: 1671
Кто?: 7bit.штурмоствол

Репутация пользователя :
+1039 -687 = 352
Рейтинг сообщения:
+1 -0 = 1
балл   балл

МОИ ФОТКИ!


На верх страницы

цитата:
Белослав пишет
Ссылка не открывается.
цитата:
Кошак пишет
но как-то у меня тоже в крови "GOTO плохо" Tongue
Эх... Басика на вас нет. Smile

Читаиш маи мысли!!!

__________________
Si vis pacem, para bellum!

29.10.2005 17:48 AssaultRifle оффлайн Послать письмо AssaultRifle Сайт AssaultRifle Искать сообщения : AssaultRifle Добавить AssaultRifle в адресную книгу
elk
elk - мужик
Его Величество Администратор




Группа: Администраторы

Дата регистрации: 07.11.2003
Сообщения: 1094
Кто?: Выпускник

Репутация пользователя :
+339 -175 = 164
Рейтинг сообщения:
+0 -0 = 0
балл   балл


RE: Куда приводит GOTO На верх страницы

Да ГоуТу всегда научишься юзать. Всё правильно в универе учат. Научился без ГоуТу - вот тогда и пиши, как хочешь. А если сразу юзаешь ГоуТу и по-другому не умеешь - вот это не гуд.

__________________
Гриз - ГЫГАРИН! (спроси его, почему) Big Grin

31.10.2005 09:48 elk оффлайн Послать письмо elk Сайт elk Искать сообщения : elk Добавить elk в адресную книгу AIM : none YIM: none
honher
honher - мужик
Барон Килобайт II-степени




Группа: Пользователи

Дата регистрации: 15.05.2004
Сообщения: 159
Кто?: Студент

Репутация пользователя :
+8 -2 = 6
Рейтинг сообщения:
+1 -0 = 1
балл   балл


На верх страницы

Имхо, само слово GOTO уже приелось как что то плхое. Думаю, даже если кто то и не знает что это такое, то знает, что его лучше не использовать. Опять же, есть ситуации когда код с GOTO выглядит намного более читабельнее..И кстати если кому то не нравится слово GOTO можно наполовину смоделировать эту конструкцию, циклом do while; прыгать правда можно будет только вниз.

...
goto label;
....
label:....



do{
...
break;
...
}while (0);
//прыгаем сюда

31.10.2005 10:39 honher оффлайн Послать письмо honher Искать сообщения : honher
elk
elk - мужик
Его Величество Администратор




Группа: Администраторы

Дата регистрации: 07.11.2003
Сообщения: 1094
Кто?: Выпускник

Репутация пользователя :
+339 -175 = 164
Рейтинг сообщения:
+0 -0 = 0
балл   балл


На верх страницы

Смоделировать ГоуТу можно чем угодно...

__________________
Гриз - ГЫГАРИН! (спроси его, почему) Big Grin

31.10.2005 11:41 elk оффлайн Послать письмо elk Сайт elk Искать сообщения : elk Добавить elk в адресную книгу AIM : none YIM: none
Pashix
Pashix - мужик
Сэр Байт I-степени


Группа: Пользователи

Дата регистрации: 20.03.2005
Сообщения: 94
Кто?: Выпускник

Репутация пользователя :
+10 -2 = 8
Рейтинг сообщения:
+0 -0 = 0
балл   балл


На верх страницы

На самом деле в некоторых ситуациях делать прогу с goto на много проще, чем с циклами. С другой стороны, читабельность кода ухудшается.

Был у меня всего 1 случай в жизни, когда я использовал goto: нужно было в программе установки вернуться на определенный шаг (назад). Можно было сделать функции для каждого шага (либо одну функцию, принимающую номер шага в параметре), но я их не использовал, т.к. очень торопился =)

В принципе, без goto легко можно обойтись путем использования (в C/C++): for, while, do/while, break, continue, ну, и ессесно, операторов условного перехода (if/else, switch/case, "?"). Так и советуют

31.10.2005 13:31 Pashix оффлайн Послать письмо Pashix Искать сообщения : Pashix
PahanDoS
PahanDoS - мужик
Лорд Гигабайт II-степени




Группа: VIP-Пользователи

Дата регистрации: 18.08.2005
Сообщения: 1229
Кто?: Студент, группа 3146

Репутация пользователя :
+910 -688 = 222
Рейтинг сообщения:
+0 -0 = 0
балл   балл

МОИ ФОТКИ!


На верх страницы

Скажем так: goto использовать можно, но только в крайних случаях и не более одного/двух раз на код. Прорамма целиком построенная на goto абсолютно не читабельна.

__________________
Не там глубина мира и его тайн, где облачно и чёрно, глубина в прозрачно-весёлом

31.10.2005 20:35 PahanDoS оффлайн Послать письмо PahanDoS Искать сообщения : PahanDoS Добавить PahanDoS в адресную книгу
Кошак
Кошак - мужик
Лорд Гигабайт I-степени




Группа: Пользователи Плюс
Проголосуйте за меня!

Дата регистрации: 16.10.2005
Сообщения: 1862
Кто?: 7bit.flooder, группа 0х44с

Репутация пользователя :
+813 -470 = 343
Рейтинг сообщения:
+0 -0 = 0
балл   балл

МОИ ФОТКИ!

Предупреждений: 1


На верх страницы

читабельность мб и падает, а так иногда с GOTO код можно существенно уменьшить ИМХО и оптимизировать для процессора Big Grin и это я понял после сдачи нескольких лаб по информатике Tongue

__________________
Смех без причины - признак хорошего секса.

Банан великий МОЗГ!!! molitva

31.10.2005 20:38 Кошак оффлайн Искать сообщения : Кошак
Shan
Shan - мужик
Герцог Мегабайт I-степени




Группа: Пользователи

Дата регистрации: 11.10.2005
Сообщения: 981
Кто?: Студент, группа 2312

Репутация пользователя :
+762 -407 = 355
Рейтинг сообщения:
+0 -0 = 0
балл   балл

Предупреждений: 4


На верх страницы

Red Face
короче, берём action script - и не паримся: обновления и циклы завязаны на частоту фреймов

я конечно молчу про остальные свойства AS, которые можно описать так:
ass

31.10.2005 21:17 Shan оффлайн Послать письмо Shan Искать сообщения : Shan
Кошак
Кошак - мужик
Лорд Гигабайт I-степени




Группа: Пользователи Плюс
Проголосуйте за меня!

Дата регистрации: 16.10.2005
Сообщения: 1862
Кто?: 7bit.flooder, группа 0х44с

Репутация пользователя :
+813 -470 = 343
Рейтинг сообщения:
+0 -0 = 0
балл   балл

МОИ ФОТКИ!

Предупреждений: 1


На верх страницы

orator avtomat ass

/me преЦЦа

__________________
Смех без причины - признак хорошего секса.

Банан великий МОЗГ!!! molitva

31.10.2005 21:19 Кошак оффлайн Искать сообщения : Кошак
PahanDoS
PahanDoS - мужик
Лорд Гигабайт II-степени




Группа: VIP-Пользователи

Дата регистрации: 18.08.2005
Сообщения: 1229
Кто?: Студент, группа 3146

Репутация пользователя :
+910 -688 = 222
Рейтинг сообщения:
+1 -0 = 1
балл   балл

МОИ ФОТКИ!


На верх страницы

цитата:
Кошак пишет
читабельность мб и падает, а так иногда с GOTO код можно существенно уменьшить ИМХО и оптимизировать для процессора Big Grin и это я понял после сдачи нескольких лаб по информатике Tongue

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

__________________
Не там глубина мира и его тайн, где облачно и чёрно, глубина в прозрачно-весёлом

01.11.2005 18:57 PahanDoS оффлайн Послать письмо PahanDoS Искать сообщения : PahanDoS Добавить PahanDoS в адресную книгу
elk
elk - мужик
Его Величество Администратор




Группа: Администраторы

Дата регистрации: 07.11.2003
Сообщения: 1094
Кто?: Выпускник

Репутация пользователя :
+339 -175 = 164
Рейтинг сообщения:
+0 -0 = 0
балл   балл


На верх страницы

цитата:
PahanDoS пишет
цитата:
Кошак пишет
читабельность мб и падает, а так иногда с GOTO код можно существенно уменьшить ИМХО и оптимизировать для процессора Big Grin и это я понял после сдачи нескольких лаб по информатике Tongue

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

Никто не спорит, но утверждение Кошака тоже верно.

__________________
Гриз - ГЫГАРИН! (спроси его, почему) Big Grin

01.11.2005 19:00 elk оффлайн Послать письмо elk Сайт elk Искать сообщения : elk Добавить elk в адресную книгу AIM : none YIM: none
AssaultRifle
AssaultRifle - мужик
Лорд Гигабайт I-степени




Группа: VIP-Пользователи

Дата регистрации: 07.06.2005
Сообщения: 1671
Кто?: 7bit.штурмоствол

Репутация пользователя :
+1039 -687 = 352
Рейтинг сообщения:
+0 -0 = 0
балл   балл

МОИ ФОТКИ!


На верх страницы

цитата:
PahanDoS пишет
Скажем так: goto использовать можно, но только в крайних случаях и не более одного/двух раз на код. Прорамма целиком построенная на goto абсолютно не читабельна.

Вапсче ни панимаю, чо они на готу взъелись так! Это всё равно, что в асме jmp запретить юзать - всё лупами молотить haha
Сиравно в машинном коде фсё адинакава будит. А как программеру проще свой код воспринимать - пусть так и пишет, а что другим ни панятна - так эта даже харашо (враг-то не дремлет Wink )

__________________
Si vis pacem, para bellum!

02.11.2005 01:01 AssaultRifle оффлайн Послать письмо AssaultRifle Сайт AssaultRifle Искать сообщения : AssaultRifle Добавить AssaultRifle в адресную книгу
Кошак
Кошак - мужик
Лорд Гигабайт I-степени




Группа: Пользователи Плюс
Проголосуйте за меня!

Дата регистрации: 16.10.2005
Сообщения: 1862
Кто?: 7bit.flooder, группа 0х44с

Репутация пользователя :
+813 -470 = 343
Рейтинг сообщения:
+0 -0 = 0
балл   балл

МОИ ФОТКИ!

Предупреждений: 1


На верх страницы

В машинном коде, если ошибаюсь поправьте, реализация циклов описывается более объемно, когда как "гота" и есть одна команда

__________________
Смех без причины - признак хорошего секса.

Банан великий МОЗГ!!! molitva

02.11.2005 01:06 Кошак оффлайн Искать сообщения : Кошак
Stan F
Stan F - мужик
Его Величество Администратор


Группа: Администраторы

Дата регистрации: 14.11.2003
Сообщения: 5148
Кто?: ФЮРЕР

Репутация пользователя :
+1897 -840 = 1057
Рейтинг сообщения:
+0 -0 = 0
балл   балл


На верх страницы

Рассол, и все же не сравнивай попу с пальцем. Асмовские циклы и высокоуровневые - разные вещи. Кто знает, как код интерпретируется в машинный язык.. Подозреваю, что в некоторых случаях именно jmp.

__________________

Последний рассвет
Тонкая нить и
Холодная сталь
Поможет забыть мне
Сотрёт глубину
Исчезнет печаль
Прольётся внутри
Моя мёртвая кровь
Развеет твой крик

02.11.2005 01:16 Stan F оффлайн Сайт Stan F Искать сообщения : Stan F Добавить Stan F в адресную книгу
AssaultRifle
AssaultRifle - мужик
Лорд Гигабайт I-степени




Группа: VIP-Пользователи

Дата регистрации: 07.06.2005
Сообщения: 1671
Кто?: 7bit.штурмоствол

Репутация пользователя :
+1039 -687 = 352
Рейтинг сообщения:
+0 -0 = 0
балл   балл

МОИ ФОТКИ!


На верх страницы

цитата:
Кошак пишет
В машинном коде, если ошибаюсь поправьте, реализация циклов описывается более объемно, когда как "гота" и есть одна команда

Ну, предугадать машинный код, сгенеренный компилом, не так-то и просто - компилы у нас всё "оптимизирующие", блин (попробуй дизасмть прогу, написанную на Си и проверить работу, скажем "регистровых переменных" и прочих "обещаний Билла" - долго ржать будишь).
На асме безусловный переход - команда jmp. Ближний переход занимает 3 байта (КОп+смещение в сегменте), дальний - 5 байтов (+номер сегмента).
Цикл типа while делается вручную при помощи меток и условных переходов (объём кода сильно зависит от ситуации - иногда надо выполнить какое-нить сравнение перед условным переходом, иногда предыдущая команда сама устанавливает флаги).
Цикл типа for делается меткой и командой loop метка (про этот луп-то я и говорил). Счётчик - в регистре cx (ecx в 32-разрядном моде). Всё, вроде бы просто, но на самом деле, при переводе на машинный код loop метка превращается аш в 3 команды:
dec cx ; декремент cx
cmp cx,0 ; сравнение cx с нулём
jne метка ; условный переход

__________________
Si vis pacem, para bellum!

02.11.2005 01:26 AssaultRifle оффлайн Послать письмо AssaultRifle Сайт AssaultRifle Искать сообщения : AssaultRifle Добавить AssaultRifle в адресную книгу
AssaultRifle
AssaultRifle - мужик
Лорд Гигабайт I-степени




Группа: VIP-Пользователи

Дата регистрации: 07.06.2005
Сообщения: 1671
Кто?: 7bit.штурмоствол

Репутация пользователя :
+1039 -687 = 352
Рейтинг сообщения:
+0 -0 = 0
балл   балл

МОИ ФОТКИ!


На верх страницы

цитата:
Stan F пишет
Рассол, и все же не сравнивай попу с пальцем. Асмовские циклы и высокоуровневые - разные вещи. Кто знает, как код интерпретируется в машинный язык.. Подозреваю, что в некоторых случаях именно jmp.

а я не подразумеваю - я многие свои сишные проги дизасмил - много интересного увидел. Сделал ряд выводов. Главный - Майкрософт маздай!!! Jmp'ом там даже иногда заменяется for'ный цикл! haha

__________________
Si vis pacem, para bellum!

02.11.2005 01:29 AssaultRifle оффлайн Послать письмо AssaultRifle Сайт AssaultRifle Искать сообщения : AssaultRifle Добавить AssaultRifle в адресную книгу
Страницы (2): [1] 2 следующая »
Понравилась тема? Поделитесь с друзьями!
Чтобы отвечать на сообщения и создавать новые темы, необходимо зарегистрироваться. Присоединяйся к нам! :-)
Перейти:

Все вопросы, связанные с деятельностью сайта и форума решаются с руководителем проекта.

powered by [censored] forum
7bit.team © 2001-2016