Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> оператор перехода goto, тру или нет? 
:(
    Опции темы
UniBomb
Дата 14.12.2006, 21:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
***
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 1754
Регистрация: 24.10.2006
Где: Санкт-Петербург

Репутация: 2
Всего: 97



Никогда не использовал и запрет преподавателей на использование оператора воспринимал как должное. Но всё таки интересно, почему не рекомендуется использовать goto в программах? Это чисто эстетические причины или же некорректность в работе оператора?


--------------------
PM MAIL ICQ Skype   Вверх
JackYF
Дата 14.12.2006, 21:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Это не только эстетические причины. Вообще на эту тема уже столько раз поднималась... воспользуйся поиском.
goto  нарушает естественное течение программы, т.е. невызов нужных конструкторов/деструкторов, запутанность программ...
Минусов очень много. Средства языка позволяет свободно обходиться без goto.

Однозначно false...


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
INHazeR
Дата 14.12.2006, 21:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 8.12.2006

Репутация: нет
Всего: нет



Whenever possible, you should avoid using gotos in your program. They tend to encourage very convoluted code that can be extremely difficult to follow.

As the goto is theoretically unnecessary - there's always an alternative approach to using goto - a significant cadre of programmers say you should never use it. I don't subscribe to such an extreme view. It is a legal statement after all, and there are occasions when it can be convenient. However, I do recommend that you only use it where you can see an obvious advantage over other options that are available.
PM MAIL   Вверх
MAKCim
Дата 14.12.2006, 21:08 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



чушь, что его нельзя использовать
главное использовать с умом и когда это действительно облегчает понимание кода
в С++, скорее всего, можно обойтись в большинстве случаев без него, в С много моментов, где его применение оправдано
Если есть желание, посмотри исходники ядра Linux - яркий пример любви к goto  smile

Добавлено @ 21:10 
JackYF
не согласен с тобой, нельзя быть таким категоричным
goto во многих случаях делает код как раз менее запутанным и понятным


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
UniBomb
Дата 14.12.2006, 21:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
***
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 1754
Регистрация: 24.10.2006
Где: Санкт-Петербург

Репутация: 2
Всего: 97



JackYF

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


Цитата

goto  нарушает естественное течение программы, т.е. невызов нужных конструкторов/деструкторов, запутанность программ...



А вот если оператор используется в линейном коде, где нет ни конструкторо/деструкторов и скажем идёт расчёт какой-нибудь системы уравнений, где нельзя однозначно предугадать дальнейшее решение и в этом коде будет проще использовать этот оператор (ну скажем короче, продуктивнее и проще, чем куча ифоф, кейсов, форов и вайлов). В таких случаях тоже низя?

INHazeR

ну вот, сидеть мне теперь со словарём допозна... Единственное что я понял, что оператор теоретически безопасен (?).

MAKCim

 smile 

Это сообщение отредактировал(а) UniBomb - 14.12.2006, 21:14


--------------------
PM MAIL ICQ Skype   Вверх
apook
Дата 14.12.2006, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 794
Регистрация: 12.7.2006

Репутация: 9
Всего: 23



Короче на сколько я понимаю этот оператор приводит к ошибкам программы
особенно если код большой а так же если кто-то захочет разобрать
твою прогу (дизассембл) то участок кода напр:
for(  ;; )
{
    ....
   for(  ;;  )
   {
        if( x <4 ) goto ass;
        }   
    }
Вроде-бы сведет на нет его понимание

но я иногда не брезгую хотя не очень он мне тоже нравится


--------------------
Мои руки из дуба, голова из свинца ну и пусть ...
PM MAIL   Вверх
MAKCim
Дата 14.12.2006, 21:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Цитата

В таких случаях тоже низя? 

если код станет понятнее - однозначно можно
goto, повторюсь, это не табу


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
TaNK
Дата 14.12.2006, 21:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 669
Регистрация: 29.10.2006
Где: Краснодар

Репутация: нет
Всего: 1



goto необходимо использовать при самой необходимости, например когда невозможно использовать оператор break;

Это сообщение отредактировал(а) TaNK - 14.12.2006, 21:17


--------------------

Oracle 11.2.0.3.0
FireBird 1.0-2.5


PM MAIL ICQ   Вверх
JackYF
Дата 14.12.2006, 21:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Unexpected returnvalue 2 from Glimpse - вот ответ на поиск 'goto' в тексте(ссылка Makcim'a). )))


Цитата(MAKCim @  14.12.2006,  21:08 Найти цитируемый пост)
чушь, что его нельзя использовать


Очень опасно. Особенно в С++.
Я лично на С ничего не пишу и не собираюсь.



--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
MAKCim
Дата 14.12.2006, 21:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



UniBomb
пример чего?


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
UniBomb
Дата 14.12.2006, 21:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
***
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 1754
Регистрация: 24.10.2006
Где: Санкт-Петербург

Репутация: 2
Всего: 97



apook

Цитата

 а так же если кто-то захочет разобрать
твою прогу (дизассембл) то участок кода напр:


Допустим исходники только для твоих глаз, причём очень хорошо закоментирована.


--------------------
PM MAIL ICQ Skype   Вверх
INHazeR
Дата 14.12.2006, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 8.12.2006

Репутация: нет
Всего: нет



если оператор в языке существует, значит использовать его можно и нужно, если того требует ситуация. другое дело, что я даже гипотетически не могу представить себе ситуацию, когда этот оператор был бы незаменим. гораздо проще и надежнее использовать условия и циклы. ИМХО.
PM MAIL   Вверх
UniBomb
Дата 14.12.2006, 21:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
***
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 1754
Регистрация: 24.10.2006
Где: Санкт-Петербург

Репутация: 2
Всего: 97



MAKCim

Ну... да нет, просто думал есть где-нить под рукой кусок кода, где он действительно оправдан...


--------------------
PM MAIL ICQ Skype   Вверх
MAKCim
Дата 14.12.2006, 21:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Цитата

Очень опасно. Особенно в С++.

Вообще, С++, если разобраться, очень опасный язык
Мое имхо, все, что к месту - хорошо, goto в том числе
ничего плохого в нем нет

Добавлено @ 21:24 
Цитата

Ну... да нет, просто думал есть где-нить под рукой кусок кода, где он действительно оправдан... 

Код

/* Returns 0 and nd will be valid on success; Retuns error, otherwise. */
1072 static int fastcall do_path_lookup(int dfd, const char *name,
1073                                 unsigned int flags, struct nameidata *nd)
1074 {
1075         int retval = 0;
1076         int fput_needed;
1077         struct file *file;
1078 
1079         nd->last_type = LAST_ROOT; /* if there are only slashes... */
1080         nd->flags = flags;
1081         nd->depth = 0;
1082 
1083         if (*name=='/') {
1084                 read_lock(&current->fs->lock);
1085                 if (current->fs->altroot && !(nd->flags & LOOKUP_NOALT)) {
1086                         nd->mnt = mntget(current->fs->altrootmnt);
1087                         nd->dentry = dget(current->fs->altroot);
1088                         read_unlock(&current->fs->lock);
1089                         if (__emul_lookup_dentry(name,nd))
1090                                 goto out; /* found in altroot */
1091                         read_lock(&current->fs->lock);
1092                 }
1093                 nd->mnt = mntget(current->fs->rootmnt);
1094                 nd->dentry = dget(current->fs->root);
1095                 read_unlock(&current->fs->lock);
1096         } else if (dfd == AT_FDCWD) {
1097                 read_lock(&current->fs->lock);
1098                 nd->mnt = mntget(current->fs->pwdmnt);
1099                 nd->dentry = dget(current->fs->pwd);
1100                 read_unlock(&current->fs->lock);
1101         } else {
1102                 struct dentry *dentry;
1103 
1104                 file = fget_light(dfd, &fput_needed);
1105                 retval = -EBADF;
1106                 if (!file)
1107                         goto out_fail;
1108 
1109                 dentry = file->f_dentry;
1110 
1111                 retval = -ENOTDIR;
1112                 if (!S_ISDIR(dentry->d_inode->i_mode))
1113                         goto fput_fail;
1114 
1115                 retval = file_permission(file, MAY_EXEC);
1116                 if (retval)
1117                         goto fput_fail;
1118 
1119                 nd->mnt = mntget(file->f_vfsmnt);
1120                 nd->dentry = dget(dentry);
1121 
1122                 fput_light(file, fput_needed);
1123         }
1124         current->total_link_count = 0;
1125         retval = link_path_walk(name, nd);
1126 out:
1127         if (likely(retval == 0)) {
1128                 if (unlikely(current->audit_context && nd && nd->dentry &&
1129                                 nd->dentry->d_inode))
1130                 audit_inode(name, nd->dentry->d_inode, flags);
1131         }
1132 out_fail:
1133         return retval;
1134 
1135 fput_fail:
1136         fput_light(file, fput_needed);
1137         goto out_fail;
1138 }

просто пример из ядра, не скажу, однако, что тут без goto не обойтись


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
JackYF
Дата 14.12.2006, 21:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



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

К пример, выход из двойного и даже тройного цикла не считаю такой крайней необходимостью.

Это лично мое мнение, никому навязывать не собираюсь.




--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Gen
Дата 14.12.2006, 21:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 30.7.2006

Репутация: нет
Всего: 1



Вопрос - а много ли он сжирает ресурсов по сравнению с готозаменяющими циклами?? smile 
PM MAIL   Вверх
INHazeR
Дата 14.12.2006, 21:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 8.12.2006

Репутация: нет
Всего: нет



гм. как goto может сжирать ресурсы? это же команда
PM MAIL   Вверх
codelord
Дата 14.12.2006, 21:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 777
Регистрация: 7.5.2005
Где: ты моя темноглаза я где?!

Репутация: 1
Всего: 39



в книге K&R об этом уже давно написали.
коротко:
ничего криминального, не обязательно, всегда можно обойтись.
сам давно уже не пользовался. Хотя когда еще в школе на бейсике то всегда

фрагмент K&R

Цитата

      в языке "c" предусмотрен и  оператор  goto,  которым
  бесконечно  злоупотребляют,  и  метки  для  ветвления.  С
                           - 127 -
  
  формальной точки зрения оператор goto никогда не является
  необходимым, и на практике почти  всегда  можно  обойтись
  без него. Мы не использовали goto в этой книге.
       Тем не менее,  мы  укажем  несколько  ситуаций,  где
  оператор  goto   может   найти   свое   место.   Наиболее
  характерным является его использование тогда, когда нужно
  прервать  выполнение  в   некоторой   глубоко   вложенной
  структуре, например, выйти сразу из  двух  циклов.  Здесь
  нельзя непосредственно использовать оператор  brеак,  так
  как он прерывает только самый внутренний цикл. Поэтому:
         for ( ... )
                 for ( ... )     {
                         ...
                         if (disaster)
                                 goto error;
                 }
         ...
 error:
         clean up the mess
  Если программа обработки  ошибок  нетривиальна  и  ошибки
  могут возникать в нескольких местах, то такая организация
  оказывается удобной. Метка имеет такую же  форму,  что  и
  имя переменной, и за ней всегда следует двоеточие.  Метка
  может быть приписана к любому оператору той же функции, в
  которой находится оператор goto.
       В  качестве  другого   примера   рассмотрим   задачу
  нахождения первого отрицательного  элемента  в  двумерном
  массиве. (Многомерные массивы рассматриваются в главе 5).
  Вот одна из возможностей:
                           - 128 -
         
          for (i = 0; i < n; i++)
                 for (j = 0; j < m; j++)
                         if (v[i][j] < 0)
                             goto found;
                 /* didn't find */
         ...
 found:
         /* found one at position i, j */
         ...
       Программа, использующая оператор goto, всегда  может
  быть  написана  без  него,  хотя,   возможно,   за   счет
  повторения некоторых проверок и  введения  дополнительных
  переменных. Например, программа поиска в  массиве  примет
  вид:
         found = 0;
         for (i = 0; i < n && ]found; i++)
                 for (j = 0; j < m && ]found; j++)
                         found = v[i][j] < 0;
         if (found)
                 /* it was at i-1, j-1 */
                 ...
         else
                 /* not found */
                 ...
       Хотя мы не являемся в этом вопросе догматиками,  нам
  все же кажется, что если и  нужно  использовать  оператор
  goto, то весьма умеренно.





