Типизированные массивы в JavaScript

  Рет қаралды 8,214

Timur Shemsedinov

Timur Shemsedinov

5 жыл бұрын

Примеры кода: github.com/HowProgrammingWork...
Курс «100 лекций по программированию» habr.com/post/427799/
#javascript #массивы #программирование #лекции

Пікірлер: 43
@TheTexPro
@TheTexPro 2 жыл бұрын
Большое спасибо за полезную лекцию. Однозначно расширяет знания в программировании и повышает экспертность в JS. Бесконечно рад, что в открытом доступе имеются такие сильные и грамотно составленные материалы.
@Nikage23
@Nikage23 2 жыл бұрын
Чудове пояснення на мій погляд. Дякую за вашу роботу.
@antonsuhov4222
@antonsuhov4222 Жыл бұрын
2:20 - ArrayBuffer 5:52 - DataView 16:52 - Размеры элементов в типизированных массивах 19:10 - Int8Array 25:17 - Методы типизированных массивов 30:00 - fromBuffer 33:19 - fromArray 35:05 - методы from / of
@Antonio-fm1sq
@Antonio-fm1sq 2 жыл бұрын
Спасибо!
@vanya_hrynkiv
@vanya_hrynkiv 2 жыл бұрын
Дякую!
@user-sq3nn5wq3z
@user-sq3nn5wq3z Жыл бұрын
а можно дополнительные уроки по битам, sharedArray, typedArray? спасибо!
@Ajax222able
@Ajax222able 10 ай бұрын
Данная лекция для системных программистов. Формошлепам можно пропустить
@maksimsergeevich5939
@maksimsergeevich5939 2 жыл бұрын
Я правильно понимаю, что с помощью типизированных массивов мы ещё просто можем экономить память в js приложении? Например если пришлось бы писать игру где требуется постоянно в памяти держать большой стейт.
@TimurShemsedinov
@TimurShemsedinov 2 жыл бұрын
Да, можно, и можно оборачивать части массива объектными абстракциями, чтобы обращаться к ним, как к полям, а на самом деле, держать в объекте только ссылку на массив и смещение в нем.
@maksimsergeevich5939
@maksimsergeevich5939 2 жыл бұрын
@@TimurShemsedinov Круто!
@indigosay
@indigosay 4 жыл бұрын
Если ты начинающий программист, JS первый язык, и ты вообще не в зуб ногой что такое байты и уже тем более типизированные массивы для тебя словно японский язык, то что надо подучить? Есть ссылки для начинающих?
@TimurShemsedinov
@TimurShemsedinov 4 жыл бұрын
Так нужно смотреть с первых видео, с введения в программировпние и потом лекции по js и потом уже по типизированным массивам. Ну а про байты - это школьная программа, это до программирования нужно учить, если что, могу найти ссылку на книжку, мне недавно что-то годное попадалось. А пока посмотрите программу курса github.com/HowProgrammingWorks/Index
@indigosay
@indigosay 4 жыл бұрын
@@TimurShemsedinov спасибо! Было бы неплохо!)
@poedgar977
@poedgar977 4 жыл бұрын
@@TimurShemsedinov ждем ссылку на книжку, спасибо
@RisDeep
@RisDeep 4 жыл бұрын
@@indigosay не читал ещё, но умные люди советовали "Код. Тайный язык информатики" Чарльз Петцольд magnet:?xt=urn:btih:D587D6052F73CC7110B2B5A944F27B24FE356DC8
@rstark
@rstark 2 жыл бұрын
@@TimurShemsedinov Тимур, шо там с книжечкой? Год ждём уже 😁😅
@rs41596
@rs41596 2 жыл бұрын
Я открыл данное видео, чтобы понять типизированные массивы. В итоге, мне пришлось разобраться с типизированными массивами, чтобы понять данное видео. В очередной раз убеждаюсь, что навык владения предметной областью никак не коррелируется с навыком об этой предметной области рассказывать.
@TheKirk1989
@TheKirk1989 3 жыл бұрын
Странно, я изучаю js уже второй год, и первый раз услышал про эти типизированные массивы только-что, и то, потому-что взялся за изучение node.js и там когда речь идёт о буфере в каждой статье есть отсылка к этим типизированным массивам, НО после просмотра этой лекции вопросов стало ещё больше, и главное , НАХ..НА они нужны? Странный подход к обучению, просто показать методы , и как они работают, без описания, зачем они вообще нужны, я стараюсь в своих проектах на js охватывать как можно больше всяких фишек языка, и они крайне логичные, где-то можно использовать [].reduce где то использовать методы объектов, но зачем нужны эти типизированные массивы без понятия, с чем они работают вообще? Зачем столько методов для чтения определённого кол-ва байт? Просто рассказ получился из разряда " пацаны, смарите как могу "
@TimurShemsedinov
@TimurShemsedinov 3 жыл бұрын
Для работы с бинарными данными, например: файлы и сетевые пакеты.
@TheKirk1989
@TheKirk1989 3 жыл бұрын
@@TimurShemsedinov хм, ну-ка подскажите мне, что можно практически реализовать на жс, с использованием этих массивов, можно прям проект какой нибудь, т. к. я в основном только картины, тудушки, слайдеры на жс делал, даже не могу представить себе, где можно применить эти тайпд эррэи
@TimurShemsedinov
@TimurShemsedinov 3 жыл бұрын
@@TheKirk1989 kzfaq.info/get/bejne/sLKda9Ofx963eX0.html
@TimurShemsedinov
@TimurShemsedinov 3 жыл бұрын
@@TheKirk1989 kzfaq.info/get/bejne/gLR8payFytzMgn0.html
@TimurShemsedinov
@TimurShemsedinov 3 жыл бұрын
@@TheKirk1989 это не очень типичный пример, но очень важный для параллельного программирования
@user-rq6rx5cp7i
@user-rq6rx5cp7i 9 ай бұрын
Извините, но по-моему подача материала ужасная.
@alexfive7000
@alexfive7000 2 жыл бұрын
А здесь походу происходят вот такие вычисления? Просто почему-то так никто не пишет, а я написал и вот голову ломаю почему так поучилось. var buffer = new Uint32Array([1,4]).buffer; // [1,4]. var data_view = new DataView(buffer); console.log(data_view.getUint32(0)); // 1 * 16777216 = 16777216 console.log(data_view.getUint32(1)); // 4 console.log(data_view.getUint32(2)); // 4 * 256 = 1024 console.log(data_view.getUint32(3)); // 1024 * 256 = 262144
@TimurShemsedinov
@TimurShemsedinov 2 жыл бұрын
Тут вычислений не происходит, просто мы в память пишем данные, а потом читаем разные их части
@alexfive7000
@alexfive7000 2 жыл бұрын
@@TimurShemsedinov Может быть вот так привольно будет? let view = new Uint32Array([4294967295,3,4294967295]); // Создаём представление буфера, типизированный массив и заполняем его значениями. let data_view = new DataView(view.buffer); // Создаём представление данных из буфера. Кидаем буфер который создался автоматически при создании типизированного массива. console.log(data_view.getUint32(0).toString(2)); // 11111111111111111111111111111111, Тут мы видим все 32 бита числа 4294967295. console.log(data_view.getUint32(1).toString(2)); // 11111111111111111111111100000011, Тут первые 24 бита числа 4294967295 и 8 бит числа 3. console.log(data_view.getUint32(2).toString(2)); // 11111111111111110000001100000000, Тут первые 16 бит числа 4294967295 и 16 бит числа 3. console.log(data_view.getUint32(3).toString(2)); // 11111111000000110000000000000000, Тут первые 8 бит числа 4294967295 и 24 бита числа 3. console.log(data_view.getUint32(4).toString(2)); // 11000000000000000000000000,Тут только все 32 бита числа 3, но первые нули до единичек JS обычно обрезает. console.log(data_view.getUint32(5).toString(2)); // 11111111, Тут мы видим первые 24 бита числа 3 все нули и 8 бит числа 4294967295 это 11111111. Javascript 24 нуля до единичек не показывает. console.log(data_view.getUint32(6).toString(2)); // 1111111111111111, Тут мы видим 16 бит это должны быть нули числа 3 и 16 бит, то есть 16 единичек числа 4294967295. console.log(data_view.getUint32(7).toString(2)); // 111111111111111111111111, Тут 8 бит это нули числа 3 которые JS скрыл и 24 единички числа 4294967295. console.log(data_view.getUint32(8).toString(2)); // 11111111111111111111111111111111, Тут мы видим все 32 бита числа 4294967295. /* То есть порядок такой: Идёт первое число 4294967295. Само число 4294967295 в Uint32 выглядит так: 11111111111111111111111111111111. 11111111111111111111111111111111. Показывается первая часть, первого числа 4294967295. Остальные три части будут ниже, выводится вместе со вторым числом. То есть последние 8 бит этого числа отсекаются и добавятся 8 бит следующего числа. Затем идёт втрое число 3 разбитое на четыре части. Само число 3 в Uint32 выглядит так: 00000000000000000000000000000011. 11111111111111111111111100000011 - Вторая часть числа 4294967295 и тут же первая часть числа 3. Число 3 начинается с 00000011. 11111111111111110000001100000000 - Третья часть числа 4294967295 и тут же вторая часть числа 3. Часть числа 3 это 000001100000000. 11111111000000110000000000000000 - Четвёртая часть числа 42949667295 и тут же третья часть числа 3. Часть числа 3 это 000000110000000000000000. 00000011000000000000000000000000 - Число 42949667295 закончилось. И мы видим целиком число 3. Четвёртая часть числа 3. Далее идёт третье число 4294967295 разбитое на четыре части. Но так же должно быть ещё три части числа 3. 000000000000000011111111 - Вторая часть числа 3 Первая часть числа 4294967295. Число 4294967295 начинается с 11111111. 1111111111111111 - Третья часть числа 3. Вторая часть числа 4294967295. Часть числа 4294967295 это 1111111111111111. 111111111111111111111111 - Четвёртая часть числа 3. Третья часть числа 4294967295. Часть числа 4294967295 это 111111111111111111111111. 11111111111111111111111111111111 - Число 3 закончилось. И мы видим целиком число 4294967295. Четвёртая часть числа 4294967295. Каждую итерацию отсекаются 8 бит предыдущего числа и добавляются 8 бит следующего числа. Каждая четвёртая часть числа в Uitn32 это полное представление числа. */
@timashoff
@timashoff Жыл бұрын
Спасибо!
Khó thế mà cũng làm được || How did the police do that? #shorts
01:00
Неприятная Встреча На Мосту - Полярная звезда #shorts
00:59
Полярная звезда - Kuzey Yıldızı
Рет қаралды 7 МЛН
We Got Expelled From Scholl After This...
00:10
Jojo Sim
Рет қаралды 76 МЛН
OMG😳 #tiktok #shorts #potapova_blog
00:58
Potapova_blog
Рет қаралды 4 МЛН
Коллекции, множества, хештаблицы в JavaScript
50:42
Итерирование, циклы и итераторы в JavaScript
44:13
Khó thế mà cũng làm được || How did the police do that? #shorts
01:00