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

Поиск:

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


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

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



archimed7592, а теперь посмотри сколько уже народа купило движок unreal 3 и сколько куплено копий того ж gears of war.


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
vinter
Дата 16.3.2008, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


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

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



Цитата(archimed7592 @  16.3.2008,  12:09 Найти цитируемый пост)
Rickert, vinter, извиняюсь, я забыл дописать, что спорить на этот счёт у меня нет ни времени, ни какого-либо желания.

я думаю ты еще забыл добавить "ни аргументов"


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


любитель
****


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

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



Цитата(Rickert @  16.3.2008,  06:21 Найти цитируемый пост)
стоил 500k$, сейчас движок doom3 стоит порядка 2kk$ 

извините за оффтопик и неграммотность, но 500k$ и 2kk$ это сколько в нормальной (у.е.) валюте?


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


Explorer
****


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

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



Цитата(mes @  16.3.2008,  15:03 Найти цитируемый пост)
извините за оффтопик и неграммотность, но 500k$ и 2kk$ это сколько в нормальной (у.е.) валюте?

к это 000


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


любитель
****


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

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



Цитата(vinter @  16.3.2008,  14:08 Найти цитируемый пост)
к это 000 

спасибо - чуствовал что так, но что то не верилось ... придется поверить ))


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


Архимед
****


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

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



Цитата(vinter @  16.3.2008,  11:20 Найти цитируемый пост)
я думаю ты еще забыл добавить "ни аргументов" 

Да, vinter, я никогда не работал в индустрии КИ и моё мнение - лишь догадки. ОК, а ты работал? А кто работал? smile
Выходит, ни у кого из нас аргументов нет. smile


--------------------
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   Вверх
Rickert
Дата 17.3.2008, 04:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

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



archimed7592, я занимался разработкой игр, разговаривал и вёл интервью с несколькими реально разрабатывающими движки людьми. Так что можешь мне поверить.
Давай смотреть логично. Взгляни на тот же Crysis и gears of war - два мостодонта, которым нужны 4 ядерные процессоры и triple sly карты от Nvidia + несколько гигов оперативки. Движки, на которых они написаны настолько монструозны, что старшно думать. Но они полностью раширяемы и независимы - из них моржно слепить любую игрушку, и я думаю даже не прибегаю к перекомпиляции исходников, имея на руках только SDK - во всяком случае так можно сделать на движке третьего дума. Помнится когда ещё была якобы-ворованная альфа версия - я сам лично разбирал его движок и писал статьи для doom3.ru - они там ещё есть, можешь почитать. Ищи поиском по автору - [ss]3L33T@ aka Cyber Optik. В данный момент, например, на его основе пишется мод - гонки, переработка на тему Carmageddon'а. Короче о чём я: народ пишет масштабируемые движки, которые стоят хренову тучу бабла и потом начинают его продавать и никто не заботится о производительности: применяют эти дурные (ИМХО! Я сам их применяю, потому что требуют стандарты, будь моя воля я б выкинул все эти stl и дурные правила по инкапсуляции кода. Это ИМХО - не надо на меня нападать!) правила и никто не думает о производительности - вот так и получаются Crysis'ы, которые идут у 25% игроков. КИ - это уже давно как шоу-бизнес - на нём делают деньги, а золотые времена, когда игры приносили удовольствие и восторг от идей - прошли, сейчас единицы способны что-либо придумать.


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
Mayk
Дата 17.3.2008, 07:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Rickert @  17.3.2008,  08:47 Найти цитируемый пост)
выкинул все эти stl и дурные правила по инкапсуляции кода. Это ИМХО - не надо на меня нападать!)

Это не "имхо". Это бред.

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

йа сморел исходнеги кваг и крестиков нолигов, так что можешь мне поверить smile  smile

Добавлено через 6 минут и 29 секунд
Цитата(Rickert @  15.3.2008,  14:57 Найти цитируемый пост)
Правда ли и почему? 

Да потому что они глобальны и могут поменятся в любой момент. Не очень хорошо может сказаться при отладке(мол где ж она изменилась-то?)
(утрированный пример: сравнить
Код

void foo(){for( i = 0; i < 91; ++i ) {bar(); gar(); dar();}}
void bar(){for( i = 0; i < 91; ++i ) {gar();}}

и
Код

void foo(){for( int i = 0; i < 91; ++i ) {bar(); gar(); dar();}}
void bar(){for( int i = 0; i < 91; ++i ) {gar();}}

на кол-во вызовов ф-ций dar();
)
, с многопоточностью плохо подружить.

Цитата(Dmi3ev @  15.3.2008,  19:49 Найти цитируемый пост)
ОДНАКО ЕСЛИ ЕСТЬ МНОГО ПЕРЕМЕННЫХ, КОТОРЫЕ НАДО ПЕРЕДАВАТЬ ИЗ ФУНКЦИИ В ФУНКЦИЮ, ТО Я, НАПРИМЕР, ИСПОЛЬЗУЮ ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ. 

ССЗБ


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


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

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



Цитата(Mayk @  17.3.2008,  07:32 Найти цитируемый пост)
Да потому что они глобальны и могут поменятся в любой момент. Не очень хорошо может сказаться при отладке(мол где ж она изменилась-то?)

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

Я не собираюсь тебя убеждать в чём-то. Делай как знаешь, это было имхо.
Цитата(Mayk @  17.3.2008,  07:32 Найти цитируемый пост)
йа сморел исходнеги кваг и крестиков нолигов, так что можешь мне поверить 

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


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
vinter
Дата 17.3.2008, 08:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


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

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



