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

Поиск:

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


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


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

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



Где-то слышал, что нужно избегать глобальных переменных вообще.
Правда ли и почему?


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


Эксперт
***


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

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



Избегать нужно глобальных неконстантных переменных, ибо их изменение сложно отследить

Число Пи лучше сделать глобальной константой...


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


Архимед
****


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

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



Цитата(Rickert @  15.3.2008,  10:57 Найти цитируемый пост)
Правда ли и почему? 


Rickert, ну а ты попробуй придумать сценарий, при котором глобальные переменные будут хорошим решением ;).


--------------------
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
Дата 15.3.2008, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



archimed7592, разработка игр. Глобальные переменные: системные установки, игровой мир, профиль игрока. Теже системные установки необходимы для инициализации окна и обработки событий.


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


Explorer
****


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

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



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

так зачем им быть глобальными? можно сделать классы которые будут отвечать за конкретную часть интерфейса инициализации. Можно их сделать статическими внутри классов.


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


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


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

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



Корчое ясно. Всем спасибо!


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


Эксперт
***


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

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



Цитата(archimed7592 @  15.3.2008,  11:35 Найти цитируемый пост)
Rickert, ну а ты попробуй придумать сценарий, при котором глобальные переменные будут хорошим решением

уточню - ты о ЛЮБЫХ глобальных переменных?
имхо, я предложил 1 из сценариев, когда глобальная переменная - самое лучшее решение. ну можно еще в неймспейс Math какой-нить обернуть...


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


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


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

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



Цитата(Rickert @  15.3.2008,  10:57 Найти цитируемый пост)
Где-то слышал, что нужно избегать глобальных переменных вообще.
Правда ли и почему? 

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




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

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


Эксперт
***


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

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



если можешь, обходись без них.
если не можешь, КОНЕЧНО СТОИТ ИСПОЛЬЗОВАТЬ ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ.
ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ НЕ ЯВЛЯЮТСЯ ПЛОХИМИ. ПРОСТО НАДО БЫТЬ ОСТОРОЖНЫМ.
1
ЕСЛИ ДОПУСТИМ У ТЕБЯ ЕСТЬ ГЛОБАЛЬНАЯ ПЕРЕМЕННАЯ А И В ФУНКЦИИ ЛОКАЛЬНАЯ ПЕРЕМЕННАЯ А, ТО ДЕЙСТВИЕ ГЛОБАЛЬНОЙ ПЕРЕМЕННОЙ ПЕРЕКРОЕТСЯ ЛОКАЛЬНОЙ ПЕРЕМЕННОЙ (В ЭТОЙ ФУНКЦИИ)
2
СЛОЖНО ОТСЛЕЖИВАТЬ ИЗМЕНЕНИЕ ГЛОБАЛЬНЫХ ПЕРЕМЕННЫХ

ОДНАКО ЕСЛИ ЕСТЬ МНОГО ПЕРЕМЕННЫХ, КОТОРЫЕ НАДО ПЕРЕДАВАТЬ ИЗ ФУНКЦИИ В ФУНКЦИЮ, ТО Я, НАПРИМЕР, ИСПОЛЬЗУЮ ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ.


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

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


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


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

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



Dmi3ev

M
MAKCim
Используйте заглавные буквы по назначению!



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

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


Архимед
****


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

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



Цитата(Alek86 @  15.3.2008,  12:56 Найти цитируемый пост)
уточню - ты о ЛЮБЫХ глобальных переменных?
имхо, я предложил 1 из сценариев, когда глобальная переменная - самое лучшее решение. ну можно еще в неймспейс Math какой-нить обернуть... 

Угу, о любых. Любой объект помимо своего глобального использования ещё имеет этапы инициализации и финализации, которые необходимо контролировать(как моменты свершения этих этапов, так и процесс их протекания). Без этого контроля глобальная переменная такая же полезная вещь, как, к примеру, неинициализированная локальная переменная. Сразу оговорюсь, что константа - это не переменная smile.


Цитата(Rickert @  15.3.2008,  11:51 Найти цитируемый пост)
archimed7592, разработка игр. Глобальные переменные: системные установки, игровой мир, профиль игрока.

