- 13
- 59 497
Bitωise
Russia
เข้าร่วมเมื่อ 9 พ.ย. 2023
Rust ♡
Поддержать: boosty.to/bitwiseuwu
Телеграм (канала): t.me/bitwiseuwu
Мой гитхаб: github.com/IoaNNUwU
Связь со мной:
Телеграм (личный): web.telegram.org/k/#@ioannuwu
Почта: ioannxd@gmail.com
Поддержать: boosty.to/bitwiseuwu
Телеграм (канала): t.me/bitwiseuwu
Мой гитхаб: github.com/IoaNNUwU
Связь со мной:
Телеграм (личный): web.telegram.org/k/#@ioannuwu
Почта: ioannxd@gmail.com
Как работает UTF-8 и зачем нужен Unicode
В этом ролике я расскажу про стандарт ASCII, стандарт UNICODE, а также об их реализации - UTF-8, UTF-32 в языках C и Rust.
----------
Поддержать: boosty.to/bitwiseuwu
Телеграм канал (+ чат): t.me/bitwiseuwu
Мой гитхаб: github.com/IoaNNUwU
----------
Это видео может быть интересно любому, кто интересуется системными языками программирования, любит изучать низкоуровневые концепции и работу железа - процессора, оперативной памяти, видеокарты. Если вы знаете или хотите изучить языки C++, Go, Zig - Rust станет отличным дополнением, а возможно даже сможет сместить ваш интерес в свою сторону за счёт таких преимуществ, как безопасность памяти, потокобезопасность, современный API. Rust так же станет прекрасным языком, если вы хотите лишь немного прикоснуться к системному программированию, изучить работу железа, но при этом не оставлять высокоуровневые, простые в использовании языки, такие как Python, Java, JavaScript, Kotlin, Lua.
На этом канале вы найдёте множество видео как на тему системного программирования, так и более общих концепций программирования, таких как ООП, системный дизайн и множество других тем, которые стоят того, чтобы их обсудить.
----------
Поддержать: boosty.to/bitwiseuwu
Телеграм канал (+ чат): t.me/bitwiseuwu
Мой гитхаб: github.com/IoaNNUwU
----------
Это видео может быть интересно любому, кто интересуется системными языками программирования, любит изучать низкоуровневые концепции и работу железа - процессора, оперативной памяти, видеокарты. Если вы знаете или хотите изучить языки C++, Go, Zig - Rust станет отличным дополнением, а возможно даже сможет сместить ваш интерес в свою сторону за счёт таких преимуществ, как безопасность памяти, потокобезопасность, современный API. Rust так же станет прекрасным языком, если вы хотите лишь немного прикоснуться к системному программированию, изучить работу железа, но при этом не оставлять высокоуровневые, простые в использовании языки, такие как Python, Java, JavaScript, Kotlin, Lua.
На этом канале вы найдёте множество видео как на тему системного программирования, так и более общих концепций программирования, таких как ООП, системный дизайн и множество других тем, которые стоят того, чтобы их обсудить.
มุมมอง: 4 481
วีดีโอ
Замыкания и функциональные трейты в Rust
มุมมอง 2.5K2 หลายเดือนก่อน
В этом ролике я расскажу про функциональные указатели, замыкания и их трейты в Rust: - FnOnce - FnMut - Fn Расскажу про их применение, производительность и какой трейт стоит выбрать Поддержать: boosty.to/bitwiseuwu Телеграм канал ( чат): t.me/bitwiseuwu Мой гитхаб: github.com/IoaNNUwU Это видео может быть интересно любому, кто интересуется системными языками программирования, любит изучать низк...
Лайфтаймы в структурах Rust
มุมมอง 1.9K2 หลายเดือนก่อน
В этом ролике мы продолжим разговор про лайфтаймы, рассмотрим правила работы с ними в структурах. Поддержать: boosty.to/bitwiseuwu Телеграм канал ( чат): t.me/bitwiseuwu Мой гитхаб: github.com/IoaNNUwU Это видео может быть интересно любому, кто интересуется системными языками программирования, любит изучать низкоуровневые концепции и работу железа - процессора, оперативной памяти, видеокарты. Е...
Дженерики и Трейты в Rust
มุมมอง 2.8K3 หลายเดือนก่อน
В этом ролике я расскажу про дженерики и трейты в языке Rust. В языке Rust существует 2 вида дженериков, ассоциированные типы считаются сложными, но в этом ролике я расскажу, почему они должны быть вам более привычными. Поддержать: boosty.to/bitwiseuwu Телеграм канал ( чат): t.me/bitwiseuwu Мой гитхаб: github.com/IoaNNUwU Это видео может быть интересно любому, кто интересуется системными языкам...
Крейты и модули в Rust
มุมมอง 3.8K4 หลายเดือนก่อน
В этом ролике я расскажу про крейты и модули. Система крейтов нужна для удобного менеджмента зависимостей, ведь любой проект в Rust является крейтом. Система модулей нужна, чтобы разделить крейт на отдельные логические части, которые можно располагать как в одном и том же файле, так и в других. Поддержать: boosty.to/bitwiseuwu Телеграм канал ( чат): t.me/bitwiseuwu Мой гитхаб: github.com/IoaNNU...
Все Умные указатели в Rust
มุมมอง 4.8K5 หลายเดือนก่อน
В этом ролике я расскажу про умные указатели и сопутствующие им структуры, такие как: - Box - Arc, Rc - Mutex, RwLock, RefCell, Cell - UnsafeCell Поддержать: boosty.to/bitwiseuwu Телеграм канал ( чат): t.me/bitwiseuwu Мой гитхаб: github.com/IoaNNUwU Это видео может быть интересно любому, кто интересуется системными языками программирования, любит изучать низкоуровневые концепции и работу железа...
Rust без Наследования
มุมมอง 7K6 หลายเดือนก่อน
В этом видео я расскажу о реализации наследования в Rust, почему нам приходится думать о нём и как без сложностей перевести свой код с объектно-ориентированных языков на Rust. Поддержать: boosty.to/bitwiseuwu Телеграм канал ( чат): t.me/bitwiseuwu Мой гитхаб: github.com/IoaNNUwU Это видео может быть интересно любому, кто интересуется системными языками программирования, любит изучать низкоуровн...
Полиморфизм не снижает производительность
มุมมอง 5K6 หลายเดือนก่อน
В этом ролике я расскажу о полиморфизме, его видах и способах реализации как в системных, так и объектно-ориентированных языках. По запросам зрителей я всё же сделал бенчмарки. Результат: реализация через enum быстрее в 2, а иногда и в 6 раз: github.com/IoaNNUwU/poly-bench Поддержать: boosty.to/bitwiseuwu Телеграм канал ( чат): t.me/bitwiseuwu Мой гитхаб: github.com/IoaNNUwU Это видео может быт...
Философия Unsafe Rust
มุมมอง 11K7 หลายเดือนก่อน
В этом ролике я расскажу о философии unsafe & safe Rust, для чего применяется ключевое слово unsafe. Поддержать: boosty.to/bitwiseuwu Телеграм канал ( чат): t.me/bitwiseuwu Мой гитхаб: github.com/IoaNNUwU Это видео может быть интересно любому, кто интересуется системными языками программирования, любит изучать низкоуровневые концепции и работу железа - процессора, оперативной памяти, видеокарты...
Экстремальный Rust
มุมมอง 6K7 หลายเดือนก่อน
В этом видео я напишу свой Аллокатор, который работает с любым массивом байт, который пользователь предоставил по уникальной ссылке. Так же я покажу один из способов применить этот аллокатор в ходе решения задачи с сайта leetcode. В этом видео я так же немного затрону работу оперативной памяти, адреса, размеры и выравнивание (alignment) структур. Видео так же будет интересно любому, кто интерес...
Времена жизни в Rust
มุมมอง 5K9 หลายเดือนก่อน
В этом видео мы поговорим о временах жизни в языке программирования Rust. На эту тему в интернете существует огромное количество материала, но каждый понимает её по-своему - в основном неправильно. Я постарался собрать и передать максимально простым способом основную суть времён жизни, или лайфтаймов в Rust. Для этого хорошо подходит визуализация: - синий прямоугольник обозначает время жизни ст...
Начала итераторов в Rust
มุมมอง 3.3K9 หลายเดือนก่อน
В этом видео мы поговорим об основах итераторов в языке программирования Rust: Зачем нужны итераторы, какие есть виды итераторов (отличия методов iter, iter_mut и into_iter в API вектора), как их правильно использовать. Поддержать: boosty.to/bitwiseuwu Телеграм канал ( чат): t.me/bitwiseuwu Мой гитхаб: github.com/IoaNNUwU Это видео может быть интересно любому, кто интересуется системными языкам...
Когда лучше использовать Mutex, а когда каналы? Вроде каналы могут тоже самое,за исключением того,что нам не нужно следить за открытием и закрытие mutex'а.
Про наследование trait было сказано? (я не всё смотрел)
2:13 В данном случае нет необходимости использовать вызов виртуальной функции, поэтому ускорения не будет. Эта особенность Go нужна для надёжности, а не для ускорения.
Действительно, очень большая разница в скорости выполнения match и динамического вызова. Видимо, условный переход ускоряется спекулятивным выполнением. При большем числе вариантов разница должна уменьшиться.
Привет, будет ли видео про Рабочие пространства в Rust? (Workspace) не совсем понял её при чтении растбука. Поэтому хотелось бы видеть её в примерах на твоём канале
от таких видосов чото аж на расте хочется писать
предлагаю глобальное решение проблемы - оставить 1 язык (в идеале русский) выкинуть нах всякую чушь типа эмодзи и тогда все символы уместятся в 1 байт.
Умный мужик, счас таких мало. Надо подписаться)
Вот из-за таких судаков проблема с сортировкой
Отличные видео! Жду каждый новый ролик) А ещё жду какой-нибудь патреон или бусти
Без концепции UB невозможно писать наиболее производительный код. Конечно, ты можешь постоянно проверять, будет ли обращение по индексу выходом за границы массива, но достаточно посмотреть сколько инструкций в скомпилированном коде будет занимать такой вариант, и у тебя отпадет желание так делать. Когда программист пишет код там, где UB допускается, он подписывает контракт с компилятором, где обязуется не вызывать его, а компилятор за это компилирует наиболее быстрый/легковесный результат
А точно компилятор память очищает?
Помню мне в универе нужно было реализовать хеш функцию sha-256, для меня было не приятным сюрпризом, что в utf-8 переменная длина символа, в деталях не помню как я проблему решил, но помню что пришлось запариться не слабо
Очевидно, глупый вопрос... 1:50, в раст совсем нет копирования? В плане передача по значению в плюсах означает копирование, но в видео дальше говорилось, что везде владение да заимствование. Т.е. передача аргумента в функцию по значению означает передачу владения и... расширение lifetime'а? Или всё же оговорка и копирование есть, а объект не проживёт дольше скоупа мейна?
Я раст не знаю, но вроде там тип должен реализовывать трейт Clone и передача в функцию должна явно делать вызов clone print_var(myVar.clone()) клонирование может быть "дорогим" если это структура данных на тысячи миллионы элементов
Качество объяснения на высоте
Спасибо огромный. Посмотрыл все видео И чётко понял. Очень жду видео по async/await. Не понятно как работает они
Эээх... Было время когда строчки для меня были всего-то последовательностью символов😢 Желаю всем задач без строк, ну или хотя бы без разных кодировок.
Круто, я думал они отличаются просто количеством символов, которые могут закодировать. Кстати, а что на счёт UTF-16?
Узнал про ООП больше чем за месяц изучения. Спасибо ❤
Я сам не на расте, а на плюсах, но видосы у тебя оч интересные и красивые. Продолжай в том же духе!
Получится двухбайтных символов всего 2048, трехбайтных 65536 и четырехбайтных чуть больше 2 миллионов?
миллиардов
2^32 ~ 2e9
@@dimbo4ka213 там минимум 2 байта-маркера в начале каждого символа и ровно два в каждом следующем байте этого символа.
@@dimbo4ka213 2^7 + 2^11 + 2^16 + 2^21 Там управляющие байты
I don't understand Russian but I think you are a good teacher. I understand it even though.
Странно, что стороной обойдён UTF-16, на который завязаны WinAPI. Ведь именно из-за UTF-16 в Unicode всего миллион, а не 4 миллиарда кодовых точек.
а utf-16 ?
Большое спасибо
Хорошее видео, информативное! Очень хотелось бы, увидеть всё об ECS, с примерами, или реализацию настоящего сервера, актуальная тема на Rust... Спасибо!
Спасибо! Я не знал что UTF-32 - фиксированной ширины
3:48 ну так это зависит от того как ты строки в своем коде реализуеш. ты можеш свою реализацию строк сделать без этой херни. ибо strlen оч медленый. можно передавать длину строки отдельным аргументом вместе с указателем на строку
ььььььь
В том же Pascal строка содержит свою длину в первой ячейке массива, и strlen работает за константное время. В Delphi чуть сложнее, что тоже длина строки известна заранее
@@German_1984 только в паскале фиксированная длина строки.
База
Не стоило тащить эмодзи и прочий экзотический хлам в Юникод. Они же до сих пор выпускают новые версии и добавляют приколюшечки. Уложились бы в 2 байта, UTF-16 хватило бы всем. По поводу проблемы размера - при передаче обычно применяется сжатие, нужно тестировать разные его варианты.
Все компьютерные и сетевые стандарты придуманы в США. Для них обратная совместимость UTF-8 с ASCII является массивным выигрышем. А проблемы индейцев, не использующих латинский алфавит, шерифа как водится не волнуют. Хотя UTF-16 и UTF-32 тоже много где применяются. В частности в языках программирования длины символов как правило фиксированные. Раст в этом плане выделяется на фоне. Но зато нативные UTF-8 строки дают возможность читать/писать файлы и отправлять/принимать по сети строки без перекодирования, что может давать заметный выигрыш в производительности.
Китайский 100000 иероглифов. Не помещается.
@@vasiliigulevich9202 40 000-80 000
В UTF-16 один символ может занимать как 2, так и 4 байта. Вы пишите про UCS2
Поинтересуйся сколько языков и сколько в каждом букв ... ну или чтоб проще - поинтересуйся сколько иероглифов в китайском, а он такой не один.
Это полная шиза ...
В чем причина подрыва?
это жиза
Мне бы это видео лет 7 назад, когда я пытался во всём этом разобраться во втором Пайтоне...
👍 👍 👍
Yes
Только начал изучать Rust по этому понял не много. Оставлю тут коммент чтобы пересмотреть позже.
как сделать ссылку с лайфтаймом 'self, допустим структура владеет строкой, или Box<str> и вторым полем я хочу сослаться на подстроку, тоесть использовать &'self str? я для этих целей использовал Range<usize>. слышал, что это не простая задача из-за move-семантики, но хотелось бы видео на эту тему
Скорее всего сделаю видео на эту тему когда буду подбираться к async Rust. Там типы с ссылкой на себя всплывают часто. Реализуется это через стандартный тип Pin, так что можно прочитать про него
В с++ переменную со стека можно передать в функцию по указателю & или по референсу вместо того чтобы копировать
4:59 обожаю этот момент в Rust. Ссылка конечно неизменяемая, но менять в теории ты можешь.
это называется архитектурный костыль)
Если хотя бы немного знаете английский, то рекомендую еще посмотреть видео на канале Logan Smith про функции, оно называется "Rust Functions Are Weird (But Be Glad)". Там хорошо показана разница между замыканиями и указателями на ф-ции.
Очень информативно, спасибо тебе! Было бы круто, если бы видосы выходили где-нибудь еще типа вк видео/рутуб/дзен/телега.
Насколько же понятно, качественно и наглядно всё здесь показано. Одна из самых сложных тем раскрыта на все 100%, таким понятным и приятным глазу форматом. Лайк и большое уважение автору.
Очень нравится шрифт, что это?
Этот шрифт называется Consolas, также могу порекомендовать шрифт JetBrains Mono и шрифты Гитхаба
на меня тока сейчас сошло озарение - нафига было делать поддержку поинтеров на функции - это же полный ub без возможности проверки на безопастность. и нужен этот ub только в трёх случаях - оська jit и ffi для либы чтобы скрывать исходники и обфскурить все до асма - в иных случаях все указатели на функции зарание известны в компайл тайме описать этот указатель можно одним из этих состояний - в этом случае можно сохранить колво озу на поинтерах на функции - особенно интересно в каких-нибуть с плюсах ( хотя мб там это так и реализованно хз ), а так же уменьшить кол-во ub до минимума
База
Ок
А слушай, а как ты нарыл такую инфу, что замыкания - это структура и тд, можешь плиз поделиться ресурсами, и было бы прикольно, если в каждом видосе оставлять, а-ля на доп чтение и тд)
Постараюсь в будущем оставлять источники! Про технические детали реализации написано в Rust Reference - doc.rust-lang.org/stable/reference/types/closure.html
Я кажется в первый раз слышу термин функциональный указатель, обычно говорят указатель на функцию. Даже в английском это function pointer, а не functional pointer
Тоже резануло слух
Сложное объяснение.
Хорошее видео, мне понравилось. Интересно будет если автор выпустит видео, где и как он обучался Rust и какой у него опыт.