--------------------
Доступен поиск по исходным кодам в GOOGLE.
http://www.google.com/codesearch
PM MAIL   Вверх
Gen
Дата 14.12.2006, 21:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 30.7.2006

Репутация: нет
Всего: 1



Цитата

гм. как goto может сжирать ресурсы? это же команда


Сформулирую вопрос по другому - целесообразно ли использовать его постоянные вызовы в цикле, если, например, это делает код более читаемым??
PM MAIL   Вверх
Dray
Дата 14.12.2006, 21:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Материалист
**


Профиль
Группа: Участник
Сообщений: 652
Регистрация: 7.10.2003
Где: г. Всеволожск

Репутация: 2
Всего: 6



Цитата(Gen @  14.12.2006,  21:38 Найти цитируемый пост)
это делает код более читаемым?? 

Ну раз так, почему нет?
Если побочных эффектов не вылезет, - используй.


--------------------
忍者

user posted image
PM MAIL   Вверх
witex
Дата 14.12.2006, 21:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 224
Регистрация: 16.10.2006
Где: Эстония

Репутация: 0
Всего: 4



goto  ваабще смысла нету использовать.

Использование функций всегда заменяет goto. Тем более что использоване функций, делает значимо читабильным код, чем с goto
--------------------
Я не волшебник, я только учусь."Шлёпни в Гугл" - Афтор Былов Ю.М. 
PM MAIL   Вверх
MAKCim
Дата 14.12.2006, 21:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Цитата

Использование функций всегда заменяет goto. Тем более что использоване функций, делает значимо читабильным код, чем с goto 

call != jmp


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
witex
Дата 14.12.2006, 21:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 224
Регистрация: 16.10.2006
Где: Эстония

Репутация: 0
Всего: 4



понятно дело, что так и есть! Но я встречал столько кадров которые пытались заменить функции оператором goto
--------------------
Я не волшебник, я только учусь."Шлёпни в Гугл" - Афтор Былов Ю.М. 
PM MAIL   Вверх
MAKCim
Дата 14.12.2006, 21:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Цитата

понятно дело, что так и есть!

