LINUX.ORG.RU
ФорумTalks

Я не программист, но...


0

2

Свежий диалог с приятелем:

(05:47:57 PM) SmartyG: щас подумал, а че будет, если инициализировать переменную и, не присвоив ей значения, вывести ее на экран, написал на с++ прогу, и как ты думаешь, что она выдала?
(05:48:37 PM) O'Stin: ты не правильно говоришь
(05:48:47 PM) O'Stin: инициализировать это присвоить какое то значение
(05:48:54 PM) O'Stin: а то что ты вначале делаешь называется объявить
(05:49:02 PM) SmartyG: ну то есть да
(05:49:12 PM) SmartyG: объявить и не инициализировать
(05:49:13 PM) O'Stin: должен быть алерт
(05:49:17 PM) SmartyG: неа
(05:49:24 PM) O'Stin: что неинициализированная переменная
(05:49:32 PM) O'Stin: значит компилятор твой говно
(05:49:37 PM) O'Stin: там может быть что угодно
(05:49:44 PM) SmartyG: может конечно так компилятор работает, но он выдал единицу
(05:49:48 PM) O'Stin: в зависимости от того, что было уже в этой ячейке
(05:50:20 PM) O'Stin: что там было до того, как ты решил ее использовать, то и будет
(05:50:29 PM) O'Stin: может 0, может и не ноль
(05:50:34 PM) O'Stin: и вообще, учи матчасть
(05:50:40 PM) SmartyG: короче единица там
Magenta Development, Senior С++ Developer, ага.

★★★★★

Ответ на: комментарий от different_thing

calloc очень полезен, если вы хотите выделить большую область памяти, а заполнять ее будете лишь частично. Хотя, можно, конечно, выделить ее malloc'ом и вручную забить нулями...

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от ostin

> Если бы его поддержала какая-нибудь крупная компания, я бы даже начал учить (для себя).
Просмотрел мельком туториал, погуглил чуток?
Вот честно, чем оно лучше плюсов + Qt? Да, именно так, конечно, поскольку в самих плюсах нет многих вещей, которые Qt туда добавляет, как бы расширяя плюсы. Только не надо разговоров о том, что кресты сложные и позволяют прострелить себе ногу, не стреляй и не прострелен будешь. Не обязательно использовать все возможности языка, просто потому что они есть. Можно использовать только то подмножество, которое хорошо знаешь и в котором хорошо ориентируешься. Если что-то все таки не так - всегда есть множество документации, от стандарта до замечательных книг Страуструппа. Ну и зачем таки нужен этот ваш Vala?

unikoid ★★★
()
Ответ на: комментарий от Raving_Zealot

> Синглтоны не нужны. Для этого есть глобальные переменные.

синглтоны нужны в языках, в которых глобальные переменные явно запрещены :))

stevejobs ★★★★☆
()
Ответ на: комментарий от stevejobs

это не чистая винда, а gcc под cygwin под виндой

Мазохизм в кубе :)

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от stevejobs

синглтоны нужны в языках, в которых глобальные переменные явно запрещены :))

Что такое синглтоны и в каких языках запрещены глобальные переменные? Я вообще не понимаю, как можно без глобальных переменных обходиться? Ведь зачастую и static недостаточно, если надо обмениваться информацией между функциями и не хочется делать 100500 аргументов у этих функций...

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Raving_Zealot

>> синглтоны нужны в языках, в которых глобальные переменные явно запрещены

Черт, не подумал :) Я больше на C++ пишу.

В С++ синглтоны тоже нужны, ибо

yoghurt ★★★★★
()
Ответ на: комментарий от Eddy_Em

>Ведь зачастую и static недостаточно, если надо обмениваться информацией между функциями и не хочется делать 100500 аргументов у этих функций

Use structures, luke!

yoghurt ★★★★★
()
Ответ на: комментарий от different_thing

> А вот можно ли делать деньги из пистона?

На аутсорсинге - вполне.

pacify ★★★★★
()
Ответ на: комментарий от yoghurt

Зачем? Допустим, одной функции нужны значения (глобальных) переменных A,B,C; другой - B,D,E; третьей - F,G,H; четвертой - F,I,J. И что, мне все эти A-J хранить в одной структуре и постоянно тягать их туда-сюда ради пары-тройки членов этой стуктуры?

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от stevejobs