Возможно, что многих моё мнение шокирует, но, всё же я его выскажу(постараюсь наиболее деликатно).
Производство ПО - это целая отрасль в промышленности со своей спецификой, требованиями, ньюансами, etc.
В этой самой отрасли есть много разных областей, где правят свои законы. Дык вот, самые большие области - это enterprise & small business: в этих областях секрет успешных проектов заключается в искусстве наиболее эффективно производить легко поддерживаемое ПО, т.е. задачи всего три: 1) потратить наименьшее кол-во ресурсов(время+деньги); 2) уметь подстраивать проект также быстро, как меняются требования заказчика; 3) итоговый проект должен поддаваться поддержке минимальными силами(те же время и деньги).
Также есть др. маленькие области, но я упомяну лишь одну, а именно компьютерные игры: в этой области секрет успешных проектов заключается в искусстве максимально быстро производить полотна неподдерживаемого кода у которого всего две задачи: 1) работать; 2) жрать минимум компьютерных ресурсов. Точнее говоря, это не обязательно должны быть полотна и не обязательно неподдерживаемый код, но ввиду жесткой конкуренции получаются именно полотна и именно неподдерживаемого кода smile.
Большинство правил хорошего тона в программировании(аля "global variables is evil") просто напросто не нужны разработчикам КИ. Я не пытаюсь обидеть разработчиков игр - это просто констатация факта, которому, кстати есть простое объяснение smile. Дело в том, что, если взять, к примеру, сложную ERP/CRM. Вот заказывает крупный клиент такую систему, получает её за круглую сумму, после чего переодически выкладывает круглые суммы за развитие этой системы(параллельно с развитием его бизнеса и, соответственно, требований) и вполне можно понять, что он хочет выложить 100 у.е. и потерять 1 месяц единожды(за разработку), после чего доплачивать по 10 у.е. за поддержку(доработку) и терять около 2-3 дней, чем заплатить 50 у.е. единожды и получить результат за 2 недели, но впоследствии не иметь возможностей доработки системы... точнее говоря он имеет таковую возможность, но только в виде "заплати нам ещё раз 50 у.е. и подожди ещё 2 недели - мы добавим нужную тебе кнопку". И сравните это с КИ: вышла игрушка, побегали, пострелялись, забыли и главное, чтобы она окупилась, она должна быть интересной, красивой, и работать на большинстве компьютеров. В итоге получается, что разработчику КИ порой проще воспользоваться глобальной переменной, чем сингтоном или чем вообще максимально локализовать это состояние.



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


Опытный
**


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

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



archimed7592
соглашусь тока для маленьких игр, причем для компаний однодневок  smile 
во-первых потому, шо если компания постоянно занимается КИ, то повторно используемый код им необходим.
а во-вторых, потому шо такое детище как WOW, написать и шоб оно работало (а они его еще и поддерживают, дорабатывают)... без соблюдений правил имху не реально
плюс как многие пишут, правильно написанную прогу сделать более быстрой - обычно легко
а сделать более быструю прогу правильной - обычно трудно


Это сообщение отредактировал(а) korian - 16.3.2008, 03:27
PM   Вверх
Rickert
Дата 16.3.2008, 06:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(archimed7592 @  16.3.2008,  02:46 Найти цитируемый пост)
Также есть др. маленькие области, но я упомяну лишь одну, а именно компьютерные игры: в этой области секрет успешных проектов заключается в искусстве максимально быстро производить полотна неподдерживаемого кода у которого всего две задачи: 1) работать; 2) жрать минимум компьютерных ресурсов. Точнее говоря, это не обязательно должны быть полотна и не обязательно неподдерживаемый код, но ввиду жесткой конкуренции получаются именно полотна и именно неподдерживаемого кода 

Нет, ты ошибаешься, поверь мне. Сейчас компании ведут политику направленную на разработку движков максимально-расширяемых. То бишь движки наращивают мышцы до такой степени, что на их основе можно было делать новые игры. Разработчики КИ живут ныне продажей движков больше, чем самими играми. Сравнить, 3 года назад движок ку3 стоил 500k$, сейчас движок doom3 стоит порядка 2kk$


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


Explorer
****


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

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



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


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