к чему тогда
Цитата

Использование функций всегда заменяет goto.



--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
GrayCardinal
Дата 14.12.2006, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Фигасе
****


Профиль
Группа: Завсегдатай
Сообщений: 3039
Регистрация: 9.11.2003

Репутация: 2
Всего: 58



UniBomb

ИМХО
Оператор "goto" нельзя использовать по той же самой причине по какой в Советском Союзе нельзя было ездить на одном рельсе.
/ИМХО

Это сообщение отредактировал(а) GrayCardinal - 14.12.2006, 22:50


--------------------
PM MAIL WWW   Вверх
nikitao
Дата 14.12.2006, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кот-программист
***


Профиль
Группа: Завсегдатай
Сообщений: 1206
Регистрация: 30.8.2005
Где: Спб

Репутация: 1
Всего: 26



Про goto - это боян , который появился пожалуй сразу с появлением языков высокого уровня. О нем спорили и спорить будут smile  , но обычно оппоненты приводят неправильные аргументы и вообще спорят не о том. Те, кто кричат против goto , обычно говорят, что большое их количество приводят к трудновыполнимым ошибкам , трудно читаемому коду и прочие, когда как сторонники говорят о его малом использовании в редких, специфических местах. Это же разные вещи smile

Если вкратце , то моя позиция такая ( хотя я goto не юзал года 3 уже) : Если на тебе резиновые сапоги, то зачем обходить три квартала, чтобы не промочить ноги?



ЗЫ Когда создавался ЯП Ада ( признаный самым продуманным ЯП ) , то шли долгие дискуссии на эту тематику и в результате goto все же было включить в него smile

Добавлено @ 22:03 
GrayCardinal, слишком громкое заявление. имхо.


С другой стороны я пожалуй соглашусь с Void , который говорил , что goto при правильном проектировании просто не нужен. 
Отсутствие goto должно стать для программиста не целью , а  результатом накопления им опыта ) 

Это сообщение отредактировал(а) nikitao - 14.12.2006, 22:08


--------------------
Жизнь - печальная штука.
PM MAIL ICQ Skype GTalk   Вверх
GrayCardinal
Дата 14.12.2006, 22:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Фигасе
****


Профиль
Группа: Завсегдатай
Сообщений: 3039
Регистрация: 9.11.2003

Репутация: 2
Всего: 58



nikitao
Так ясно что ИМХО, или дописать ?  smile 


--------------------
PM MAIL WWW   Вверх
nikitao
Дата 14.12.2006, 22:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кот-программист
***


Профиль
Группа: Завсегдатай
Сообщений: 1206
Регистрация: 30.8.2005
Где: Спб

Репутация: 1
Всего: 26



Цитата(GrayCardinal @  14.12.2006,  23:13 Найти цитируемый пост)

Так ясно что ИМХО, или дописать ?  smile  

Извени , не уверен , что вопрос понял smile  но в любом случае лучше дописать smile 


--------------------
Жизнь - печальная штука.
PM MAIL ICQ Skype GTalk   Вверх
GrayCardinal
Дата 14.12.2006, 22:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Фигасе
****


Профиль
Группа: Завсегдатай
Сообщений: 3039
Регистрация: 9.11.2003

Репутация: 2
Всего: 58



nikitao
Так нормалек ?

Добавлено @ 23:00 
ЗЫ
А будем обсуждать можно ли использовать обе ?
 smile  smile  smile 


--------------------
PM MAIL WWW   Вверх
UniBomb
Дата 14.12.2006, 23:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
***
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 1754
Регистрация: 24.10.2006
Где: Санкт-Петербург

Репутация: 2
Всего: 97



nikitao

Цитата

С другой стороны я пожалуй соглашусь с Void , который говорил , что goto при правильном проектировании просто не нужен. 
Отсутствие goto должно стать для программиста не целью , а  результатом накопления им опыта ) 


Ты опять таки возвращаешся к вопросу об эстетики, имхо программиста меньше всего должно беспокоить наличие оператора (если это конечно не приводит к ошибке) goto. Прочтя все высказывания я понял одно - программиста от "кулхацкера" отличает как раз ниличие или отсутвие goto в коде их программ. С этой же точки зрения можно забанить функцию ReadFileEx, когда есть такая замечательная функция ReadFile (это просто пример, взял первые попавшие на ум похожие функции). А то что такие программы трудно читать - это проблемы того, кто читает (хотя я всё таки за "правила хорошего тона" и стараюсь писать удобочитаемый код). Моё ИМХО - если оператор или функция не вызывает ошибки, то её нужно использовать эти операторы или функции в случае максимального комфорта...


Gen
Dray
к слову - а что значат картинки у вас в подписях?


--------------------
PM MAIL ICQ Skype   Вверх
apook
Дата 14.12.2006, 23:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 794
Регистрация: 12.7.2006

Репутация: 9
Всего: 23



Вот статья как Умные дядьки изгнали GOTO из одного языка

Это сообщение отредактировал(а) apook - 14.12.2006, 23:53

Присоединённый файл ( Кол-во скачиваний: 20 )
Присоединённый файл  i21__.7z 95,42 Kb


--------------------
Мои руки из дуба, голова из свинца ну и пусть ...
PM MAIL   Вверх
nikitao
Дата 15.12.2006, 00:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кот-программист
***


Профиль
Группа: Завсегдатай
Сообщений: 1206
Регистрация: 30.8.2005
Где: Спб

Репутация: 1
Всего: 26



Цитата(UniBomb @  15.12.2006,  00:05 Найти цитируемый пост)
то что такие программы трудно читать - это проблемы того, кто читает

Жесть.. smile ... Без комментариев. 


GrayCardinal,  smile 


--------------------
Жизнь - печальная штука.
PM MAIL ICQ Skype GTalk   Вверх
UniBomb
Дата 15.12.2006, 00:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
***
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 1754
Регистрация: 24.10.2006
Где: Санкт-Петербург

Репутация: 2
Всего: 97



nikitao

Спасение утопающик - дело рук самих утопающих (или как то так...). Программа может быть написана грамотно и умно, но и без goto нечитабельна... И вообще, читай предложение целиком и не придирайся к отдельной фразе...


--------------------
PM MAIL ICQ Skype   Вверх
Rockie
Дата 15.12.2006, 01:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 23.4.2006

Репутация: 8
Всего: 31



Цитата(UniBomb @  14.12.2006,  21:11 Найти цитируемый пост)
ну вот, сидеть мне теперь со словарём допозна... Единственное что я понял, что оператор теоретически безопасен


Это если теоретически написать программу smile

Цитата(apook @  14.12.2006,  21:13 Найти цитируемый пост)
твою прогу (дизассембл) то участок кода напр:

как насчет тегов кода, запятых и полных слов? =) С примером согласен.

Цитата(JackYF @  14.12.2006,  21:25 Найти цитируемый пост)
К пример, выход из двойного и даже тройного цикла не считаю такой крайней необходимостью.


согласен, выход из таких циклов - imho пожалуй единственное оправдание этому оператору, и то с натяжкой 

Цитата(nikitao @  14.12.2006,  22:02 Найти цитируемый пост)
Про goto - это боян

 smile 

Цитата(UniBomb @  15.12.2006,  00:07 Найти цитируемый пост)
Спасение утопающик - дело рук самих утопающих (или как то так...).

