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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> так ли страшен goto, как его малюют? за и против goto 
:(
    Опции темы
azesmcar
Дата 14.3.2009, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


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

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



Цитата

подолью масла в огонь
я вот вообще не представляю себе жизнь без goto: в С он незаменим (не в плане того, что его нельзя заменить как синтаксическую конструкцию)
с кем-то спорить и что-то доазывать не собираюсь, т. к для меня это очевидно и 100 раз пройдено на практике
кто не согласен, на 95% уверен, что они не программировали на С серьезные вещи


а кто тут несогласен??? мы тут о C++ разговаривали..

Цитата

Ёшкин кот, сколько можно ?!


как-то плавно перешли, никто специально не начинал  smile 
PM   Вверх
MAKCim
Дата 14.3.2009, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(azesmcar @  14.3.2009,  17:07 Найти цитируемый пост)
мы тут о C++ разговаривали..

в С++ его использование не приведет ни кчему хорошему в большинстве случаев, но не потому, что goto плох как средство, а потому, что объектная модель С++ мало совместима с непоследовательным выполнением кода через goto

о чем спор?  smile

Добавлено через 3 минуты и 38 секунд
противникам goto на засыпку привожу код из ядра linux
плюйтесь на здоровье
тут
 smile 


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

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


uploading...
****


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

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



Цитата

в С++ его использование не приведет ни кчему хорошему в большинстве случаев, но не потому, что goto плох как средство, а потому, что объектная модель С++ мало совместима с непоследовательным выполнением кода через goto

о чем спор?  smile


вот я о том же говорил  smile

Цитата

Добавлено через 3 минуты и 38 секунд
противникам goto на засыпку привожу код из ядра linux
плюйтесь на здоровье


код ядра линукс написан на С, и в нем оправдано использование любого оператора С который приведет к повышению производительности (ядро все таки)..но тема C++ называлась (с которой эту тему срезали).

Это сообщение отредактировал(а) azesmcar - 14.3.2009, 18:11
PM   Вверх
MAKCim
Дата 14.3.2009, 19:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(azesmcar @  14.3.2009,  18:10 Найти цитируемый пост)
и в нем оправдано использование любого оператора С который приведет к повышению производительности

я хотел обратитьвнимание на контекст использования  smile 


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

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


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


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

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



Цитата

а теперь представьте при 5ти уровневом (или более) вложении циклов  
 В реальном проекте хоть раз было больше 3 уровней? =)

Цитата

про юнион все и забыли  
 Полиморфизм решает проблему =)

Цитата

try/catch
рекомендуется использовать только для отлова ошибок. 
 Ну почему же?) Сразу питон вспоминается =)


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


uploading...
****


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

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



Цитата

Полиморфизм решает проблему =)


простите, не понял..а как может решить полиморфизм, проблемы которые решает union?
примеры использования union описаны тут.
http://forum.vingrad.ru/forum/topic-251056.html

Цитата

Ну почему же?) Сразу питон вспоминается =) 


ну..одно дело питон, другое С++. Питон я никогда не использовал, даже с синтаксимом не знаком, так что промолчу..но вот исключения в С++
Цитата

рекомендуется использовать только для сообщения/отлова ошибок. 

и никоим образом для того чтобы вернуть значение из рекурсивной функции к примеру. (Я попробую найти цитату у Саттера)

Это сообщение отредактировал(а) azesmcar - 16.3.2009, 07:48
PM   Вверх
MAKCim
Дата 16.3.2009, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



union и goto достаточно низкоуровневые средства
в С они используются очень часто
goto в C++ опасен, а примеров использования union в C++ я встречал достаточно мало


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

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


Исследователь
**


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

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



 smile 
MAKCim, я раньше дого думал, как можно на с эмулировать объектную млдель, но исходники линукса показали этот фокус во всей красе))))