Архимед
****


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

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



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

Цитата(Rickert @  16.3.2008,  06:21 Найти цитируемый пост)
2kk$

Уй ты госпади, а 2 кк - это что, предел мечтаний? Ну сколько у них будет продаж движка? И сколько они поимеют с продажи самого дума?



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


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


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

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



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


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


Эксперт
****


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

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



с глобальными переменными (и синглтонами) есть еще одни грабли... (наступал лично smile )

пусть есть глобальная переменная для записи данных в лог - CLogger Log;

и есть еще одна глобальная переменная, нужная для того что-бы что- то проинициализировать...

Код

namespace 
{
    ///Initialize windows sockets library
    class SocketsLibrary
    {
        WSADATA m_wsadata;
    public:
        SocketsLibrary()
        {
            int op_result = ::WSAStartup(MAKEWORD(2,2), &m_wsadata);
            if (op_result != 0)
            {
                throw detail::EFailure(op_result, "WSAStartup error");//умереть нах
            }        
        }
        ~SocketsLibrary()
        {
            WSACleanup();
        }
    };

    SocketsLibrary wsock_inst;//initializer instance
};


я как-то раз по наивности добавил в конструктор этого объекта вывод в лог

Код

        SocketsLibrary()
        {      Log.Write("bugaga");
            int op_result = ::WSAStartup(MAKEWORD(2,2), &m_wsadata);
            if (op_result != 0)
            {
                throw detail::EFailure(op_result, "WSAStartup error");//умереть нах
            }        
        }


последствия были плачевны, так-как переменная Log еще не была создана во время создания переменной wsock_inst...

Цитата(MAKCim @  17.3.2008,  09:44 Найти цитируемый пост)
меня просто умиляет позиция "табу" на глобальные переменные  smile 


да нет никакого табу...  smile , глобальные объекты должны быть глобальными, не важно что это - переменная константа или синглтон... просто чем таковых меньше тем проще...

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


Hacker
****


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

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



Цитата(Lazin @  17.3.2008,  11:28 Найти цитируемый пост)
//умереть нах

Цитата(Lazin @  17.3.2008,  11:28 Найти цитируемый пост)
последствия были плачевны, так-как переменная Log еще не была создана во время создания переменной wsock_inst...


Это наверно косяк проектирования, т.е. надо в нужной последовательности все инициализировать, где нить сразу после main или в конструкторе класса главного окна smile


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


Эксперт
****


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

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



SABROG, вся прелесть глобальных объектов в том, что неизвестно в какой последовательности они инициализируются.
Синглтоны призваны решить эту проблему. Подобные классы нужно инициализировать не глобально (у них же есть статический метод, доступный отовсюду), а в main() например, и в требуемой последовательности. Это позволяет вообще отказаться от глобальных переменных.
PM   Вверх
Alek86
Дата 17.3.2008, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(bsa @  17.3.2008,  11:57 Найти цитируемый пост)
Подобные классы нужно инициализировать ... в требуемой последовательности

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


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


Hacker
****


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

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



Цитата(Alek86 @  17.3.2008,  12:01 Найти цитируемый пост)
Что еще не инициализированно на тот момент и тебуется, само проинициализируется... 


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

Код

className->Instance()->write();


Где Instance() как раз инициализирует новый экземпляр класса и возвращает указатель, либо использует старый, если инициализация уже где-то была.


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


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


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

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



Цитата(vinter @  17.3.2008,  10:29 Найти цитируемый пост)
Максим но все же лучше использовать static члены класса\структуры чем глобальные переменные, принцип тот же, а ошибок можно получить в разы меньше..

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

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


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

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


Эксперт
****


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

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



Цитата(SABROG @  17.3.2008,  12:06 Найти цитируемый пост)
Ну значит у Lazina синглтон не правильно построен

у меня там только глобальные переменные, никаких синглтонов))
если-бы log был синглтоном то да, такой проблемы-бы не возникло...
PM MAIL Skype GTalk   Вверх
Alek86
Дата 17.3.2008, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



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

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

Добавлено @ 12:24
где траву берешь? ;)