Синглтоны нужны в языках, чья имплементация имеет хорошо продуманную объектную модель.
Глобальные переменные не нужны.

tia
()
Ответ на: комментарий от Raving_Zealot

Синглтон - это лучше, чем просто глобальная переменная. Почитай одноименную главу у Александреску, он там всё дословно описал

yoghurt ★★★★★
()
Ответ на: комментарий от Eddy_Em

Все эти переменные можно назвать одним словом - «контекст». Ну или «состояние». Функции, которые зависят от этого состояния (или его части) - «замкнуты» вокруг него.

Функции, которые замкнуты вокруг состояния - суть методы, а само состояние - суть объект. Вот мы и пришли к ООП

yoghurt ★★★★★
()
Ответ на: комментарий от yoghurt

Ну, как я уже многократно говорил, в ООП я не силен. Но бывают ситуации, когда реально нужно обмениваться какими-то переменными, описывающими состояние (в т.ч. и при работе в несколько потоков), но не хочется передавать это состояние структурой, содержащей 100500 переменных, ради нескольких, нужных конкретной функции...

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

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

> но не хочется передавать это состояние структурой, содержащей 100500 переменных, ради нескольких, нужных конкретной функции...

передавай указателем на эту структуру //К.О.

stevejobs ★★★★☆
()
Ответ на: комментарий от ostin

lorway

>Это Толкс, чего ты ожидал то

[жж][нацпол][возможно боян]пишу в удаленный тред

wxw ★★★★★
()
Ответ на: комментарий от stevejobs

А разве разыменование указателя на структуру и доступ к определенному ее члену не будет намного медленнее, чем просто доступ к глобальной переменной?

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

> не будет намного медленнее

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

stevejobs ★★★★☆
()
Ответ на: комментарий от stevejobs

Я не пишу графические движки, но многие мои задачи сильно критичны к времени выполнения - взять хотя бы обработку видео в реальном времени. Иногда трачу недели на то, чтобы свести к минимальному время выполнения одной несчастной функции. Вот, начал заниматься CUDA'й - возможно, с помощью GPU получится, наконец, решить кое-какие неразрешимые до этого задачи (именно из-за скорости выполнения).

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от stevejobs

>Это не чистая винда,

На лоре это как бы тавтология.

slackwarrior ★★★★★
()
Ответ на: комментарий от stevejobs

Логично, «a» же в стеке лежит, malloc его никак затирать не должен.

nanonymous
()
Ответ на: комментарий от stevejobs

А это и должно работать. В C89 переменные объявлять можно только в начале блока, но инициализировать-то можно, в том числе и функциями.

nanonymous
()
Ответ на: комментарий от DNA_Seq

>Обычно переменная при объявление инициализируется нулевым значением.

Только глобальные.

nanonymous
()
Ответ на: комментарий от yoghurt

> Синглтон - это лучше, чем просто глобальная переменная. Почитай одноименную главу у Александреску

С каких пор этот акробат стал авторитетным источником?

tailgunner ★★★★★
()
Ответ на: комментарий от different_thing

>Нужно было бы, узнал ;)

Так ты проигрываешь в «производительности» (тм) Допустим если в переменную сразу после объявления будет читаться файл нафиг ее инициализировать?

DNA_Seq ★★☆☆☆
()
Ответ на: комментарий от yoghurt

> С тех, что написал Локи, не?

Ну давай еще ссылаться на безымянных парней, которые написали MFC. Нуачо, написали же.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

Нууу, MFC - тривиальщина. А вот в Локи автор подобрался к границам Вселенной и кое-где их даже раздвинул

yoghurt ★★★★★
()
Ответ на: комментарий от yoghurt

Почитал камменты. Уныленько

Согласен, не хватает Love5un

Zodd ★★★★★
()

> что там было до того, как ты решил ее использовать, то и будет

Не программист знает это ^^? Откуда?

alman ★★★
()
Ответ на: btw, от stevejobs

>1628938183

От пересборок и перезапусков число не изменяется.


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

lodin ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.