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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Глобальные переменные, опасны? Нужны? 
V
    Опции темы
archimed7592
Дата 17.3.2008, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


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

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



Цитата(Rickert @  17.3.2008,  04:47 Найти цитируемый пост)
archimed7592, я занимался разработкой игр, разговаривал и вёл интервью с несколькими реально разрабатывающими движки людьми. Так что можешь мне поверить.
Давай смотреть логично.

Хорошо, я тебе верю, давай, действительно, взглянём на логику smile.
Для начала - ты говоришь, что занимался разработкой игр... Давай определимся, каких игр? Каков был их бюджет? Окупились ли они? И т.д.
Ну а теперь о твоём основном аргументе: движок наше фсё! Отлично, возможно, движёк - это "нормальный"(в моём понимании), масштабируемый код. Ну и что? Давай проведём аналогию с областью прикладного ПО: для GUI-development есть такие "движки", как VCL, Qt, .NET WF и много других. Все они с некоторого ракурса - идеал того, как нужно "правильно проектировать и реализовывать".
Теперь возмём отдельный движок: VCL. Моя личная оценка этого движка: твердая четвёрка(по пятибальной шкале), т.е. движёк очень даже хороший. И теперь скажи мне: что мешает разработчику реализовывать бизнес-логику аккурат в обработчиках событий? А ведь реализовывают... И потом такие продукты даже продаются...
Теперь вернёмся обратно к КИ - по аналогии, каким бы ни был хорошим движок, саму игру можно реализовать в любом стиле. Почему реализовывают именно в плохом стиле я писал в предыдущих постах.
Т.е., другими словами, движок - это лишь малая часть игры и это не аргумент в пользу качества кода самих игр.

Цитата(Rickert @  17.3.2008,  08:57 Найти цитируемый пост)
Программисты стали настолько слабы, что не могу контролировать процесс изменения переменных? Твои слова актуальны для крупных команд разработчиков.

Да дело не только в изменении переменных, опять же, прочитай мои предудущие посты.
Кстати, а что, КИ разрабатывают команды из 1-2 разработчиков?

Цитата(MAKCim @  17.3.2008,  09:44 Найти цитируемый пост)
меня просто умиляет позиция "табу" на глобальные переменные  smile 
я уже который раз говорю на форуме, что стереотипы мешают
нельзя на вещи смотреть однобоко 

А нет никакого табу. [6.15][6.16]

Цитата(Alek86 @  17.3.2008,  10:44 Найти цитируемый пост)
ну и archimed7592, откуда такие познания про полотна неподдерживаемого кода?  smile 

Логические умозаключения основанные на общение с несколькими разработчиками КИ, чтении форумов, посвящённых КИ и т.д.

Цитата(Alek86 @  17.3.2008,  12:24 Найти цитируемый пост)
приватный статик, который имеет функцию доступа, то он хуже глобальной переменной?

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


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
Alek86
Дата 17.3.2008, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



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

Цитата(archimed7592 @  17.3.2008,  13:19 Найти цитируемый пост)
Т.о. не хуже, но и не лучше.

лучше хотя бы тем, что легче отследить изменения в отладке.


--------------------
user posted image    user posted image
PM MAIL   Вверх
MAKCim
Дата 17.3.2008, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Alek86 @  17.3.2008,  12:36 Найти цитируемый пост)
а я говорю с позиции нормального компилятора, который мелкие функции (делегирование и т.п.) инлайнит

даже явный inline может не заставить компилятор заинлайнить функцию
о чем можно здесь говорить?



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

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


Эксперт
***


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

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



Цитата(MAKCim @  17.3.2008,  13:40 Найти цитируемый пост)
даже явный inline может не заставить компилятор заинлайнить функциюо чем можно здесь говорить?

можешь привести пример. когда компилер может незаинлайнить функцию доступа?
Код

struct S {
 static int& I() {return i;}
private:
 static int i;
};


Это сообщение отредактировал(а) Alek86 - 17.3.2008, 13:50


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


Эксперт
****


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

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



Alek86
отключи оптимизацию и она не будет заинлайнена  smile 
PM   Вверх
MAKCim
Дата 17.3.2008, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Alek86 @  17.3.2008,  13:49 Найти цитируемый пост)
можешь привести пример. когда компилер может незаинлайнить функцию доступа?

пожалуйста
Код

struct S {
     static int& I() {return i;}
    private:
      static int i;
};

int main() {
    return S :: I() = 2;
}

Код

.globl main
    .type   main, @function
main:
.LFB3:
    pushq   %rbp
.LCFI2:
    movq    %rsp, %rbp