Добавлено @ 12:26
Цитата(Lazin @  17.3.2008,  12:22 Найти цитируемый пост)
если-бы log был синглтоном то да, такой проблемы-бы не возникло...

ты же говорил
Цитата(Lazin @  17.3.2008,  11:28 Найти цитируемый пост)
с глобальными переменными (и синглтонами) есть еще одни грабли... (наступал лично  )

 smile 
чето я не врублюсь - наверна выспаться нужно

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


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


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


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

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



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

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

Могилевская 5/1/50


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

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


Эксперт
***


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

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



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

а я говорю с позиции нормального компилятора, который мелкие функции (делегирование и т.п.) инлайнит
если кто-то использует допотопный компилер (и он не догадается при этом поставить inline), то у него будет 0,1% уменьшение поизводительности, но, поскольку их щас почти никто не использует...

хотя, если юзать синглтон, то небольшое падение производительности будет
но альтернатива - ипаться с временем жизни - имхо, хуже

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


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


Explorer
****


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

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



Цитата(MAKCim @  17.3.2008,  13:20 Найти цитируемый пост)
засчет чего?

засчет не замещения глобальной статик члена - переменной, локальной и подавление проблем связанных с этим 


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


Эксперт
****


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

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



Цитата(Alek86 @ 17.3.2008,  12:01)
зачем в последовательности?
вся прелесть синглтона в том, что вообще о последовательности думать не нужно. "вызываешь" переменные через функции, и все. Что еще не инициализированно на тот момент и тебуется, само проинициализируется...

А как удалять этот класс? ты об этом подумал? Или ты его не удаляешь?
PM   Вверх
SABROG
Дата 17.3.2008, 13:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


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

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



Цитата(bsa @ 17.3.2008,  12:53)
Цитата(Alek86 @ 17.3.2008,  12:01)
зачем в последовательности?
вся прелесть синглтона в том, что вообще о последовательности думать не нужно. "вызываешь" переменные через функции, и все. Что еще не инициализированно на тот момент и тебуется, само проинициализируется...

А как удалять этот класс? ты об этом подумал? Или ты его не удаляешь?

А для чего удалять синглтон ? Насколько я понимаю смысл в том, чтобы он "оживал" в момент старта программы и "помирал" при выходе. А там уже сама ОС его зарубит. Я правда не знаю вызовется ли деструктор в этом случае, не работал с синглтонами, паттерны проектирования для меня пока темный лес, как и вообще тема классов в целом.


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


Эксперт
****


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

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



Цитата(Alek86 @  17.3.2008,  12:24 Найти цитируемый пост)
чето я не врублюсь - наверна выспаться нужно


Цитата(Alek86 @  17.3.2008,  12:24 Найти цитируемый пост)
если-бы log был синглтоном то да, такой проблемы-бы не возникло...

ты же говорил
Цитата(Lazin @  17.3.2008,  11:28 Найти цитируемый пост)
с глобальными переменными (и синглтонами) есть еще одни грабли... (наступал лично  )

 smile 
чето я не врублюсь - наверна выспаться нужно


если-бы я в своем примере написал

Код

       ~SocketsLibrary()
        {
            Log.Write("bugaga");
            WSACleanup();
        }

то не факт что работало-бы, даже если-бы Log был реализован как синглтон

Добавлено через 2 минуты и 3 секунды
Цитата(bsa @  17.3.2008,  12:53 Найти цитируемый пост)
А как удалять этот класс? ты об этом подумал? Или ты его не удаляешь? 

кажется мы об одном и том-же)))
Цитата(SABROG @  17.3.2008,  13:09 Найти цитируемый пост)
Я правда не знаю вызовется ли деструктор в этом случае

вызывается, и если деструктор использует другой глобальный объект, то тут опять грабли)), почитать об этом можно у Александресску...
PM MAIL Skype GTalk   Вверх
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   Вверх
Alek86
Дата 17.3.2008, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



не помню, честно говоря, где именно с "плохими словами"
для начала можно поискать в гугле по строке: "C++ is a horrible language"


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


Hacker
****


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

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



Цитата(bsa @ 17.3.2008,  18:18)
MAKCim, метеориты бывают разных размеров. Причем, далеко не все, долетающие до земли, могут быть зафиксированы заранее.