Цитата(UniBomb @  14.12.2006,  23:05 Найти цитируемый пост)
 Прочтя все высказывания я понял одно - программиста от "кулхацкера" отличает как раз ниличие или отсутвие goto в коде их программ.
Цитата
А то что такие программы трудно читать - это проблемы того, кто читает


UniBomb, могут стать твои, если тебя уволят smile.
imho программиста от кулхацкера отличает наличие или отсутствие уважения к коллегам, которые твой код смотрят и с ним работают. Программа может быть написана грамотно и умно с точки зрения того, кто ее писал и быть абсолютным г@#;ом для остальных. И дело тут не в goto а в отношении.




--------------------
Чтобы иметь большой гардероб - надо иметь большой гардероб.
PM   Вверх
UniBomb
Дата 15.12.2006, 11:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
***
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 1754
Регистрация: 24.10.2006
Где: Санкт-Петербург

Репутация: 2
Всего: 97



Rockie

Цитата

mho программиста от кулхацкера отличает наличие или отсутствие уважения к коллегам, которые твой код смотрят и с ним работают. Программа может быть написана грамотно и умно с точки зрения того, кто ее писал и быть абсолютным г@#;ом для остальных. И дело тут не в goto а в отношении.


Опять таки всё зависит от точки зрения. Но сабж пошёл не в то русло, поэтому, прекращая флуд, последнее слово пусть остаётся за тобой.


--------------------
PM MAIL ICQ Skype   Вверх
Любитель
Дата 15.12.2006, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 24
Всего: 92



В C даже сомнения нету. Если не извращаться, а осмысленно использовать, то это нормальный и естественный оператор, который не только усложняет восприятие кода, но и упрощает его. В плюсах - лучше воздержаться. Есть множество альтернатив, а goto в плюсах всё же не безопасен.


--------------------
PM MAIL ICQ Skype   Вверх
UnrealMan
Дата 15.12.2006, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 722
Регистрация: 30.3.2006

Репутация: 27
Всего: 32



Цитата(JackYF @  14.12.2006,  21:05 Найти цитируемый пост)
goto  нарушает естественное течение программы, т.е. невызов нужных конструкторов/деструкторов

А поподробней можно?
PM MAIL   Вверх
maxim1000
Дата 15.12.2006, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 17
Всего: 110



касательно невызывания конструкторов/деструкторов при использовании goto
это не свсем так:
если с помощью goto происходит выход из области видимости объекта, его деструктор вызывается
в то же время не допускается использование goto, которое приводит к пропуску конструкторов
P.S.
не то, чтобы я за него агитировал, но и лишнего ему приписывать не надо smile


--------------------
qqq
PM WWW   Вверх
JackYF
Дата 15.12.2006, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Цитата(maxim1000 @  15.12.2006,  13:13 Найти цитируемый пост)
если с помощью goto происходит выход из области видимости объекта, его деструктор вызывается


Наверное, ты прав.



--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
SaDFromSpb
Дата 15.12.2006, 23:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 263
Регистрация: 5.4.2006
Где: Санкт-Петербург

Репутация: 3
Всего: 3



Что касается меня, то с тех пор, как препод нам давным давно сказал, что goto - это от дьявола, и что использующий его да будет гореть в геене огненной, так ни разу им и не воспользовался. Считаю, что код можно сделать красивым и удобочитаемым без оператора goto, уж по крайней мере в С++.
По поводу ядра линукс: его пишут особые люди с особым складом программистского ума =). Если начинать прогать с asm'а =), то отказ от оператора goto сперва покажется чем-то диким, наверное. (Хотя кто в наши времена начинает с asm'а? =) )

Эта тема, действительно, может превратиться в долгий флуд, и я не стал бы сюда постить, если бы не вспомнил про одну интересную статейку, в которой представляется чудесный способ избавления от трудных мест в алгоритме со многочисленными ветвлениями и "внезапными" выходами по среди тел воложенных циклов.
Алгоритм преобразует алгоритм
Эта статья, я думаю, будет особо полезна тем, кто считает, что в некоторых случаях goto - панацея.

П.С.: Прошу заметить, что ярым противником goto не являюсь. Хотя был бы неприятно удивлен увидеть его в коде матерого прикладного приложения, написанного на оо языке. Когда он действительно вреден, так это когда его используют начинающие, вместо того, чтобы лучше продумать заковыристый кусок алгоритма.

Это сообщение отредактировал(а) SaDFromSpb - 15.12.2006, 23:18


--------------------
"За исключением части, касающейся потоков, библиотека Loki написана на стандартном языке С++. Увы, это означает, что многие современные компиляторы не смогут работать с ней в полном объеме." (А. Александреску. Modern C++ design. 2001)
PM   Вверх
UnrealMan
Дата 16.12.2006, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 722
Регистрация: 30.3.2006

Репутация: 27
Всего: 32



Цитата(maxim1000 @  15.12.2006,  13:13 Найти цитируемый пост)
если с помощью goto происходит выход из области видимости объекта, его деструктор вызывается

Цитата(JackYF @  15.12.2006,  16:23 Найти цитируемый пост)
Наверное, ты прав.

Не наверное, а точно:

Цитата(ISO/IEC 14882:2003(E) 6.6 Jump statements)
On exit from a scope (however accomplished), destructors (12.4) are called for all constructed objects with automatic storage duration (3.7.2) (named objects or temporaries) that are declared in that scope, in the reverse order of their declaration. Transfer out of a loop, out of a block, or back past an initialized variable with automatic storage duration involves the destruction of variables with automatic storage duration that are in scope at the point transferred from but not at the point transferred to.

Цитата(maxim1000 @  15.12.2006,  13:13 Найти цитируемый пост)
в то же время не допускается использование goto, которое приводит к пропуску конструкторов

Пропуску любой инициализации вообще:

Цитата(ISO/IEC 14882:2003(E) 6.7 Declaration statement)
It is possible to transfer into a block, but not in a way that bypasses declarations with initialization. A program that jumps from a point where a local variable with automatic storage duration is not in scope to a point where it is in scope is ill-formed unless the variable has POD type (3.9) and is declared without an initializer (8.5).

[Example:
Код
void f()
{
    // ...
    goto lx; // ill-formed: jump into scope of a
    // ...
ly:
    X a = 1;
    // ...
lx:
    goto ly; // OK, jump implies destructor
    // call for a followed by construction
    // again immediately following label ly
}
—end example]

Цитата(maxim1000 @  15.12.2006,  13:13 Найти цитируемый пост)
но и лишнего ему приписывать не надо 

Вот-вот.

Это сообщение отредактировал(а) UnrealMan - 16.12.2006, 11:53
PM MAIL   Вверх
FelikZ
  Дата 16.12.2006, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Старый Маразматик
**


Профиль
Группа: Участник
Сообщений: 380
Регистрация: 1.12.2006
Где: Vault 13

Репутация: нет
Всего: 5



По-моему в малом количестве в некоторых специфических задачах
вполне можно употреблять без всяких сомнений...


--------------------
user posted image
PM WWW ICQ Skype   Вверх
zabivator
Дата 16.12.2006, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 171
Регистрация: 7.6.2006
Где: нск

Репутация: 1
Всего: 2