.LCFI3:
    call    _ZN1S1IEv /* вызов нашего метода */
    movl    $2, (%rax)
    movl    (%rax), %eax
    leave
    ret

это GCC 4.1.2 без оптимизации



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

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


Эксперт
***


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

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



за что платишь, то и получаешь...

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


--------------------
user posted image    user posted image
PM MAIL   Вверх
MAKCim
Дата 17.3.2008, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



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


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

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


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


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

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



Цитата(MAKCim @  17.3.2008,  14:02 Найти цитируемый пост)
мы не можем полагаться на то, что не специфицировано, в том числе на инлайнинг  

ну, я тоже не могу полагаться на то, что завтра на меня не упадёт метеорит smile

В общем, почитал я дискуссию. Основное правило у меня такое: глобальные переменные используются только при необходимости, в основном, когда их использование существенно влияет на скорость исполнения ключевых элементов программы. Но примеров таких мало.


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


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


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

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



Цитата(JackYF @  17.3.2008,  17:00 Найти цитируемый пост)
ну, я тоже не могу полагаться на то, что завтра на меня не упадёт метеорит

не верно
я тебе даю 100% гарантию, что завтра на тебя метеорит не упадет  smile 
Цитата(JackYF @  17.3.2008,  17:00 Найти цитируемый пост)
Основное правило у меня такое: глобальные переменные используются только при необходимости, в основном, когда их использование существенно влияет на скорость исполнения ключевых элементов программы. Но примеров таких мало. 

угумс  smile 
насчет примеров, посмотри код ядра Linux
там глобальных переменных очень много
это хоть и С, но все же


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

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


Эксперт
***


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

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



Цитата(MAKCim @  17.3.2008,  17:37 Найти цитируемый пост)
я тебе даю 100% гарантию, что завтра на тебя метеорит не упадет

хоть ни в каком стандарте этого и не написано, да?
(кстати, скорее 99,999999%-ю гарантию)

Цитата(MAKCim @  17.3.2008,  17:37 Найти цитируемый пост)
посмотри код ядра Linux

както кощунственно, имхо, ориентироваться на человека (Торвальдса) который почем зря материт (в прямом смысле этого слова) C++ smile
кстати, интересно, он в памяти хранит все взаимосвязи и места изменения глобальных переменных в ядре? или на бумажке рядом?

Это сообщение отредактировал(а) Alek86 - 17.3.2008, 17:41


--------------------
user posted image    user posted image
PM MAIL   Вверх
MAKCim
Дата 17.3.2008, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Alek86 @  17.3.2008,  17:40 Найти цитируемый пост)
хоть ни в каком стандарте этого и не написано, да?

почему не написано?
метеорит ниоткуда появится не может, правильно?
если бы была потенциальная опасность для Земли, это было бы всем известно
причем известно не за один день до столкновения  smile 
отсюда вывод: гарантия 100%
Цитата(Alek86 @  17.3.2008,  17:40 Найти цитируемый пост)
както кощунственно, имхо, ориентироваться на человека (Торвальдса) который почем зря материт (в прямом смысле этого слова) C++

никогда об этом не читал
буду благодарен за ссылку
Цитата(Alek86 @  17.3.2008,  17:40 Найти цитируемый пост)
кстати, интересно, он в памяти хранит все взаимосвязи и места изменения глобальных переменных в ядре? или на бумажке рядом?

зачем что-то хранить?
тут принцип простой
либо данные полностью безопасны в плане доступа к ним (например per-cpu или атомарные данные), либо они защищены семафором/мьютексом/rw-блокировкой/...



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

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


Hacker
****


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

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



Кстати тоже хочу ссылку, где Линус материт C++. Интересно какой бы язык программирования он тогда выбрал.

Жители Припяти тоже давали 100% гарантию, что завтра они никуда не собираются уезжать, но ЧАЭС распорядилась по-другому.

Это сообщение отредактировал(а) SABROG - 17.3.2008, 18:12


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
MAKCim
Дата 17.3.2008, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(SABROG @  17.3.2008,  18:11 Найти цитируемый пост)
Жители Припяти тоже давали 100% гарантию, что завтра они никуда не собираются уезжать, но ЧАЭС распорядилась по-другому.

не надо сравнивать падение метеорита и аварию на АЭС
метеорит в отличие от аварии асинхронно упасть не может  smile 


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

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


Эксперт
****


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

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



MAKCim, метеориты бывают разных размеров. Причем, далеко не все, долетающие до земли, могут быть зафиксированы заранее.
PM   Вверх
Страницы: (6) Все « Первая ... 2 3 [4] 5 6 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

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

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

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

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


 




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


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

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