Тёмный

Философия Unsafe Rust 

Bitωise
Подписаться 715
Просмотров 8 тыс.
50% 1

В этом ролике я расскажу о философии unsafe & safe Rust, для чего применяется ключевое слово unsafe.
----------
Поддержать: boosty.to/bitwiseuwu
Мой гитхаб: github.com/IoaNNUwU
----------
Это видео может быть интересно любому, кто интересуется системными языками программирования, любит изучать низкоуровневые концепции и работу железа - процессора, оперативной памяти, видеокарты. Если вы знаете или хотите изучить языки C++, Go, Zig - Rust станет отличным дополнением, а возможно даже сможет сместить ваш интерес в свою сторону за счёт таких преимуществ, как безопасность памяти, потокобезопасность, современный API. Rust так же станет прекрасным языком, если вы хотите лишь немного прикоснуться к системному программированию, изучить работу железа, но при этом не оставлять высокоуровневые, простые в использовании языки, такие как Python, Java, JavaScript, Kotlin, Lua.
На этом канале вы найдёте множество видео как на тему системного программирования, так и более общих концепций программирования, таких как ООП, системный дизайн и множество других тем, которые стоят того, чтобы их обсудить.

Наука

Опубликовано:

 

8 май 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 94   
@Sneg00vik
@Sneg00vik 11 дней назад
Свежий русскоязычный канал с не хелоуворлд роликами про раст? Однозначно плюс!
@rkc137
@rkc137 11 дней назад
не смотря на всеобщую демонетизацию, малый и узкоспециализированный контент переживает настоящий ренессанс
@norskiy9765
@norskiy9765 4 дня назад
Наверное потому, что ушли те, кто были за деньги, а те, кто делал все для продвижения и просвещения остались... Чисто мое предположение
@JohnDoe-js3vh
@JohnDoe-js3vh 14 дней назад
самое плохое с UB, это когда компилятор может по разному генерить код в зависимости от заданной оптимизации. То же переполнение может нормально работать в дебаг режиме, и перестать работать после релизной компиляции с включенной оптимизацией. Вот ту реально мозг может опухнуть - дебажишь код - всё работает компилишь релизную версию - всё ломается.
@MrPusyakaryagin
@MrPusyakaryagin 10 дней назад
Было дело, что при выставлении высокой оптимизации gcc падал с segmentation fault, так до сих пор код на проде и работает с низкой оптимизацией.
@ac130kz
@ac130kz 4 дня назад
а еще веселее, когда автору сего поделия глубоко с высокой колокольни, что его код глючит на -O3 и при этом нормально работает на -O2, хотя часто это кричащий индикатор UB
@zoodogood
@zoodogood 14 дней назад
Спасибо, пересматривал видео несколько раз, приятно слушать и материал проработанный
@fake-lavash
@fake-lavash 13 дней назад
Хорошее видео, желаю удачи с развитием канала :>
@B1TLotus
@B1TLotus 14 дней назад
Желаю удачи и набрать много много подписчиков, давай больше нам Rusta❤
@user-mi6kq5ff8r
@user-mi6kq5ff8r 13 дней назад
Хороший материал, комментарий в поддержку канала
@white5493
@white5493 9 дней назад
очень круто. если в видео будет больше практики, то будет имба. потому что так лучше понятнее
@covid-2284
@covid-2284 14 дней назад
Это прям круто! Так и продолжай
@norskiy9765
@norskiy9765 4 дня назад
Где информацию по расте брал? Какой у тебя был бэкграунд до раста?
@user-ml4vl8rk6o
@user-ml4vl8rk6o 13 дней назад
Интересно было слушать. Как проводятся проверки времени выполнения кода на примерах rust и c. Просто с помощью функций time?
@bitwiseuwu
@bitwiseuwu 12 дней назад
На самом деле пример в видео несколько приукрашен, потому что очень сложно сравнить производительность именно с функцией print, поскольку скорость функции print_el упирается не в доступ к элементам, а в ввод-вывод. А если рассматривать пример без print, то можно просто сравнить сгенерированный ассемблер, например здесь ( godbolt.org/z/1no3oPKzf ) видно что раст генерирует проверки (ну или просто видно, что в раст много больше инструкций) и ассемблер включает вызовы core::panic::panic_bounds_check для проверки доступа, а здесь ( godbolt.org/z/bcTozj3qh ) добавив условие len < 3, мы видим очень похожий список инструкций от обоих языков.
@user-ml4vl8rk6o
@user-ml4vl8rk6o 12 дней назад
@@bitwiseuwu я мало понимаю в ассемблере и такой низкоуровневой теме, правильно ли просто сказать что там больше кода и поэтому Раст медленнее?
@bitwiseuwu
@bitwiseuwu 12 дней назад
​@@user-ml4vl8rk6o Вообще-то больше интрукций не всегда медленнее, скорее надо смотреть на род инструкций, именно условия (инструкции test, cmp, je) замедляют код. Версия раст генерирует эти условия, а С - нет.
@user-ml4vl8rk6o
@user-ml4vl8rk6o 11 дней назад
@@bitwiseuwu понятно, спасибо
@specwnm
@specwnm 10 дней назад
Ооо, маловато в ру комьюнити растеров-ютуберов. Удачи тебе!
@user-el4ht5xi9i
@user-el4ht5xi9i 14 дней назад
12:59 кажется инварианты это другое, не "состояния, в которых структура не может находиться", а скорее наоборот
@bitwiseuwu
@bitwiseuwu 14 дней назад
Почему же, например инвариант структуры NonZeroU32 - это то, что она не находится в состоянии, когда её внутреннее число равно 0. Инвариант мутабельной ссылки - нет такого состояния, когда существует ещё одна. Инварианты структур можно описать именно так, но соглашусь, что определение не полное и инварианты - это также правила для отдельных unsafe функций. Тут я скорее пытаюсь объяснить происхождение слова инвариант - то есть не вариант - вариант, который не принимает структура.
@nikita_x44
@nikita_x44 13 дней назад
инвариант структуры это набор корректных состояний, в которых она может находиться.
@user-bh2ot5ks8f
@user-bh2ot5ks8f 5 дней назад
2:44 Это с какими опциями оптимизации надо компилировать для такого результата!?
@user-bh2ot5ks8f
@user-bh2ot5ks8f 5 дней назад
Если честно, в rust такого накрутили, что порой элементарные алгоритмы не получается реализовать недельного курения материалов
@zenderlor2669
@zenderlor2669 10 дней назад
отличное видео
@AntiNEGAtivchik
@AntiNEGAtivchik 8 дней назад
Здравствуйте, подскажите что делать изучал раст знаю времена жизни почти полностью прочитал раст бук(дальше вряд ли буду читать там уже по мелоче) Стоит ли продолжать писать на расте мне 14 лет, системное программирование не интересует от слова совсем. Посоветуйте что-то пожалуйста, буду рад ответу!
@mister-ace
@mister-ace 7 дней назад
если системное программирование не интересует, то не стоит, тем более на расте практически невозможно найти работу, а если и можно, то там только блокчейн; короче, лучше потратить время на более реалистичный язык.
@AntiNEGAtivchik
@AntiNEGAtivchik 7 дней назад
@@mister-ace мне еще до работы 5-6 лет учиться.
@tgitw-tq6iu
@tgitw-tq6iu 7 дней назад
Идёшь изучать тайпскрипт, а после если осилишь переключаешься на цпп. В тс много концепций из цпп, либо похожих на цпп.
@bitwiseuwu
@bitwiseuwu 7 дней назад
Я думаю, что для устройства на работу реалистичнее учить например Go, работу на нём можно найти даже в крупных российских компаниях, а знать надо не очень много. Знания Rust если не позволят устроиться на работу, то прокачают понимание работы железа, что будет явным преимуществом при трудоустройстве. Так же непонятно где будет Rust через 5-6 лет - возможно и не будет такой проблемой устроиться.
@tgitw-tq6iu
@tgitw-tq6iu 7 дней назад
@@bitwiseuwu Можешь мне рассказать каким образом раст связан с железом, если он в принципе никакого отношения к железу не имеет и собирается через цпп-компилятор и работает в рамках цппешной виртуальной машины. Как там в параллельной вселенной? Уж если говорить про железо, то го куда ближе к железу. Потому что имеет прямую с ним связь, свою модель исполнения, свой компилятор и прочую атрибутику того что имеет связь с железом в реальности, а не фантазиях.
@andrew_chumakov
@andrew_chumakov 3 дня назад
Подписался. Пили ещё видео по расту 👍
@user-cm8pe1zb3h
@user-cm8pe1zb3h 9 дней назад
Как насчёт видео про async/await?
@bitwiseuwu
@bitwiseuwu 9 дней назад
Обязательно будет! Но думаю сначала стоит сделать ролики по базовым концепциям, чтобы не сломать людям голову
@norskiy9765
@norskiy9765 14 дней назад
А я не любитель раста!!! Я любитель Си!!! Послушай песенку "write in C", советую тебе P.s (коммент для продвижения видео, написать просто что-то надо)
@B1TLotus
@B1TLotus 14 дней назад
👍👍👍
@user-qd9lh5vw9i
@user-qd9lh5vw9i 5 дней назад
Крутой видос!
@rybiizhir
@rybiizhir 9 дней назад
Что-то со звуком, в произношении есть посторонние частоты которые бьют в перепонку уха.
@Serhii_Volchetskyi
@Serhii_Volchetskyi 11 дней назад
Internal mutability еще есть. Почему он существует? Почему не unsafe вместо него?
@bitwiseuwu
@bitwiseuwu 10 дней назад
Обязательно будет про это видео, на самом деле interior mutability - это красивое название для обхода ограничений языка с помощью unsafe кода.
@DART2WADER
@DART2WADER 10 дней назад
Приветствую всех сектантов секты Rust! 😀😃
@gilman2056
@gilman2056 3 дня назад
Подпишусь для кол-ва, буду посматривать, в чем смысл раст
@ilyasokolov9058
@ilyasokolov9058 9 дней назад
А будет как вызвать UB в safe Rust?)))
@bitwiseuwu
@bitwiseuwu 9 дней назад
Это запретная тема, поэтому будем её игнорировать
@ilyasokolov9058
@ilyasokolov9058 9 дней назад
​@@bitwiseuwu А кто запретил?) Мне кажется, кто номикон читал, этим уже не напугаешь. Не зря там большой алерт перед чтением весит, что ваша жизнь не будет прежней 😁
@morglod
@morglod 7 дней назад
Нее. В расте нет UB!! И в ансейфе нет UB больше чем в си!! (Сарказм)
@sibkit8183
@sibkit8183 13 дней назад
Rust на практике решает проблему UB за счет производительности и использования памяти, попробуйте сделать универсальную структуру дерева (TreeNode) :либо Rc либо арена. Может когда-нибудь они допилят борроу чекер, но сегодня его строгость - большая проблема. По моему лучшим решением было бы решать проблемы UB в режиме отладки, с возможностью отладчика выявлять опасные места. По такой концепции идет zig, но он еще очень сырой, и вроде как есть специальные аллокаторы и методики для c/c++, а раст - это огромная плата за безопасность сложностью и производительностью.
@bitwiseuwu
@bitwiseuwu 12 дней назад
Я согласен, но уверен, что многие предпочтут именно отсутствие UB любой ценой, тем более такая ли высокая цена по производительности? Это надо смотреть в каждом отдельном случае. А насчёт сложности я считаю, что использовать Rc проще, чем в ручную заниматься менеджментом всех указателей, ведь в случае ошибки мы получим панику, а не UB. На самом деле иногда Borrow Checker только мешает, деревья - отличный пример, ведь добиться множественного владения в Rust не просто, в связи с этим возникает мысль о том, что следует развивать unsafe Rust, чтобы он мог стать альтернативой Zig. Но я всё же остановлюсь на том, что далеко не весь код состоит из деревьев и жертвовать безопасностью в остальных сферах из-за нескольких неудачных мест не хотелось бы.
@nanoqsh
@nanoqsh 11 дней назад
Для того, чтобы писать базовые структуры данных по типу деревьев и прочих коллекций - нужен unsafe. Это не баг, а фича. Так ты с одной стороны получаешь минимальный оверхед, а с другой стороны полностью safe публичный api, благодаря которому ты можешь использовать свою структуру данных не парясь на счёт UB и без необходимости дебажить каждый новый код, написанный с твои деревом. Это намного проще, так как большая часть прикладного кода спокойно пишется полностью без unsafe-а. Да, придётся запариться и написать структуру данных и хорошо её протестировать, чтобы ансейфти никуда не утекло. Так что без своего любимого отладчика никуда не денешься
@nanoqsh
@nanoqsh 11 дней назад
И ещё, зачем тебе Box внутри Rc? Это бесполезная двойная косвенность. Rc уже проще. К тому же, честно говоря, RefCell на практике реально нужен очень редко. Та же арена куда более лучшее решение
@sibkit8183
@sibkit8183 11 дней назад
@@nanoqsh dyn any имеет неизвестный размер во время компиляции, поэтому только RefCell - это же азбука раста, стыдно не знать. А без refcell ничего не выйдет, т.к ссылка на ноду уже есть в другой ноде, без refcell весь смысл пропадает. Арена это тоже не так просто, когда дойдет до итерации по дочерним узлам, получается очень тормозная штука, раз в 10 медленнее чем тоже самое на любом другом языке, включая java и go.
@sibkit8183
@sibkit8183 11 дней назад
@@bitwiseuwu UB согласен, но раст ведь дает не единственно возможный способ избежать UB. В попытке разобраться с этим borrowchecker я добрался до трейтов DispatchFromDyn и CoerceUnsized, и после этого как-то подостыл к расту. Неоправданно большие трудозатраты для борьбы с borrowchecker-ом. Проблема UB должна решаться другим способом, например отслеживанием узких мест во время отладки.
@user-nv3cn9dj5x
@user-nv3cn9dj5x 7 дней назад
В своей сфере Red Team & Malware development вижу что многие пытаются на расте что то писать. Выглядит отвратительно. Почти весь код в unsafe блоке. Очень многие вещи нельзя сделать. Например я не знаю как в расте заставить положить всю строку на стек(не указатель, а именно весь массив). Вместо того чтобы в .rdata ее располагать. Метапрограммирование и compile time в расте гораздо хуже развито. Я не могу очень многие вещи сделать которые на Плюсах делаются через различные трюки. Раст хорош пока он safe rust. С небольшими выходами на unsafe. Но когда у тебя 90% в unsafe. Стоит задуматься об использовании гораздо более удобного, понимаемого и дающего больший контроль языка, Си или плюсы. Писать Windows kernel Mode драйвер на раста это глупость.
@tgitw-tq6iu
@tgitw-tq6iu 7 дней назад
Что значит "меньше развито"? Его там в принципе не существуют как и системы типов, которая осталась где-то в доисторической эпохе несмотря на тысячи костылей. Всё это обычно путают с макроснёй неотлаживаемой томрозной и всегда неработающий. А в safe rust, хотя такой существует только в головах понятно кого, всё ещё хуже. Рескин сишки еле-еле позволяет байты месить на базовом уровне(дальше этого мало кто ушёл), а вот дальше большие проблемы.
@tgitw-tq6iu
@tgitw-tq6iu 7 дней назад
Да и писать какие-нибудь круды проще чем лоулевел потому что это круды, а не потому что раст/иной язык. Хотя о выразительной способности ходят легенды.
@zaczac6914
@zaczac6914 11 дней назад
а как быть с тем что 70% опытных сотрудников потом исправляют свои ошибки? и в 99% случаев не пишут код с первого раза верно?
@zerdox4
@zerdox4 8 дней назад
лол. к нам менеджер пробрался?
@zaczac6914
@zaczac6914 8 дней назад
@@zerdox4 может быть да может быть нет....
@tgitw-tq6iu
@tgitw-tq6iu 8 дней назад
Враньё про уб на примере функции с переполнением из раст-методички. Если твои вычисления с интами где-то переполняются, то смысла в твоих вычислениях нет - они неправильные. Поэтому ссылаться на то что какое-то уб что-то там делает. Никакого уб там нет, а просто банальный вывод. Ты всегда предполагаешь что твои вычисления не переполняются, если они выдают корректный результат. А уж то, что стандарт не определяет связано именно с этим в основном, а уже во вторую очередь с оптимизациями, переносимостью и прочим. Просто, опять же, невежество и ретрансляция поверий из интернета.
@CaiN805
@CaiN805 13 дней назад
Вообще ничего не понял, но видно, что автор разбирается в теме
@bitwiseuwu
@bitwiseuwu 13 дней назад
😭А что помешало понять? Я предполагаю, что непонятно будет тем, кто вообще незнаком с языком Rust и не представляет что это за язык. Я стараюсь делать так, чтобы понятно было тем, кто хоть что-то слышал о системных языках и игрался с самим Rust. Может сделать видео типа «Что такое Rust», но мне казалось, что заинтересованные уже давно прознали про этот язык.
@CaiN805
@CaiN805 13 дней назад
@@bitwiseuwu я не знаком с rust, думал видео будет больше на новичков рассчитано, но видимо, расчет на опытных пользователей, что тоже хорошо, такие видео тоже нужны. Видео про «Что такое Rust» я бы с радостью глянул от знающего человека, вы явно разбираетесь в теме.
@uwu3798
@uwu3798 11 дней назад
​@@bitwiseuwu привет) я работаю джуном на TS, но интересуюсь другими языками, так что какое-нибудь лёгкое видео по типу что такое Раст было бы интересно)
@kuqmua755
@kuqmua755 9 дней назад
то что синтаксис доступа к индексу массива паникует по дефолту - огромный минус. это должен быть Option или Result. либо вообще отказываться от этого синтаксиса и написать функцию которая может вызвать панику при доступе. паника не должна вызываться неявно с помощью языковых конструкций
@tgitw-tq6iu
@tgitw-tq6iu 8 дней назад
Он не паникует по дефолту. Просто у тебя программа падает везде и всегда. Никакой option/result он быть не может потому что это мусор. Как ты далее сделаешь выражение с этим доступом? `arr[x] + y`? Никак. Да и вообще рассуждать о чём-то в контекста раста не имеет смысла. Всё это сделано чтобы врать, а не чтобы этим пользоваться. Ну и да, стоит не забывать что если бы цпп делал тоже самое, то это бы не считалось и было бы проблемой.
@bitwiseuwu
@bitwiseuwu 8 дней назад
Для массивов существует специальная функция .get(index), которая возвращает Option. Паника по дефолту - это на мой взгляд вполне хороший подход, ведь выход за границы массива - это наверняка баг, поэтому делать явным обработку бага было бы странно.
@bitwiseuwu
@bitwiseuwu 8 дней назад
@@tgitw-tq6iu Я вот не пойму, это шутка или ты просто решил комментариев накрутить?
@tgitw-tq6iu
@tgitw-tq6iu 8 дней назад
@@bitwiseuwu push в вектор тоже баг?
@kuqmua755
@kuqmua755 2 дня назад
@@bitwiseuwu я прекрасно знаю про .get(index). Про панику по дефолту - не соглашусь, вызывающий вашу функцию и программу должен всегда знать на уровне типов где и как она может зафейлится. В случае паники он просто может не знать что ему с этим делать. Ведет к потере информации и невозможности автоматически ее обработать. Это особенно критично когда вы используете ffi и не пишите на расте сами. Плюс паника в цикле может вести к потере информации при тяжелых вычислениях. Одна паника - и все вычисление коту под хвост
@tgitw-tq6iu
@tgitw-tq6iu 8 дней назад
Эта смесь невежества и обрывков определений. Уб существуют в си не из-за оптимизаций, не из-за "нелепых случаев" и прочих фантазий, а из простого факта. Стандарт не может определять поведение для всех возможных случаев. Точно так же как какая-нибудь скорость света определяется в вакууме, а всё остальное уб. Определению и ненужно определять её во всех возможных средах.
@bitwiseuwu
@bitwiseuwu 8 дней назад
Ну это же просто неправильно. Стандарт на то и стандарт, что именно он определяет поведение языка и сделать он может это для всех возможных случаев, но специально часть случаев упускает. Компиляторы подстраивают свою реализацию под этот стандарт, не существует какого-то "факта" неопределённого поведения.
@tgitw-tq6iu
@tgitw-tq6iu 8 дней назад
@@bitwiseuwu Хорошо, если для языка нужен стандарт, который определяет всё - где стандарт для раста? Получается любая строчка кода на расте УБ ведь там нет определения из стандарта. К тому же зачем ты что-то пишешь, если ничего не понимаешь? Стандарт в принципе не способен определять поведение - это невозможно. Как невозможно определить скорость света для всех сред о чём тебе сказали выше.
@tgitw-tq6iu
@tgitw-tq6iu 8 дней назад
Никакой раст не решает никакую проблему. Тебя обманули. Раст не допускает УБ потому что он находится вне области определения этого понятия.
@anonsd5521
@anonsd5521 11 дней назад
Лучше уж рисковать, наткнутся на неопределённое поведение, через кровь пот и слезы найти ошибку, но зато больше его не допускать, чем позволить компилятору языка решать за тебя, какое поведение лучше.
@bitwiseuwu
@bitwiseuwu 11 дней назад
Легко сказать «больше не допускать», это ведь не так прост, тем-более в случае с UB можно даже никогда не узнать, что оно присутствует. А компилятор раст просто делает обязательным то, что в C++ считается очень хорошей практикой - а именно чёткая модель владения.
@anonsd5521
@anonsd5521 10 дней назад
@@bitwiseuwu Я думаю если проблема присутствует, то программист должен её видеть при тестирований. Я понимаю в чём недостатки подхода возложить всё на программиста, но не могу не могу игнорировать его плюсы.
@user-qt5hy3vn5p
@user-qt5hy3vn5p 9 дней назад
@@anonsd5521 аниме на аве - мать в UB канаве
@tgitw-tq6iu
@tgitw-tq6iu 8 дней назад
Никакое условие if не сравнивает производительность кода. Ты врёшь. Даже если там что-то сравнялось это просто следствие того что оптимизатор цпп-компилятора смог убрать проверки. Но работает это только в примитивных примерах. К расту никакого отношения не имеет. К тому же такой код никто не пишет.
@tgitw-tq6iu
@tgitw-tq6iu 8 дней назад
Далее он опять врёт о том что нужен язык си для взаимодействия с ОС. Никакой язык си ненужен для взаимодействия с ОС. Си просто может с ней взаимодействовать, а ты нет. И поэтому ты используешь си. Как и жава. И чтобы оправдать свою неспособность ты врёшь. Из этой чуши не следует существование ансейфа. Ансейф существует только потому что никакого сейф-раста и гарантий фентезийных тоже. Это не полноценный язык даже по меркам жаваскрипта. Поэтому его область применения крайней ограничена и на самом деле неявно вызывает тысячи ансейф-кода(да, да написанного на расте). Примерно точно так же как питон. А т.к. это пастве знать необязательно создаются легенды про "нужно си для ОС", "нужен ансейф для какой-то лоулевел работы". Всё это враньё.
@tgitw-tq6iu
@tgitw-tq6iu 8 дней назад
Врёт про "причина всегда в ансейф-блоке". Это, мало того, что не имеет смысла. Ведь причина чего-либо всегда в коде, который написан снизу, а не сверху. А враньё это не поэтому, а потому что никакой баг никогда в ансейф-блока не ищется. Просто данный персонаж скрипторебёнок, который ничего не знает. Проблема как раз таки в окружающем коде и том как разные блоки взаимодействуют друг с другом. Инвариант существуют в коде выше и в том как ты его вызываешь, а не в блоке. Здесь он тоже наврал. И эти нарушения ищутся в коде выше, а не в блоке.
@tgitw-tq6iu
@tgitw-tq6iu 8 дней назад
Опять враньё про панику. То, что паника сделана поверх ворованных у цпп-компилятора исключениях(потому что раст собирается цпп-компилятором) это не означает возможность восстановится. Исключения нужно не просто украсть, а реализовать код таким образом чтобы он был корректен. Никакой раст код не является таковым. Аналогично паника ничем не отличается от УБ. Во-первых потому что паника уже УБ просто это понятие не определяется. Ты так же не знаешь кода и где твоя паника вылетит и что произойдёт с программой. Да и работает она просто потому, что раст собирается конкретным цпп-компиляторов для которого всё это не является УБ. Вообще применение этого понятия к расту некорректно. И всё состояние твоей программы после паники УБ в отличии от цпп после исключения. Опять же если код безопасен для исключения, а цпп он безопасен, а в расте нет.
@tgitw-tq6iu
@tgitw-tq6iu 8 дней назад
Какой же клоун на 18минуте рассказывающий про какие-то инварианты в ансейфе и то, что это не си. Да, это не си. Потому как си в 10раз надёжнее. 70% дыр в расте связано не си и не с фетезийными уб, а с самим растом. Здесь он просто бездумно повторяет какие-то лозунги. Раст не отслеживает чтения/записи. Там уб. Об этом написано даже в документации, а именно: let x: i32 = unsafe { MaybeUninit::uninit().assume_init() }; // undefined behavior! Если удалить код с for никакой ошибки не будет и будет уб. Потому что ансейф всегда уб и ничего не проверяет. И уб здесь даже не потому что си, а потому что раст.
@tgitw-tq6iu
@tgitw-tq6iu 8 дней назад
Ансейф полностью выключает все проверки. Здесь опять автор повторяет старые мантры. Самое смешное, что буквально несколько секунд назад он это демонстрировал. Опять врёт про какую-то ОС, которая использует какой-то язык си. Никакой ос не использует язык си.
@tgitw-tq6iu
@tgitw-tq6iu 8 дней назад
И того. 22 минуты вранья. Я не увидел даже минимально-адекватных лозунгов.
@tgitw-tq6iu
@tgitw-tq6iu 8 дней назад
Уже спустя 20 секунды ты соврал. Никакой раст не гарантирует отсутствие уб в сейф-коде. Далее ещё раз соврал. Уб понятие стандарта си. Какое отношение он имеет красту? Какое поведение раста определено в стандарте си? Никакое
@tgitw-tq6iu
@tgitw-tq6iu 8 дней назад
В мс не работают лучшие программисты. Откуда ты взял такую глупость? Статистика от конъюнктурщиков ничего не стоит. Никаких 70% там нет это всё враньё. Эта заявления ни на чём не основаны и пруфов никаких нет. Я тебе могу хоть 100% вывести потому что любая ошибка в принципе по определению связана с памятью. А знаешь почему? Потому что программа всё что и делает - это месит память. Там даже не про ошибки написано, а про ошибки безопасности. Но, опять же, все ошибки связаны с памятью. По определению.
@MuradBeybalaev
@MuradBeybalaev 8 дней назад
Вы своей ржавчиной колетесь для того чтобы обколовшись выкинуть из языка единственное полезное что в нём было - безопасность памяти - чтобы теперь уже и колоться и ронять память?
@bulatvaliakhmetov
@bulatvaliakhmetov 8 дней назад
раст это шутка, раст для идиотов написал кто-то
Далее
Экстремальный Rust
21:39
Просмотров 3,8 тыс.
How to ALWAYS WIN "Guess Who"
01:00
Просмотров 816 тыс.
OPENSOURCE НЕ БЕЗОПАСЕН? (2024)
17:20
Просмотров 17 тыс.
Убийца python go и rust
5:50
Просмотров 12 тыс.
So You Think You Know Git - FOSDEM 2024
47:00
Просмотров 935 тыс.
СЛОМАЛСЯ КОМП HYPER PC
1:00
Просмотров 79 тыс.
wyłącznik
0:50
Просмотров 13 млн
Китайская зарядка❌НЕЛЬЗЯ
0:24