Читал тему, с кем-то согласен, с кем-то не очень.
Один момент! Вот представьте себе, что идет обход дерева через рекурсивный вызов метода...допустим, для поиска определенного элемента. Использование goto либо кидание исключения мне кажется куда более гуманным, чем традиционные методы.
--------------------
#include <zabivator>int main( int, char * [] ){   while( Zabivator::жив() ) Zabivator::моск()++;   return 0;}
PM MAIL WWW ICQ   Вверх
vinter
Дата 17.12.2006, 00:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 13
Всего: 56



по мне так goto - зло для человека, который читает чужой(большой) код, особенно если goto кидает куда-нить за пределы видимой страницы.. натерпелся с этими метками в асме, в С\С++ ни разу не использовал(надеюсь и не буду) и живу нормально..
 smile 
P.S народ че случилось с аватарами некоторых участников, я народ путаю.. smile 


--------------------
Мой блог
PM MAIL WWW   Вверх
bel_nikita
Дата 17.12.2006, 02:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

Репутация: 21
Всего: 47



Цитата(nikitao @ 14.12.2006,  21:02)
С другой стороны я пожалуй соглашусь с Void , который говорил , что goto при правильном проектировании просто не нужен. 
Отсутствие goto должно стать для программиста не целью , а  результатом накопления им опыта )

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


З.Ы.: Если профессор на лекциях говорит студентам, что goto - от дьявола, правду говорит, дабы уберечь молодой организм от злоупотребления и заставить задуматься над проектированием. Но потом, через пару лет, при определенных обстоятельствах, вы вспомните о всемогущем goto и все же используете его... но это уже будет не зеленый студент, а зрелый программист smile 


--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
AlexPro
Дата 17.12.2006, 13:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 9.11.2005
Где: Санкт-Петербург

Репутация: 1
Всего: 4



Хотел тоже высказаться, но после K&R остается только дабавить : Аминь!

Цитата(SaDFromSpb @  16.12.2006,  07:07 Найти цитируемый пост)
(Хотя кто в наши времена начинает с asm'а? =) 

 smile Ну, вот он я!
Хотя не знаю, 10-15 лет назад - это можно еще относить к нашим временам? smile 

Цитата(SaDFromSpb @  16.12.2006,  07:07 Найти цитируемый пост)
Если начинать прогать с asm'а =), то отказ от оператора goto сперва покажется чем-то диким, наверное.

В этом плане у меня довольно интересный опыт: после ассемблера я перешел на FoxPro. В виду полного отсутствия операторов перехода, мне пришлось поневоле от них отказаться. После ассемблера с его десятками операторов перехода, отсутствие их в Фоксе поначалу приводило в ступор. Так что имеется опыт как интенсивого использования операторов перехода, так и полного отказа от них.

В проекте, над которым я сейчас работаю (20К строк) оператор goto используется ровно пять раз. Каждое его использование обусловлено соображениями производительности и (или) читаемости кода (т.е. использование оператора приводило к упрощению кода). Везде операторы и метки перехода находятся в пределах одного экрана.

Что, собственно, я этим хотел сказать? Да ровно то, что уже сказали Керниган и Ричи: оператор можно использовать, но если это действительно нужно.
PM MAIL   Вверх
Kirill89
Дата 17.12.2006, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 501
Регистрация: 17.10.2006
Где: Питер

Репутация: нет
Всего: 4



Я может быть немного не по теме, но как например в visual basic без goto обойтись? например on error goto <метка>.


--------------------
PM MAIL WWW   Вверх
Anikmar
Дата 17.12.2006, 23:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 59



А при чем здесь форум С++ ?
PM MAIL ICQ   Вверх
Kirill89
Дата 18.12.2006, 00:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 501
Регистрация: 17.10.2006
Где: Питер

Репутация: нет
Всего: 4



Цитата(Anikmar @  17.12.2006,  23:41 Найти цитируемый пост)
А при чем здесь форум С++ ? 

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


--------------------
PM MAIL WWW   Вверх
UniBomb
Дата 18.12.2006, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
***
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 1754
Регистрация: 24.10.2006
Где: Санкт-Петербург

Репутация: 2
Всего: 97



bel_nikita

Вот это действительно аминь...  


Anikmar
Kirill89

Вероятно автор топика имел в виду использование оператора в программах c/cpp. Хотя кто его знает smile


--------------------
PM MAIL ICQ Skype   Вверх
Voldemar2004
Дата 18.12.2006, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1650
Регистрация: 25.12.2004

Репутация: нет
Всего: 23



Цитата(Kirill89 @  17.12.2006,  18:17 Найти цитируемый пост)
как например в visual basic без goto обойтись? например on error goto <метка>.
Цитата(UniBomb @  18.12.2006,  14:31 Найти цитируемый пост)
Вероятно автор топика имел в виду использование оператора в программах c/cpp. Хотя кто его знает 
 smile Имхо, всегда goto можно избежать при грамотном подходе, даже в ущерб производительности, зато решение будет красивее.

А в VB 
Код
on error goto <метка>
 - стандрат языка, причем очень удобный.





--------------------
i_i 
(';') 
(V)

user posted image
PM MAIL   Вверх
Anikmar
Дата 18.12.2006, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 59



Цитата(Voldemar2004 @ 18.12.2006,  13:38)
 smile Имхо, всегда goto можно избежать при грамотном подходе, даже в ущерб производительности, зато решение будет красивее.


И наоборот. С goto иногда получается красивее и быстрее.

Блин, я тоже в этот баян втянулся...  smile 

Я в своем проекте использую goto целых 3 раза и не собираюсь ничего выдумывать, чтобы его от туда вымарать - он там логично сидит, никому не мешает, ничего не нарушает, а городить хренову тучу отступов и скобок не вижу смысла. Тем более использовать throw... Нормальный оператор. Расширяет возможности языка. 

Все лежит на совести программера. Как говорится с дури и х... сломать можно.

PM MAIL ICQ   Вверх
UniBomb
Дата 19.12.2006, 00:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
***
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 1754
Регистрация: 24.10.2006
Где: Санкт-Петербург

Репутация: 2
Всего: 97



Anikmar

Вот! Вот оно!! Всё таки есть те, кто считает нормальным использовать оператор и те, кто считает это злом...

кстати, отсюда следует правило - хороший баян заразителен smile

Это сообщение отредактировал(а) UniBomb - 19.12.2006, 00:13


--------------------
PM MAIL ICQ Skype   Вверх
SergeCpp
Дата 20.12.2007, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


 
**


Профиль
Группа: Участник
Сообщений: 955
Регистрация: 8.8.2005
Где: At Home

Репутация: 15
Всего: 124



Пожалуй, будет интересен некий исторический экскурс в тему

Вот с такой вот стороны

user posted image
user posted image

И вот с такой вот

Structured Programming with go to Statements. Donald Ervin Knuth (PDF in 2.9 M)

user posted image

PM MAIL WWW ICQ   Вверх
Lazin
Дата 20.12.2007, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 41
Всего: 154



я использовал goto всего 2 раза в жизни:
1 раз в программе на С, там это к месту было...
2 раз в программе на паскале, курсе эдак на первом))