--------------------
"Звонким вереском скроются наши следы, и не вспомнят о них. Кто поверит нам, рыцарям павшей звезды из отвергнутых книг? Пусть в узоре времен ни стихов. ни имен, но напомнит забывшим их полуночный крик." Тэм Гринхилл
"Ужели суслик твоего коварства нагадит в плов доверья моего?". Л.Филатов 
PM MAIL WWW ICQ   Вверх
MAKCim
Дата 17.3.2009, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



 smile 
Цитата(Severyanin @  17.3.2009,  05:25 Найти цитируемый пост)
я раньше дого думал, как можно на с эмулировать объектную млдель, но исходники линукса показали этот фокус во всей красе)))) 

угу
основной фокус
Код

struct base
{
};

struct derived
{
    // фокус в этом месте
    struct base base;
};

static inline struct derived *get_derived(struct base *base)
{
    return (struct derived*)base;
}



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

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


Эксперт
****


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

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



Цитата(MAKCim @ 14.3.2009,  17:15)
противникам goto на засыпку привожу код из ядра linux
плюйтесь на здоровье
тут
 smile

Я хоть и не ярый противник, но за это бы убил. Это каким же нестандартным мышлением надо обладать, чтобы написать такое. Ощущение, что кто-то это списывал с ассемблера (сам когда перевожу асм в си подобные конструкции временно горожу, но потом всегда привожу в норму).
Код
if (queue->input_pkt_queue.qlen) {
enqueue:
   __skb_queue_tail(&queue->input_pkt_queue, skb);
   local_irq_restore(flags);
   return NET_RX_SUCCESS;
}

napi_schedule(&queue->backlog);
goto enqueue;
Так как можно переписать:
Код
if (!queue->input_pkt_queue.qlen)
   napi_schedule(&queue->backlog);

__skb_queue_tail(&queue->input_pkt_queue, skb);
local_irq_restore(flags);
return NET_RX_SUCCESS;

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


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


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

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



Цитата(bsa @  19.3.2009,  00:34 Найти цитируемый пост)
но за это бы убил.

я бы то же
хоть я и люблю goto, но прыгать в условие - это семантически неверно
Цитата(bsa @  19.3.2009,  00:34 Найти цитируемый пост)
Ощущение, что кто-то это списывал с ассемблера

исключено


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

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


Эксперт
****


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

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



Подозреваю, что в ядре линукса в большинстве случаев goto используется не из-за необходимости, а по неопытности программиста, который писал этот код.
PM   Вверх
MAKCim
Дата 19.3.2009, 01:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(bsa @  19.3.2009,  00:52 Найти цитируемый пост)
Подозреваю, что в ядре линукса в большинстве случаев goto используется не из-за необходимости, а по неопытности программиста, который писал этот код. 

хм
весьма спорно


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

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


Эксперт
****


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

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



Цитата(GoldFinch @ 14.3.2009,  01:30)
а что скажет общественность о конструкции

Код

... foo(...) 
{
  ...
  if (...) goto cleanup;
  ...
  if (...) goto cleanup;
  ...
cleanup:
  ...
};

Данный код вообще элементарно преобразовать:
Код
... foo(...) 
{
  ...
  do {
    if (...) break;
    ...
    if (...) break;
    ...
  }while(0);
  ...
};
Причем, я уверен, что любой компилятор не будет генерировать код для while(0), так как заранее очевидно, что он [код] не нужен. Правда, наглядности данный код не сильно прибавляет (если даже не уступает).
PM   Вверх
MAKCim
Дата 21.3.2009, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(bsa @  20.3.2009,  13:07 Найти цитируемый пост)
Данный код вообще элементарно преобразовать:

а вот тут не согласен

код с goto предпочтительнее, т. к он более наглядный и сразу видно, для чего он нужен (cleanup)


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

PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила ведения Религиозных войн
Smartov
1. Уважайте собеседника
2. Собеседник != враг
3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez"

С уважением, Smartov.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Религиозные войны | Следующая тема »


 




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


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

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