Цитата

когда игры приносили удовольствие и восторг от идей - прошли, сейчас единицы способны что-либо придумать.

не все так печально, если бы все было так то игры бы загнулись давно.
Цитата

 никто не думает о производительности - вот так и получаются Crysis'ы, которые идут у 25% игроков.

а как по твоему NVidia & AMD деньги зарабатывать, зачем тогда нужны слай и кроссфаер? Да и что то я подозреваю, что там не специально сделали неоптимизированный движок, а просто графика движется вперед и жрет все больше ресурсов.


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


Эксперт
****


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

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



archimed7592
Цитата(Mayk @  17.3.2008,  07:32 Найти цитируемый пост)
Это не "имхо". Это бред

поддерживаю)))

Цитата(Rickert @  17.3.2008,  04:47 Найти цитируемый пост)
Это ИМХО - не надо на меня нападать!) правила и никто не думает о производительности - вот так и получаются Crysis'ы, которые идут у 25% игроков.

да, все из-за STL  smile ,... просто качество графики и задачи решаемые движком этой игры видимо объективно высоки)))
посмотри код Ogre3D или Irrlicht, там хватает и смарт поинтеров и контейнеров и шаблонов))
почитай что пишут профессиональные разработчики игр...

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

Я однажды имел счастье доделывать программу, в которой было около 30 глобальных переменных, которые использовались в разных функциях, в итоге получалось так, что меняя что-нибудь в одном месте, ломалось в другом, разные части программы очень сильно друг от друга зависили...
О том что-бы что-то там распараллелить, расширить и тд не могло быть и речи.. короче просто переписал все))) теперь вспоминаю с содроганием...


Цитата(Rickert @  17.3.2008,  08:57 Найти цитируемый пост)
Флаг в руки, транспорант тебе на шею, только между тобой и мной есть очевидная разница

и хорошо  smile , не всем же быть такиме матерыми game-developer-ами.

ИМХО,
Современная разработка игр - это в первую очередь разработка контента, движок для каждой игры никто не пишет... 
А к движкам требования очень высокие, они как правило используются во множестве игр, они кросс-платформенные(PC и консоли), расширяемые и тд... и очень грамотно написаны... например unreal стоит 3 миллиона баксов, чуваки написавшие Irrlicht говорят что он нереально крут и стоит своих денег более чем, unreal 3 это не только графичесский движок, это еще и игровой движок, и АФАИК, целая среда разработки... от разработчиков игр требуется только создать контент  smile 
PM MAIL Skype GTalk   Вверх
MAKCim
Дата 17.3.2008, 09:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



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


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

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


Explorer
****


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

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



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

Максим но все же лучше использовать static члены класса\структуры чем глобальные переменные, принцип тот же, а ошибок можно получить в разы меньше..

Добавлено через 48 секунд
Цитата(Lazin @  17.3.2008,  10:31 Найти цитируемый пост)
ИМХО,Современная разработка игр - это в первую очередь разработка контента, движок для каждой игры никто не пишет... 

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


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


Эксперт
***


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

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



MAKCim, ну подскажи, плиз, в какой ситуации глобальные переменные (не константы) выигрывают у тех же статиков с функциями доступа? Ну, кроме прог-лабораторных, на пару десятков строк...


Rickert, как я понял, ты утверждаешь, что игры (точнее движки) должны писаться хорошо? Тогда там точно глобальных переменных не будет smile
Цитата(Rickert @  15.3.2008,  11:51 Найти цитируемый пост)
 Глобальные переменные: системные установки, игровой мир, профиль игрока. 

Если они будут хоть немного друг от друга зависеть, то перечитай еще раз:
Цитата(archimed7592 @  16.3.2008,  02:46 Найти цитируемый пост)
Любой объект помимо своего глобального использования ещё имеет этапы инициализации и финализации, которые необходимо контролировать(как моменты свершения этих этапов, так и процесс их протекания). Без этого контроля глобальная переменная такая же полезная вещь, как, к примеру, неинициализированная локальная переменная.



ну и archimed7592, откуда такие познания про полотна неподдерживаемого кода?  smile 


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


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

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



Глобальные переменные не имеют никаких преимуществ перед, например, синглетонами (которыми их следует по-возможности, заменять) кроме одного: их можно очень быстро добавить и использовать. Т.е. глобальные переменные - это способ сделать костыль, когда нужно быстро, а дизайн иного не позволяет. Но подлежат впоследствии редизайну.
Кстати, статические переменные класса в этом смысле ничуть не лучше - только имя другое, а суть та же.
ИМХО, статические переменные вполне хороши в локальном контесте (один - несколько модулей, связанных с реализацией какой-то функциональности); если речь идет о каких-то глобальных установках, которые нужны всем - лучше все собрать в кучку и выдавать по запросу - вместе или по отдельности, как удобнее. 
Это, кстати тоже вопрос инкапсюляции, как и открытый доступ с членам классов. Регламентированный доступ всегда лучше.

Цитата(Lazin @  17.3.2008,  10:31 Найти цитируемый пост)
Я однажды имел счастье доделывать программу, в которой было около 30 глобальных переменных, которые использовались в разных функциях, в итоге получалось так, что меняя что-нибудь в одном месте, ломалось в другом, разные части программы очень сильно друг от друга зависили...
О том что-бы что-то там распараллелить, расширить и тд не могло быть и речи.. короче просто переписал все))) теперь вспоминаю с содроганием...

Вот-вот, в эти  грабли никто не верит, пока сам не наступит.

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





--------------------
...
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
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.1101 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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