Добавлено через 1 минуту и 27 секунд
вообще считаю что можно, но не больше одного goto на ф-ю, иначе код читать станет невозможно...
PM MAIL Skype GTalk   Вверх
SaDFromSpb
Дата 20.12.2007, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 263
Регистрация: 5.4.2006
Где: Санкт-Петербург

Репутация: 3
Всего: 3



Цитата(zabivator @  16.12.2006,  17:08 Найти цитируемый пост)
Читал тему, с кем-то согласен, с кем-то не очень.
Один момент! Вот представьте себе, что идет обход дерева через рекурсивный вызов метода...допустим, для поиска определенного элемента. Использование goto либо кидание исключения мне кажется куда более гуманным, чем традиционные методы. 

Если ты обходишь дерево для поиска элемента, то его нахождение должно быть как раз естественным завершением всей рекурсии...

В Java вообще оператора goto нет. (Хотя слово goto зарезервировано - использовать его нельзя). Посправшивайте в ветке о Java на сколько сильно они от этого страдают  smile 

ЗЫ. Ну нифига вы бородатую тему подняли из праха  =)



--------------------
"За исключением части, касающейся потоков, библиотека Loki написана на стандартном языке С++. Увы, это означает, что многие современные компиляторы не смогут работать с ней в полном объеме." (А. Александреску. Modern C++ design. 2001)
PM   Вверх
zkv
Дата 20.12.2007, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 26
Всего: 92



Цитата(Lazin @  20.12.2007,  15:01 Найти цитируемый пост)
но не больше одного goto на ф-ю, иначе код читать станет невозможно... 

может не более одного label'a? 
Код

int F( int x )
{
//...
  if( xz1 )
    goto l_Error;
//...
  if( xz2 )
    goto l_Error;
//...
  return Ok;
//...
 l_Error:
  //обработка
 return Error;
}

PM MAIL   Вверх
Lazin
Дата 20.12.2007, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 41
Всего: 154



Цитата(zkv @  20.12.2007,  15:20 Найти цитируемый пост)
может не более одного label'a? 

ага
так как логику работы этого
Код

int F( int x )
{
 l_begin:
//...
  if( xz1 )
    goto l_Error;
//...
  if( xz2 )
    goto l_begin;
//...
  return Ok;
//...
 l_Error:
  //обработка
 return Error;
}

уже не переварить
PM MAIL Skype GTalk   Вверх
Cycle
Дата 21.12.2007, 00:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 1.12.2007

Репутация: 3
Всего: 3



А исключения это уже сложно? Люди стараются придумывают замену goto для вас, а вы... smile
PM MAIL   Вверх
MAKCim
Дата 21.12.2007, 00:31 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



goto - вещь полезная и во многих случаях оправдана
очень полезна в управлении ресурсами в структурных языках типа С
здесь возможна замена goto функциями, но код будет менее эффективен и логичен
долой предрассудки!  smile

Добавлено через 1 минуту и 6 секунд
Цитата(Cycle @  21.12.2007,  00:17 Найти цитируемый пост)
А исключения это уже сложно?

не всегда оправдано
исключения - крайне тяжеловесный механизм
для прикладной логики самое то, но для критичных участков не подойдет


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
sgrey
Дата 21.12.2007, 06:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 265
Регистрация: 15.4.2006

Репутация: нет
Всего: 4



если goto не нарушает естественного хода программы (т.е. нет скачков вверх кода) то вполне можно его использовать, конечно же с умом и не пихать везде где можно... особенно учитывая что практически в любом случае можно обойтись и без него... 
PM MAIL   Вверх
xvr
Дата 21.12.2007, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 60
Всего: 223



Цитата(UniBomb @ 14.12.2006,  21:02)
Никогда не использовал и запрет преподавателей на использование оператора воспринимал как должное. Но всё таки интересно, почему не рекомендуется использовать goto в программах? Это чисто эстетические причины или же некорректность в работе оператора?

Вообще то не рекомендуется, ну например так:
Код