Пора статью писать на тему "Что общего между C++ и метеоритами"  smile 

Вот, что Лайнус пишет, если кто переведет смысл буду благодарен:

Цитата

From: Linus Torvalds <torvalds <at> linux-foundation.org>
Subject: Re: [RFC] Convert builin-mailinfo.c to use The Better String Library.
Newsgroups: gmane.comp.version-control.git
Date: 2007-09-06 17:50:28 GMT (27 weeks, 3 days, 21 hours and 34 minutes ago)

On Wed, 5 Sep 2007, Dmitry Kakurin wrote:

> When I first looked at Git source code two things struck me as odd:
> 1. Pure C as opposed to C++. No idea why. Please don't talk about portability,
> it's BS.

*YOU* are full of bullshit.

C++ is a horrible language. It's made more horrible by the fact that a lot 
of substandard programmers use it, to the point where it's much much 
easier to generate total and utter crap with it. Quite frankly, even if 
the choice of C were to do *nothing* but keep the C++ programmers out, 
that in itself would be a huge reason to use C.

In other words: the choice of C is the only sane choice. I know Miles 
Bader jokingly said "to piss you off", but it's actually true. I've come 
to the conclusion that any programmer that would prefer the project to be 
in C++ over C is likely a programmer that I really *would* prefer to piss 
off, so that he doesn't come and screw up any project I'm involved with.

C++ leads to really really bad design choices. You invariably start using 
the "nice" library features of the language like STL and Boost and other 
total and utter crap, that may "help" you program, but causes:

 - infinite amounts of pain when they don't work (and anybody who tells me 
   that STL and especially Boost are stable and portable is just so full 
   of BS that it's not even funny)

 - inefficient abstracted programming models where two years down the road 
   you notice that some abstraction wasn't very efficient, but now all 
   your code depends on all the nice object models around it, and you 
   cannot fix it without rewriting your app.

In other words, the only way to do good, efficient, and system-level and 
portable C++ ends up to limit yourself to all the things that are 
basically available in C. And limiting your project to C means that people 
don't screw that up, and also means that you get a lot of programmers that 
do actually understand low-level issues and don't screw things up with any 
idiotic "object model" crap.

So I'm sorry, but for something like git, where efficiency was a primary 
objective, the "advantages" of C++ is just a huge mistake. The fact that 
we also piss off people who cannot see that is just a big additional 
advantage.

If you want a VCS that is written in C++, go play with Monotone. Really. 
They use a "real database". They use "nice object-oriented libraries". 
They use "nice C++ abstractions". And quite frankly, as a result of all 
these design decisions that sound so appealing to some CS people, the end 
result is a horrible and unmaintainable mess.

But I'm sure you'd like it more than git.

    Linus



Ицточнег: http://thread.gmane.org/gmane.comp.version...643/focus=57918

git - программа контроля версий типа cvs и subversion
VCS - version control service/server

Я так понял git написан на чистом Си, а C++ ему не нравится из-за навороченности с ООП и еще речь о каких-то крашах непонятных, говорит хотите систему контроля версий написанную на C++ со всякими stl, boost'aми и т.д. юзайте monotone (еще одна cvs).

Грубо говоря ассемблер это наше всё  smile 

Цитата

It has nothing to do with dinosaurs. Good taste doesn't go out of style, 
and comparing C to assembler just shows that you don't have a friggin idea 
about what you're talking about.


Упс  smile 

И Jav'e досталось  smile 
Цитата

And if you want a fancier language, C++ is absolutely the worst one to 
choose. If you want real high-level, pick one that has true high-level 
features like garbage collection or a good system integration, rather than 
something that lacks both the sparseness and straightforwardness of C, 
*and* doesn't even have the high-level bindings to important concepts. 

IOW, C++ is in that inconvenient spot where it doesn't help make things 
simple enough to be truly usable for prototyping or simple GUI 
programming, and yet isn't the lean system programming language that C is 
that actively encourags you to use simple and direct constructs.

    Linus


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


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


Архимед
****


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

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



