Невменяемость - страх за подрастающие кадры.

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

Последняя правка: вс, 20/03/2011 - 23:27
Submitted by MaxImuS on

Комментарии

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

Submitted by Necro on
> а вот проблема с выделением памяти и удалением её действительно существует. Особенно когда несколько потоков "дерутся" за ресурсы.
Вот с этим как раз нет проблем у людей которые занимаются программированием. Но эта тема вообще не играет там ключевой роли.

> Ведь многие учатся на своих ошибках быстрее чем после прочтения литературы.

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

Submitted by MaxImuS on

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

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

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

Submitted by BLK Dragon on
> сейчас как-то больше принято думать гуглом и ютобом, чем мозгом

Ваша правда

Submitted by MaxImuS on
Там просто логическая ошибка. Типаint* p;
  • p=0;
  • p++;

Что теперь в том блоке памяти?

PS: Это риторический вопрос.

Там, как я уже писал, "головная" ошибка Smile

Submitted by MaxImuS on

> Что теперь в том блоке памяти?

В "том" блоке памяти 1 - вопрос в том, какой это "тот" блок Smile

Submitted by BLK Dragon on

Подвох в том, что первоначально "p" указывает на неопределенное место памяти.

> Подвох в том, что первоначально "p" указывает на неопределенное место памяти.

Риторичности в вопросе "какое значение будет в переменной" нет никакой. Как способ выявить понимание указателей -- слишком искусственно; с точки зрения отвечающего, то ли задающий вопрос идиот (не проинитил поинтер), то ли пытается подловить.

Проще попросить написать реализацию strrev -- о там всплывает всё-всё-всё, буквально в нескольких строчках кода Smile

Submitted by BLK Dragon on

Мне нравится как Microsoft вводит новые технологии. Сначала они обкатывают спецификацию на предмет выявления логических ошибок. Это ошибки, которые возникают из-за того, что повседневно-бытовая логика не согласуется с требованиями спецификации. В примере с "p" очевидно, что указатель должен куда-то ссылаться. Сознание проскакивает те пункты логических вычислений, которые очевидны, и обращает внимание только на то, на чем спотыкается мозг. В моем примере либо компилятор должен был отследить то, что БУДЕТ вестись работа над указателем, ссылающимся на неопределенную область памяти, либо объявление указателя должно было идти с обязательной инициализацией.

Кстати, компилятор Java от Sun отслеживает ВОЗМОЖНОСТЬ использования переменных до их инициализации. К сожалению, некоторые другие компиляторы написаны так, будто их создатели решили, что пользоваться ими будут только люди с деформированными мозгами. Пока будут такие компиляторы, до тех пор после общения с человеком можно будет догадаться программист он или нет.

Здрасте. Компилеры С++ (Intel,GCC и даже последние MSVC) вполне себе определяют, что: переменная используется до инициализации переменная объявлена проинициализирована но используется и ещё хренову тучу других проблем достаточно лишь включить 4/5 уровень предупреждений. А если ещё периодически запускать lint, то ещё больше интересных приколов про код находится.
Submitted by BLK Dragon on

Это в моем примере. А случай, описанный в нулевом посте, вполне логичен. Когда я выкидываю мусорное ведро с почти пустой пачкой печенья, то я ожидаю что в квартире ничего не останется. И для этого не придется сначала выкинуть оставшееся печенье, потом пачку, а потом и пакет с мусором.

Это случай может и логичен в абстрактном обсуждении (не привязываясь к личностям), но после прочтения "К примеру я загружаю 3d модель у меня выделяется 50 мегабайт потом я освобождаю память: Mesh[0]->Release(); или free(Mesh[0]) но в диспетчере задач я смотрю и память как была выделена так и осталась." становится ясно, что случай запущенный Smile Если человеку все зелено как удалять, хочу release или хочу free, то ему вообще рано даже думать, освободилось там место или нет.

Submitted by MaxImuS on

Меня убивают такие вопросы на форумах, когда авторы возьмут пример из sdk, перепишут (насуют туда своей мудистики, при это не понимая что они пишут в целом) и создают темы с названием аля "Ошибка в DirectX или MSVS2008, помогите!" Я могу помочь - расстрелять.

Submitted by MaxImuS on
Quote:
MaxImuS писал(а):
Меня убивают такие вопросы на форумах, когда авторы возьмут пример из sdk, перепишут (насуют туда своей мудистики, при это не понимая что они пишут в целом) и создают темы с названием аля "Ошибка в DirectX или MSVS2008, помогите!" Я могу помочь - расстрелять.
Ну да, такое не очень приятно. Но может чувак пришел из мира Java, тогда даже вызов Free для него дикость.
> Но может чувак пришел из мира Java, тогда даже вызов Free для него дикость.

Я тоже так подумал и спросил в начале - ответ отрицательный.

Submitted by MaxImuS on
> Это в моем примере. А случай, описанный в нулевом посте, вполне логичен. > Когда я выкидываю мусорное ведро с почти пустой пачкой печенья, то я ожидаю что в квартире ничего не останется. > И для этого не придется сначала выкинуть оставшееся печенье, потом пачку, а потом и пакет с мусором. Это полностью зависит от реализации ведра и пачки печенья (в отличие от реальной жизни, где всё типично by-instance, а не by-reference). Зачастую проще требовать явного выделения/освобождения всякого-разного, чем пытаться нагородить механизм, который автоматически сам как-то всё поудаляет (и потом через час работы создаст дикую фрагментацию памяти и всё умрёт). На самом деле фундаментальная проблема в том, что народ тупо не читает доки. Тут на форуме было пару прецедентов, когда вместо того чтоб прочитать док и сделать как написано, человек занимался шаманством _несколько_дней_.
Submitted by BLK Dragon on

Кстати на самом деле тому чуваку нужно не С++ учить а просто взять Unity и долбаться с модельками и скриптами пока не надоест. В ситуации "програмить учиться долго а игрулю ваять хочеццо вот прямо щас" -- это лучший выход дл всех Smile

Submitted by BLK Dragon on

GameDev.by