int
recog_1 (x0, insn, pnum_clobbers)
     register rtx x0;
     rtx insn;
     int *pnum_clobbers;
{
  register rtx *ro = &recog_operand[0];
  register rtx x1, x2, x3, x4, x5;
  int tem;

  x1 = XEXP (x0, 1);
  if (GET_MODE (x1) != SImode)
    goto ret0;
  switch (GET_CODE (x1))
    {
    case ASHIFT:
      goto L80;
    case IOR:
      goto L59;
    case AND:
      goto L73;
    case NOT:
      goto L561;
    case NEG:
      goto L600;
    case HIGH:
      goto L715;
    case EQ:
    case NE:
    case LT:
    case LE:
    case GE:
    case GT:
    case LTU:
    case LEU:
    case GEU:
    case GTU:
      if (relop (x1, SImode))
    {
      ro[1] = x1;
      goto L551;
    }
    }
  L555:
  if (even_relop (x1, SImode))
    {
      ro[1] = x1;
      goto L556;
    }
  if (odd_relop (x1, SImode))
    {
      ro[1] = x1;
      goto L583;
    }
  goto ret0;

  L80:
  x2 = XEXP (x1, 0);
  switch (GET_CODE (x2))
    {
    case ZERO_EXTRACT:
      if (GET_MODE (x2) == SImode && 1)
    goto L81;
      break;
    case CONST_INT:
      if (XWINT (x2, 0) == -1 && 1)
    goto L55;
    }
  goto ret0;

  L81:
  x3 = XEXP (x2, 0);
  if (register_operand (x3, SImode))
    {
      ro[1] = x3;
      goto L82;
    }
  goto ret0;

  L82:
  x3 = XEXP (x2, 1);
  if (GET_CODE (x3) == CONST_INT && int5_operand (x3, SImode))
    {
      ro[2] = x3;
      goto L83;
    }
  goto ret0;

  L83:
  x3 = XEXP (x2, 2);
  if (GET_CODE (x3) == CONST_INT && int5_operand (x3, SImode))
    {
      ro[3] = x3;
      goto L84;
    }
  goto ret0;

  L84:
  x2 = XEXP (x1, 1);
  if (GET_CODE (x2) == CONST_INT && int5_operand (x2, SImode))
    {
      ro[4] = x2;
      if (INTVAL (operands[2]) + INTVAL (operands[3]) + INTVAL (operands[4]) == 32)
    return 12;
      }
  goto ret0;

  L55:
  x2 = XEXP (x1, 1);
  if (register_operand (x2, SImode))
    {
      ro[1] = x2;
      return 8;
    }
  goto ret0;

  L59:
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != SImode)
    goto ret0;
  if (GET_CODE (x2) == ASHIFT && 1)
    goto L60;
  if (register_operand (x2, SImode))
    {
      ro[1] = x2;
      goto L67;
    }
  goto ret0;

  L60:
  x3 = XEXP (x2, 0);
  if (GET_CODE (x3) == CONST_INT && XWINT (x3, 0) == -1 && 1)
    goto L61;
  goto ret0;

  L61:
  x3 = XEXP (x2, 1);
  if (register_operand (x3, SImode))
    {
      ro[1] = x3;
      goto L62;
    }
  goto ret0;

  L62:
  x2 = XEXP (x1, 1);
  if (register_operand (x2, SImode))
    {
      ro[2] = x2;
      return 9;
    }
  goto ret0;

  L67:
  x2 = XEXP (x1, 1);
  if (GET_MODE (x2) == SImode && GET_CODE (x2) == ASHIFT && 1)
    goto L68;
  goto ret0;

  L68:
  x3 = XEXP (x2, 0);
  if (GET_CODE (x3) == CONST_INT && XWINT (x3, 0) == -1 && 1)
    goto L69;
  goto ret0;

  L69:
  x3 = XEXP (x2, 1);
  if (register_operand (x3, SImode))
    {
      ro[2] = x3;
      return 10;
    }
  goto ret0;

  L73:
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) == SImode && GET_CODE (x2) == ASHIFT && 1)
    goto L74;
  goto ret0;

  L74:
  x3 = XEXP (x2, 0);
  if (register_operand (x3, SImode))
    {
      ro[1] = x3;
      goto L75;
    }
  goto ret0;

  L75:
  x3 = XEXP (x2, 1);
  if (GET_CODE (x3) == CONST_INT && int5_operand (x3, SImode))
    {
      ro[2] = x3;
      goto L76;
    }
  goto ret0;

  L76:
  x2 = XEXP (x1, 1);
  if (immediate_operand (x2, SImode))
    {
      ro[3] = x2;
      if (mak_mask_p (INTVAL (operands[3]) >> INTVAL (operands[2])))
    return 11;
      }
  goto ret0;

  L561:
  x2 = XEXP (x1, 0);
  if (odd_relop (x2, SImode))
    {
      ro[1] = x2;
      goto L562;
    }
  goto ret0;

  L562:
  x3 = XEXP (x2, 0);
  if (register_operand (x3, CCEVENmode))
    {
      ro[2] = x3;
      goto L563;
    }
  goto ret0;

  L563:
  x3 = XEXP (x2, 1);
  if (GET_CODE (x3) == CONST_INT && XWINT (x3, 0) == 0 && 1)
    return 74;
  goto ret0;

  L600:
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) != SImode)
    goto ret0;
  if (GET_CODE (x2) == NOT && 1)
    goto L601;
  if (relop (x2, SImode))
    {
      ro[1] = x2;
      goto L589;
    }
  L594:
  if (even_relop (x2, SImode))
    {
      ro[1] = x2;
      goto L595;
    }
  if (odd_relop (x2, SImode))
    {
      ro[1] = x2;
      goto L626;
    }
  goto ret0;

  L601:
  x3 = XEXP (x2, 0);
  if (odd_relop (x3, SImode))
    {
      ro[1] = x3;
      goto L602;
    }
  goto ret0;

  L602:
  x4 = XEXP (x3, 0);
  if (register_operand (x4, CCEVENmode))
    {
      ro[2] = x4;
      goto L603;
    }
  goto ret0;

  L603:
  x4 = XEXP (x3, 1);
  if (GET_CODE (x4) == CONST_INT && XWINT (x4, 0) == 0 && 1)
    return 79;
  goto ret0;

  L589:
  x3 = XEXP (x2, 0);
  if (register_operand (x3, CCmode))
    {
      ro[2] = x3;
      goto L590;
    }
  goto L594;

  L590:
  x3 = XEXP (x2, 1);
  if (GET_CODE (x3) == CONST_INT && XWINT (x3, 0) == 0 && 1)
    return 77;
  goto L594;

  L595:
  x3 = XEXP (x2, 0);
  if (register_operand (x3, CCEVENmode))
    {
      ro[2] = x3;
      goto L596;
    }
  goto ret0;

  L596:
  x3 = XEXP (x2, 1);
  if (GET_CODE (x3) == CONST_INT && XWINT (x3, 0) == 0 && 1)
    return 78;
  goto ret0;

  L626:
  x3 = XEXP (x2, 0);
  if (register_operand (x3, CCEVENmode))
    {
      ro[2] = x3;
      goto L627;
    }
  goto ret0;

  L627:
  x3 = XEXP (x2, 1);
  if (GET_CODE (x3) == CONST_INT && XWINT (x3, 0) == 0 && pnum_clobbers != 0 && 1)
    {
      *pnum_clobbers = 1;
      return 81;
    }
  goto ret0;

  L715:
  x2 = XEXP (x1, 0);
  if (GET_MODE (x2) == SImode && GET_CODE (x2) == UNSPEC && XINT (x2, 1) == 0 && XVECLEN (x2, 0) == 1 && 1)
    goto L716;
  goto ret0;

  L716:
  x3 = XVECEXP (x2, 0, 0);
  if (GET_CODE (x3) == LABEL_REF && 1)
    goto L717;
  goto ret0;

  L717:
  x4 = XEXP (x3, 0);
  ro[1] = x4;
  return 103;

  L551:
  x2 = XEXP (x1, 0);
  if (register_operand (x2, CCmode))
    {
      ro[2] = x2;
      goto L552;
    }
  goto L555;

  L552:
  x2 = XEXP (x1, 1);
  if (GET_CODE (x2) == CONST_INT && XWINT (x2, 0) == 0 && 1)
    return 72;
  goto L555;

  L556:
  x2 = XEXP (x1, 0);
  if (register_operand (x2, CCEVENmode))
    {
      ro[2] = x2;
      goto L557;
    }
  goto ret0;

  L557:
  x2 = XEXP (x1, 1);
  if (GET_CODE (x2) == CONST_INT && XWINT (x2, 0) == 0 && 1)
    return 73;
  goto ret0;

  L583:
  x2 = XEXP (x1, 0);
  if (register_operand (x2, CCEVENmode))
    {
      ro[2] = x2;
      goto L584;
    }
  goto ret0;

  L584:
  x2 = XEXP (x1, 1);
  if (GET_CODE (x2) == CONST_INT && XWINT (x2, 0) == 0 && pnum_clobbers != 0 && 1)
    {
      *pnum_clobbers = 1;
      return 76;
    }
  goto ret0;
 ret0: return -1;
}

Файл insn-recog.c из gcc

PM MAIL   Вверх
Mayk
Дата 21.12.2007, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 45
Всего: 134



Цитата(xvr @  21.12.2007,  20:05 Найти цитируемый пост)

Вообще то не рекомендуется, ну например так:

Это сгенерированный код. В сгенерированном коде читабельность занимает последнее место. имхо. 


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
xvr
Дата 21.12.2007, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 60
Всего: 223



Цитата(Mayk @ 21.12.2007,  16:11)
Цитата(xvr @  21.12.2007,  20:05 Найти цитируемый пост)

Вообще то не рекомендуется, ну например так:

Это сгенерированный код. В сгенерированном коде читабельность занимает последнее место. имхо.

Проблема в том, что иногда ТАК пишут и руками - вот для таких 'умельцев' и запрещают пользоваться goto. Нормальный вменяемый программист пользуется goto только там, где это действительно надо (т.е. почти нигде smile )

PM MAIL   Вверх
MAKCim
Дата 21.12.2007, 23:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Цитата(xvr @  21.12.2007,  18:30 Найти цитируемый пост)
Нормальный вменяемый программист пользуется goto только там, где это действительно надо (т.е. почти нигде smile )

на ядро Linux посмотрите
по вашим словам получается, что его шизофреники пишут  smile 
еще раз говорю, долой предрассудки
если уж на то пошло, то нет таких ситуаций, где "это действительно надо"
все можно переписать без goto
но с goto очень часто понятнее, быстрее и логичнее