SABROG, он пишет, почему он выбрал именно Си для реализации Git(IIRC, дело было в 2005).
Переведу только одно предложение, наиболее резко и лаконично показывающее отношение Линуса к С++
Цитата(SABROG @  17.3.2008,  18:23 Найти цитируемый пост)
Quite frankly, even if 
the choice of C were to do *nothing* but keep the C++ programmers out, 
that in itself would be a huge reason to use C.


Цитата
Откровенно говоря, даже если бы выбор Си [как языка реализации Git] был бы обусловлен только тем, чтобы проучить С++ программистов, то это само по себе было бы очень веское основание выбрать именно Си.




Это сообщение отредактировал(а) archimed7592 - 17.3.2008, 19:01


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


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


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

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



забавно  smile 


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

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


Эксперт
****


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

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



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


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


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


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

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



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

Ты не можешь мне дать 100%-ную гарантию ничего-либо, что ещё не произошло smile Ну физические не можешь - ты не можешь учесть _все_ обстоятельства - мы всего лишь люди, а не боги smile

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

Первый вывод неверен. Ты хочешь сказать, что вероятность неинформирования тебя об этом равна нулю? smile


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


Explorer
****


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

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



кстати кто что думает об интервенции китайцев на Дальнем Востоке?


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


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


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

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



Цитата(Earnest @  17.3.2008,  19:45 Найти цитируемый пост)
что, религия запрещает скопировать ссылку в авто-переменную?

что делать в случае если он (объект, инкапсулированный в синглетон) будет уничтожен и локальная ссылка станет невалидной?  smile

Добавлено через 1 минуту и 6 секунд
Цитата(JackYF @  17.3.2008,  20:20 Найти цитируемый пост)
Ты хочешь сказать, что вероятность неинформирования тебя об этом равна нулю?

думаю, да  smile

Добавлено через 2 минуты и 7 секунд

M
MAKCim
Все, с оффтопом заканчиваем



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

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


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


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

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



синглтоны тоже не люблю. Люблю обратную инициализацию. Или как там этот паттерн называется:
Вместо
Код

Foo::bar(){
    Logger::instance().write("i am a bar!");
}
...
main(){
    Foo foo;
    foo.bar()
}

делать
Код

