Войти
ПрограммированиеФорумОбщее

Глобальные переменные в С++ (3 стр)

Страницы: 1 2 3 4 510 Следующая »
#30
(Правка: 7:18) 7:09, 18 янв. 2021

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


#31
(Правка: 9:41) 8:16, 18 янв. 2021

Suslik

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

К сожалению, я обычный и таки делаю ошибки..

[гудифирмоде]
А мультитрединг да - вредная и мерзкая идея, приводящая к тому, что полет мысли программиста сковывается рамками возможных сайд-эффектов.
[/гудифирмоде]

Suslik
> вся концепция ФП, декларативных языков программирования и ООП построены на том,
> чтобы в различной форме избегать сайд-эффектов

И кстати, именно поэтому ФП уверенно проигрывает императивщине.

#32
9:56, 18 янв. 2021

forwhile
> чем глобальные переменные отличаются от глобальных обьектов?
В контексте данного спора это считай что синонимы.

> namespace display { namespace screen {
>
> int w;
> int h;
>
> }}
Если говно назвать повидлом, слаще оно не станет.
Глобальная переменная остаётся глобальной переменной, будь она хоть в пространстве имён, будь она хоть статическим членом класса или статической переменной функции.

#33
10:45, 18 янв. 2021

MikeNew
Глобальные переменные и локальные переменные это неотъемлемая часть языка. Их нужно использовать там где нужно, и не использовать там где не нужно. Любое приложение в себе обязательно содержит какое то количество глобальных переменных.

Глобальные переменные, обычно, работают со скоростью ниже чем локальные переменные, но выше чем переменные аллоцированные в хипе.

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

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

#34
11:30, 18 янв. 2021

jaguard
> И кстати, именно поэтому ФП уверенно проигрывает императивщине.

в чём проигрывают?

#35
12:43, 18 янв. 2021

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

#36
(Правка: 12:58) 12:58, 18 янв. 2021

xDimka
> Особенностями глобальных переменных являются то что они на этапе запуска зануляются.
Это не всегда и не везде так. От операционной системы зависит и особенностей компиляции.
Сегмент памяти может быть при загрузке не инициализирован, если в нем только не инициализированные глобальные переменные, тогда там будут не нули, а мусор. Иногда компилятор зафигачивает туда "особенные" константы вместо нулей, чтобы гарантированно взглюкнуло и нашел программист дефект. Так делает отладочная версия у микрософта.

#37
(Правка: 14:50) 14:46, 18 янв. 2021

Suslik

+ Показать
+, иногда мне кажется, что люди топящие за нечто подобное, как в данном случае использование глобальных переменных, в программах, либо не имеют опыта, либо имеют очень посредственный опыт, и как так можно программировать (ведь это на первых этапах программирования понятно), что бы не понимать этих вещей даже на начальном этапе, мне честно говоря непонятно, видимо мамкины шкодеры учатся по каким то особым материалам, по типу С++ для чайников.
#38
14:54, 18 янв. 2021

harbinger
> что люди топящие за нечто подобное, как в данном случае использование
> глобальных переменных, в программах, либо не имеют опыта, либо имеют очень
> посредственный опыт
Обычно, наоборот. С опытом приходит понимание, что чем больше кодер занимается фигней, тем хуже работает программа. Идеально крестопроблемная программа вообще не работает.

#39
(Правка: 15:06) 15:04, 18 янв. 2021

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

пока тут одно нытье, типа ну в книжках пишут что это зло.
ведь можно сделать так

void Math::ComputeSum(a, b) {
  g_SuperGlobalMainAllocator->FreeAllMemoryForApplication();
  res = a + b
}
#40
15:22, 18 янв. 2021

forwhile
> void Math::ComputeSum(a, b) {
>   g_SuperGlobalMainAllocator->FreeAllMemoryForApplication();
>   res = a + b
> }


Нет, надо так:

void Math::ComputeSum( appContext, a, b) {
 appContext->getSuperGlobalMainAllocator-FreeAllMemoryForApplication();
  res = a + b
}

Сарказм

#41
15:43, 18 янв. 2021

кроме шуток, там вполне может быть

void Math::ComputeSum(a, b) {
  res = g_SuperGlobalMainAllocator->AllocateMemoryForSum();
  *res = a + b;
}
и вот они проблемы с многопоточными приложениями уже начались.

#42
15:47, 18 янв. 2021

kipar
> проблемы с многопоточными приложениями
Все непрограммисты думают, что проблемы многопоточных приложений отличаются от проблем однопоточных.

#43
16:03, 18 янв. 2021

innuendo
> в чём проигрывают?

А в чем не проигрывают? В рынке, юзербазе, капитализации, какие ты метрики в принципе знаешь?

#44
16:09, 18 янв. 2021

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

Страницы: 1 2 3 4 510 Следующая »
ПрограммированиеФорумОбщее