Это сообщение отредактировал(а) MAKCim - 21.12.2007, 23:44


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
SaDFromSpb
Дата 22.12.2007, 07:21 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 263
Регистрация: 5.4.2006
Где: Санкт-Петербург

Репутация: 3
Всего: 3



Цитата(Cycle @  21.12.2007,  00:17 Найти цитируемый пост)
А исключения это уже сложно? Люди стараются придумывают замену goto для вас, а вы... smile 

Цитата(MAKCim @  21.12.2007,  00:31 Найти цитируемый пост)
не всегда оправдано
исключения - крайне тяжеловесный механизм
для прикладной логики самое то, но для критичных участков не подойдет 


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




--------------------
"За исключением части, касающейся потоков, библиотека Loki написана на стандартном языке С++. Увы, это означает, что многие современные компиляторы не смогут работать с ней в полном объеме." (А. Александреску. Modern C++ design. 2001)
PM   Вверх
MAKCim
Дата 22.12.2007, 10:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Цитата(SaDFromSpb @  22.12.2007,  07:21 Найти цитируемый пост)
Не только поэтому. Исключения - это только для исключительных ситуаций. Уж лучше использовать goto, вместо того чтобы использовать исключения, как элемент логики программы при ее нормальной работе.

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


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Lazin
Дата 24.12.2007, 08:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 41
Всего: 154



Цитата(MAKCim @  22.12.2007,  10:43 Найти цитируемый пост)
я, честно говоря, не видел, чтобы где-нибудь исключения использовались не для исключительных ситуаций

я у страуса видел smile
имхо в большинстве случаев можно переписать код без гоуту и при этом в читабельность только вырастет... Хотя иногда без этого нельзя. У меня оператор goto появлялся только в очень больших функциях(неправильно спроектированных) smile.
PM MAIL Skype GTalk   Вверх
bsa
Дата 24.12.2007, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Lazin, а у меня оператор goto появляется только там, где я это запроектировал. В частности, в функции с таблицей переходов (расширение gcc - позволяет преобразование void* к метке и обратно).
PM   Вверх
GrayCardinal
Дата 24.12.2007, 14:16 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Фигасе
****


Профиль
Группа: Завсегдатай
Сообщений: 3039
Регистрация: 9.11.2003

Репутация: 2
Всего: 58



Народ, имейте совесть, что значит "нельзя использовать" оператор, который есть по стандарту в языке ? Не хочешь - не используй. Всё.

Это сообщение отредактировал(а) GrayCardinal - 24.12.2007, 14:17


--------------------
PM MAIL WWW   Вверх
Albanec
Дата 30.12.2007, 17:34 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 1.12.2007

Репутация: нет
Всего: нет



    По мне дак оператор готу ето как одна из возможностей реализовать свою идею, и я скажу противникакм данного оператора что не стоит брызгая слюной арать что применение данного оператора не есть хорошо и что его применение приведет всех в ад))) По моему ето бред, 
    После создания нескольких програм на ассемблере, я понимаю что кроме оператора goto нету ни одного оператора который бы его заменил(в смысле на низком уровне прогрммирования), так что все операторы похожи на goto(просто в машином языке(ассемблер)нету других операторов), приведите мне хоть один низкоуровневый оператор типа if()  я вам памятник поставлю)).
   И скажите мне зачем его вводят во всех языках программирования если он "НЕ НУЖЕН ИЛИ БЕЗ НЕГО МОЖНО ОБОЙТИСЬ"???? 
   А на сечёт читаемости кода, полностью согласен читается трудно, но после некоторого опыта программирования на ассемблере ето детские сказки))
   Вообщем моё мнеие такое если использовать данный оператор то только если: без него не обоитись, или он улутшит читаемость кода.
   Но не в коем случае нельзя ставить крест на даном операторе)) надо его использовать с умом)) 

PM MAIL   Вверх
SaDFromSpb
Дата 30.12.2007, 18:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 263
Регистрация: 5.4.2006
Где: Санкт-Петербург

Репутация: 3
Всего: 3



Цитата(Lazin @  24.12.2007,  08:54 Найти цитируемый пост)
я у страуса видел

??!! Хде? Ссылку в студию!



--------------------
"За исключением части, касающейся потоков, библиотека Loki написана на стандартном языке С++. Увы, это означает, что многие современные компиляторы не смогут работать с ней в полном объеме." (А. Александреску. Modern C++ design. 2001)
PM   Вверх
nerezus
Дата 30.12.2007, 19:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 3
Всего: 43



Цитата

 И скажите мне зачем его вводят во всех языках программирования если он "НЕ НУЖЕН ИЛИ БЕЗ НЕГО МОЖНО ОБОЙТИСЬ"???? 
 Так поэтому его в куче языков и нету ;)

Цитата

что кроме оператора goto нету ни одного оператора который бы его заменил
 Но это только в языках низкого уровня. А мы говорим про С.

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


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
Mayk
Дата 1.1.2008, 09:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 45
Всего: 134



Цитата(Albanec @  30.12.2007,  21:34 Найти цитируемый пост)

   И скажите мне зачем его вводят во всех языках программирования если он "НЕ НУЖЕН ИЛИ БЕЗ НЕГО МОЖНО ОБОЙТИСЬ"???? 

В яве реализован выход из вложенных циклов. goto там уже нет. не помню чтоб кому то из за этого приходилось страдать.
Цитата(nerezus @  30.12.2007,  23:02 Найти цитируемый пост)

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

 smile 


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
MAKCim
Дата 1.1.2008, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Mayk
логика, которую можно описать табличными переходами внутри функции
Код

static void __calculate() {
    void * table[N] = {
        &&label1, &&label2, ..., &&labelN
    };
    
label1:
...
label2:
...
labelN:
...
}

компилятор GCC

Это сообщение отредактировал(а) MAKCim - 1.1.2008, 11:00


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
nerezus
Дата 1.1.2008, 19:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 3
Всего: 43



Цитата

 smile 
 тот же самый алгоритм многомерного поиска минимума Хука-Дживса. Там есть перекрестные шаги, а алгоритм пошаговый. В целях отладни лучше юзать прогу, где 1 шаг алгоритма - 1 блок рограммы.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
SaDFromSpb
Дата 22.1.2008, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 263
Регистрация: 5.4.2006
Где: Санкт-Петербург

Репутация: 3
Всего: 3



Цитата(nerezus @  1.1.2008,  19:31 Найти цитируемый пост)
тот же самый алгоритм многомерного поиска минимума Хука-Дживса. Там есть перекрестные шаги, а алгоритм пошаговый. В целях отладни лучше юзать прогу, где 1 шаг алгоритма - 1 блок рограммы. 

Хы хы. У нас реализован алгоритм Хука-Дживса. Гоуту не используется. Хотя я еще уточню у автора, когда он подойдет.



--------------------
"За исключением части, касающейся потоков, библиотека Loki написана на стандартном языке С++. Увы, это означает, что многие современные компиляторы не смогут работать с ней в полном объеме." (А. Александреску. Modern C++ design. 2001)
PM   Вверх
nerezus
Дата 22.1.2008, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 3
Всего: 43



У меня он тоже без goto.
Просто читаемость ухудшается )


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.3114 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.