Foo::setLogger(Logger* l){
    loggerInstance  = l;
}
Foo::bar(){
    if( loggerInstance )
       loggerInstance->write( "i am a bar!" );
}
...
main(){
    Foo foo;
    Logger l(std::cout)
    foo.setLogger( &l )
    foo.bar()



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

Программисты настолько слабы что не могут держать в памяти всё и вся. Если программа начинает не вмешацца на экран --- ОЙ.




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


Эксперт
****


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

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



Цитата(MAKCim @  17.3.2008,  23:06 Найти цитируемый пост)
что делать в случае если он (объект, инкапсулированный в синглетон) будет уничтожен и локальная ссылка станет невалидной

Решать проблемы по мере поступления. Использование глобальной переменной здесь тоже не поможет. Если объект может исчезнуть, когда ему приспичит, нужно принимать адекватные меры - ссылки считать, например.

Добавлено через 2 минуты и 44 секунды
Mayk, дык твой вариант подлиннее получается - за шо ж его любить? smile 
Синглетоны, конечно, не панацея от всего, как и все остальное, впрочем. Каждому сверчку - по шестку.


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


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


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

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



Цитата(Earnest @  18.3.2008,  11:04 Найти цитируемый пост)
Использование глобальной переменной здесь тоже не поможет. Если объект может исчезнуть, когда ему приспичит, нужно принимать адекватные меры - ссылки считать, например.

вот пример
Код

SomeClass * variable; // global definition
...
for (...) {
    if (!variable)
        break;
    // work with variable
    // some actions
}
...

в some actions может идти, например, вызов функций, одна из которых удаляет variable (или реинициализирует (delete + new), или еще что-нибудь в этом роде)
программа однопоточная



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

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


Hacker
****


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

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



Цитата(Mayk @  18.3.2008,  07:59 Найти цитируемый пост)
    Foo foo;
    foo.bar()


Если возвращаться к теме об интервенции китайцев на дальнем востоке, то ради любопытства хотелось бы узнать как переводится слова "foo", "bar" и "foobar", гугл транслейт отжигает: "фоо", "бар".


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


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


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

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



SABROG
тут


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

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


Hacker
****


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

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



Цитата(MAKCim @ 18.3.2008,  23:15)
SABROG
тут

Спс, жалко там так и не написали "откуда есть пошла русская земля". А вообще странное у американцев понятие слова "хакер", для них это каста программистов фанатиков, а не отряд бойцов дельфистов выпущенных МГУ. У нас же это человек обязательно нарушающий статьи 272, 273

Это сообщение отредактировал(а) SABROG - 18.3.2008, 23:46


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


Эксперт
****


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

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



Цитата(SABROG @ 18.3.2008,  23:45)
А вообще странное у американцев понятие слова "хакер", для них это каста программистов фанатиков, а не отряд бойцов дельфистов выпущенных МГУ. У нас же это человек обязательно нарушающий статьи 272, 273

http://ru.wikipedia.org/wiki/Хакер

Это не у американцев странное, а у нас благодаря серости журналистов. Помню еще батя говорил мне года эдак 20-22 назад, что мечтает, чтобы я стал хакером (потому что это "высшая каста")... И об уголовщине речи вообще не шло (мне было лет 5-7).

Это сообщение отредактировал(а) bsa - 19.3.2008, 00:31
PM   Вверх
archimed7592
Дата 19.3.2008, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


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

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



Об чём угодно(и метеориты и вероятностная модель и foobar и хакеры), только не о глобальных переменных 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   Вверх
MAKCim
Дата 19.3.2008, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



archimed7592
все
теперь любой оффтоп будет караться  smile (на комодераторов и модераторов это тоже распространяется)


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

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


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


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

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



Цитата

оптимизация - это дело хорошее, но она нигде не специфицирована
даже на уровне отдельно взятого компилятора
 Какая разница? Смысл в том, что она работает, причем работает успешно.
Причем работает сама(без вмешательства пользователя).
Т.е. ни за что мы получаем ОЖИДАЕМУЮ оптимизацию.

Цитата

Число Пи лучше сделать глобальной константой...
 Число пи лучше сделать статической константой математического модуля. По крайней мере я видел всегда именно такое.


Цитата

archimed7592, разработка игр. Глобальные переменные: системные установки, игровой мир, профиль игрока. Теже системные установки необходимы для инициализации окна и обработки событий.
 Посмотри движки. Насколько я видел их, сделано оно там синглтонами или агрегацией.

P.S. Не вижу абсолютно никакого смысла в глобальных переменных. Ибо ООП.
Однако не вижу ничего плохого в их использовании(использую сам в движке своем, не завожу класс конфига, к примеру)


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


Опытный
**


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

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



Цитата(nerezus @  9.4.2008,  06:46 Найти цитируемый пост)
Число пи лучше сделать статической константой математического модуля. 

Поясни, что подразумевается под "статической константой математического модуля".
PM MAIL   Вверх
bsa
Дата 14.4.2008, 21:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(UnrealMan @ 9.4.2008,  11:29)
Цитата(nerezus @  9.4.2008,  06:46 Найти цитируемый пост)
Число пи лучше сделать статической константой математического модуля. 

Поясни, что подразумевается под "статической константой математического модуля".

Код
static const double Pi = 3.14;

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


Опытный
**


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

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



Цитата(bsa @ 14.4.2008,  21:25)
Цитата(UnrealMan @ 9.4.2008,  11:29)
Цитата(nerezus @  9.4.2008,  06:46 Найти цитируемый пост)
Число пи лучше сделать статической константой математического модуля. 

Поясни, что подразумевается под "статической константой математического модуля".

Код
static const double Pi = 3.14;

Что это - глобальная статическая константа?
PM MAIL   Вверх
archimed7592
Дата 15.4.2008, 03:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


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

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



А зачем её быть статической? Она что, только в мат. модуле используется? 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   Вверх
bsa
Дата 15.4.2008, 23:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(archimed7592 @ 15.4.2008,  03:40)
А зачем её быть статической? Она что, только в мат. модуле используется? smile

Думаю, чтобы заставить компилятор соптимизировать код  smile 
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.2818 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


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

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