По поводу обращения к неинициализированной переменной в С/С++: на сколько помню курс по С из универа - при объявлении переменнрой определенного типа за ней резирвируется место в оперативной памяти нужного размера. Но для оптимизации и ускорения выполнения значение, которое уже записано в этой области, не очищается (так, кстати, много где работает - это поведение, в частности, является причиной нашумевшей в одно время уязвимости Spectr для кучи процов Интел и немного АМД). В итоге если попробовать в программе на С обратится к такой переменной - она выдаст значение, которое было записано в памяти ранее - то есть какой-то мусор. При том оно вообще может не быть "полноценным" значением - возможно это кусок от какого-то более длинного типа
@Jeyw1n8 күн бұрын
Когда видео заканчивается так, не хватает времени, чтобы подумать о том, насколько же классным было это видео! Словно подняли глубокой ночью, облив из ведра.
@Ryazanec139 күн бұрын
Если в си создается переменная, но не инициализируется, то программа просто выделяет ячейку памяти под переменную, при этом не затирая эту ячейку памяти, что в этой ячейке хранилось раньше - неизвестно ни кому, там может быть и ноль, может быть и кусок строки и т.д, поэтому переменные в си нужно всегда инициализировать. Массив в языке си это указатель на первый элемент массива, а так как в си не запрещена матеамтика с указателями, то их можно и складывать и вычитать и по сути i[5] это прибавить к указателю число 5 - то есть сдвинуть на 5 элементов по массиву. Таким образом можно пройтись по чужим данным в памяти или вообще слить дамп оперативки. Так распаковывают запакоавнные программы для взлома - просто берут дамп памяти и ищут точку входа приложения, обрезают дамп и груба говорю распакованный экзешник у вас в руках, это очень мощный инструмент, но при неправильном использовании можно и систему в синий экран легко загнать, если не читать дамп а записать туда что то за пределами своей выделенной памяти. аким же образом ищутся значения для читов в играх, просто в оперативке ищется значение количества золота например и правится, прямо в оперативке прямо во время игры. Сейчас эти данные кодируют для защиты от такого, но найти все равно можно, если знаешь, что искать. Cоветую так же задаться вопросом nil==nil ?
@Novator_Progressive8 күн бұрын
0:57 Тут нет не чего удивительного. Значение False в базе своей соответствует числу ноль, True любому числу отличному от нуля. Именно поэтому в большинстве языков мы можем подавать чиста в if() и получать логичное поведение. В аппаратной разработке зачастую так и делают, используя числа за место True и False. 3:10 Тут тоже нет не чего удивительного. И компилятор сам значение неинициализированной переменной не присваивает (во всяком случае не всегда). Видите ли, каждая переменная располагается по определённому адресу, по которому уже могло быть какое-то значение, которое осталось от использование другими программами. Именно поэтому неинициализированные переменные чему-то равняются. По этой же причине при выходе за пределы массива мы получаем случайные (или неслучайные) значения.
@mrBars1kChannel7 күн бұрын
База
@Stan_Bu095 күн бұрын
Автор видео в глубину программирования залез, ставлю лайк
@PythonPathMaster8 күн бұрын
О) Автор узнал, что 0 - это False. Загадки природы не иначе))
@sasa-09997 күн бұрын
Клёвый видос было очень интересно, классный формат давай побольше таких видосов
@krivolap507 күн бұрын
В комментариях типы говорят, что это самая база, но они забыли, кого они смотрят.
@alexmb21229 күн бұрын
Тип данных decimal? Может проблема в «новых» программистах? Раньше задавали типы данных вручную, сейчас все рассчитывают на компилятор 🤦🏼♂️
@MafJora9 күн бұрын
2:33 Решение. Откройте Dev Tools в браузере (копка F12), вкладка "консоль". Наберите строку помеченную префиксом " >" нажмите Enter. Результат исполнения одна строка ниже: > let a = {} + []; undefined >console.log(a); [object Object]
@two-spikes9 күн бұрын
я посмотрел, не удаляй, пусть другие досмотрят
@b4shtirk1n9 күн бұрын
мдэээ, малютка мабильщик узнал про базу спустя 3 года
@binido_9 күн бұрын
ну, как факт, для того чтоб на работу попасть особо много знать не нужно
@несмак9 күн бұрын
и курсы уже продает, все по канонам )
@KKholin9 күн бұрын
Чел рассказывает про выход за пределы памяти, обосновывая это "магией". Сразу видно, собесы на сеньора тянем
@stanislav_toryanik5 күн бұрын
Уже прошло 3 года??
@KarDayy7 күн бұрын
4:10 это содержимое ячейки памяти так как С++ низкоуровневый язык программирования то он может такое позволить, и еще есть много фишек с этим
@cuberbug9 күн бұрын
О, новая душная рубрика с неожиданным поворотом в конце! Выражаю своё наидушнейшее одобрение 🐳
@Tkmtermocomplex9 күн бұрын
JavaScript может даже умножить строку на число ну например 5 х 1 пять будет строка и один будет число он выводит пять это очень странно почему он прибавляет друг другу разные типы данных кто понимает отвечайте мне
@egorleonov39598 күн бұрын
это такая база… Я за пару дней учения backend разработки это уже знал…
@dushnila_official8 күн бұрын
Прямо за пару дней? Нифига, гений, точно
@GamerGDS8 күн бұрын
чел базы не знает? если обратится за предел массива то обращение пойдёт к соседней области памяти, вот от туда и берётся значение. Язык программирования это не магия (покрайней мере не до такой степени), не берутся занчения из не от куда. В данном случае просто из соседней ячейки памяти значение взялось
@artugun15 күн бұрын
Да, но непонятно почему значения разные при вроде статичной памяти, и почему система всё-таки иногда видит что мы пробуем читать ячейку памяти не принадлежащей массиву, а иногда даёт доступ и к другим программам на редактирование. Короче странный защитник оперативной памяти, по крайней мере на linux
@DavidAbdilazizov8 күн бұрын
4:41 кто подумал что у него зависла сюда
@slavikkurganov30469 күн бұрын
5:07 поверил что KZbin зависим,даже перезагрузил его 😂
@Empty_Vima8 күн бұрын
Дожили... Мемасики теперь длиной 15 минут... и с рекламой нужно гуглу отправлять заявки на скорость х10. Хорошо есть кнопка не рекомендовать... Спасибо. Удачи.
@dushnila_official8 күн бұрын
Давай давай, плохого дня
@TigerRUS9 күн бұрын
Карен Макарен хорошо зашёл, но только одной ногой
@cyrilanisimov8 күн бұрын
По поводу примеров в плюсах - баянище. Так никто не пишет, если хотя бы учебник по плюсам почитал.
@Ais_Hunt8 күн бұрын
Хм... ну то что плюсы дают подобное вытворять, это же всё отдается на откуп программисту. А вот например уже для той же много поточности в разных языках есть свои методы синхронизации потоков исполнения, те же критические секции, симафоры, и т.д. И вроде питон умеет выполняться только в одном потоке разве нет? JavaScript - это JavaScript тут сложно что-то говорить) Ты не достаточно задушнил) Есть такая штука, точнее свод правил, MISRA, там такую хрень с наименованием ещё на этапе написания кода исключают ) Ну всё можно открывать окно.
@ishogun13658 күн бұрын
Подловил с зависшим ютубом)
@mrBars1kChannel7 күн бұрын
Чисто как развлекательный контент хорошо, но тематика программирования привлекает душнил, поэтому не лучший выбор. Просто для тех, кто в точных направлениях развивается, это звучит немного нелепо. Примерно как если бы спортсмен рассказывал другим спортстменам, что у него после тренировки рук, болят руки и это капец необъяснимая загадка спорта, хотя как бы очевидно. Ибо если учить не по видосам хаудихо, а по чем-то нормальному, то вопросов откуда берётся значение у неприсвоенной, но инициализированной, переменной, также, как и у объекта массива, выходящему за индекс, вообще возникать не будет уже в первые несколько дней изучения. Абсолютно аналогично и про false == 0 и вещественные числа. Опять же, меня всё устраивает в видео, забавно, а без кликбейта сейчас не выжить просто. Но нужно быть готовым к духоте
@Tkmtermocomplex9 күн бұрын
Ну да у всех у всех компилируемый в языках такие проблемы они не сообщают там мелочи всякие вот мелочей ошибки поэтому придётся попотеть Это не касается не только си и си плюс плюс это касается и даже java тоже такие проблемы
@TitOKChannel8 күн бұрын
Не будем нарушать традицию, по этому: алибидерчи)
@Илья-п4м3щ9 күн бұрын
1:18 не "типы данных к значениям", а наоборот...
@mop1578 күн бұрын
Ну так в джава скрипте и поэтому и есть === а надчет == то я наоборот этим пользуюсь к примеру в ситуации когда нужно проверить на 3 значения: 1 undefined 2 null 3 0 Переменную которую мы получаем может быть undefined, null, 0, number (больше 0) и поэтому просто к перемене использую || и ставлю значение по умолчанию тоесть 1, и всё так что не баг а фича) Пример херня, конечно но удалять лень)
@ejlite59008 күн бұрын
14:48 Про того самого людишку из NASA
@Tkmtermocomplex9 күн бұрын
Print(0.1+0.2==0.3) //true
@dushnila_official9 күн бұрын
На питоне онлайн компилятор выдает false
@koshkodrblg56538 күн бұрын
@@dushnila_official потому что float != decimal типу данных, во флоуте по-другому числа записываются
@Tkmtermocomplex8 күн бұрын
@@dushnila_official странно как-то
@MichaelLis8 күн бұрын
без спец. образования для самоучки, конечно, 0.1 + 0.2 != 0.3 - это магия. И математики почему-то хватаются за голову? Про IEEE 754 никто и не слышал
@Этотпсевдонимнедоступен-47 күн бұрын
7:46, а знаете, что ещё хорошо влияет на работоспособность ? Трава^^ Художники такие великолепные и безумные картины рисуют, когда обдолбанные. Ну и конечно, ничего этого нельзя применять, а ещё, бывший гендиректор МикроСофта херню предлагает.
@ЭдгарЭдгар-с4л9 күн бұрын
Эх сразу видно про многопоточку прям верхушечку коснулся, на деле если капнуть глубже, можно попасть в ад =)
@dushnila_official9 күн бұрын
Да, там можно было много чего рассказать, не стал усложнять 😅
@Kotik_Boba-9 күн бұрын
00:00 Тоже сурдина и семихатова смотришь?
@Nev_erd8 күн бұрын
Душнила теперь си плас пласник
@alangalifianakis9 күн бұрын
Новый способ заканчивать видосы на самом деле
@Tkmtermocomplex9 күн бұрын
А я думал что хороших компиляторов такие ошибки не бывает
@Ryazanec139 күн бұрын
у gcc ловил ошибку, писал прошивку под одну железку, и одна функция ни как не хотела работать правильно, хотя я раз 20 перепроверил алгоритм, но не работает и всё, плюнул, решил, что потом или разберусь или перепишу и начал писать вывод данных на дисплей, забив на функционал, и вообще не трогал странно ведущий себя кусок кода и при проверки дисплея оказалось, что кусок кода заработал как надо! я обрадовался, и продолжил писать дальше, и при разных компилляциях этот кусок кода то работал то не работал! мистика. в итоге проблему решил, перенастроив мейк файл, что бы прошивка компилировалась не на максимальную скорость выполнения, а на минимальный обьём занимаемого флеша - и всё! больше этот кусок кода ни разу не глючил, что бы я в прошивке не менял.
@gordeyvasilev8 күн бұрын
"Антропогенный" фактор (программисты)
@vasilsuarez50759 күн бұрын
ты топчик, мативируешь (я учу руский, извините за ошибки)
@mrrl379 күн бұрын
Он выучил программирование что бы душить
@Angelochek-v8o9 күн бұрын
А ты здесь ради добровольного удушения?
@mrrl379 күн бұрын
@@Angelochek-v8o Да.
@_tetto_8 күн бұрын
5:00 душнила что-то припозднился о замедлении говорить которое началось ещё с августа
@semga_moment_i9 күн бұрын
Я нечего не понял
@p1nkflow9 күн бұрын
"Необъяснимые странности" - 15 минут посредственно объясняет их
@dushnila_official9 күн бұрын
В смысле посредственно
@Этотпсевдонимнедоступен-47 күн бұрын
10:26, конечно сложение в программировании сломано, если автор не знает, что вообще-то в программировании есть разные типы данных. И для банковских вычислений никто не использует Double. Для точных вычислений есть Decimal...Float кстати тоже при сложении 0.1f+0.2F выводит 0.3 (правильный ответ). А вообще, если человек догадался, что есть разные типы данных (числовые: byte, sbyte, short, ushort, int, uint, long, ulong; С плавающей запятой: float, double, decimal;.... и многие другие), то он наверное должен был разобраться, как с ними работать. То, что какой-нибудь int хранит значения в диапазоне от -2 147 483 648 до 2 147 483 647. И 0.2 + 0.3 туда никак не поместятся.
@Luciapeters-e8y9 күн бұрын
I want to start trading cryptocurrencies but I don't know how to start. I want someone that will coach me to avoid loosing my capital.