As For JS
Kanalga Telegram’da o‘tish
As For JavaScript... Обсуждения — @AsForJsTalks
Ko'proq ko'rsatish3 191
Obunachilar
-124 soatlar
-247 kunlar
-6230 kunlar
Postlar arxiv
3 190
20:00 по Киеву.
Разберем видео, где его автор - Григорий Бизюкин, будет говорить о асинхронности в JavaScript и выбираться из callback hell.
Расскажет про цикл событий - Event Loop, очереди задач, функции обратного вызова, промисы (promise) и многое многое другое от автора видео - продвинутый JavaScript.
Обещаю быть насколько спокойным настолько же и объективным.
https://www.youtube.com/watch?v=mIxGEGgxNiI
3 190
Перебирая бумажки из прошлой жизни, нашел одно собеседование, где была такая задача:
Каким образом нужно инициализировать
theIdent в коде:
var doExplAdd = (
(theValue, theNum)=>{
var theIdent = ????; //менять код можно только тут
return `${theIdent}${theNum+theIdent}${+theIdent+theNum}`
}
);
console.log( doExplAdd(3, 7) );
что бы мы получили результат:
Hi.
The 1st value is 3.
You want to add 7 to the first value.
So the result will be: 10
На скриншоте дополнительные примеры.3 190
Что сегодня
почитать:
⎡En⎦ Вячеслав Егоров: Maybe you don't need Rust and WASM to speed up your JS
https://mrale.ph/blog/2018/02/03/maybe-you-dont-need-rust-to-speed-up-your-js.html
посмотреть:
⎡Ukr⎦ 00:03:30 YARMAK FT. ALISA - ДИКЕ ПОЛЕ
Україно, свята мати героїв, зійди до серця мого
https://www.youtube.com/watch?v=mOOClonYKmc
посмотреть:
⎡msk⎦ 00:58:12 Виктор Вершанский — Множественное наследование на JavaScript
https://www.youtube.com/watch?v=P-j448mMoBI
3 190
По перше ми живі.
Незважаючи увагу на увесь тий безлад який сьогодні вночі було зроблено БРАЦЬКІМ НАРОДОМ.
Что сегодня
почитать:
SMIs and Doubles
Язик: En
https://darksi.de/6.smids-and-doubles/
посмотреть:
00:03:48 ONUKA — PEREMOHA
Якик: Рідна мова
Неймовірна естетика. Мурахи.
https://www.youtube.com/watch?v=umIaIJAD9xo
посмотреть:
00:51:46 Не морочьте мне голову со своим функциональным программированием / Виталий Брагилевский
Якик: msk
https://www.youtube.com/watch?v=mmvHC3UgYmg
Слава Україні.
3 190
Диалог о том, почему аналогии, которые не отвечают спецификации, это не всегда плохо.
Один из нас, рискнул донести до такого человека как я, мысль о том, что мои претензии к аналогиям, на базе которых они, обучают языку, не обязательно являются злом для всех.
И пока Вы, а стало быть и я, разбираемся в том, кто на ком стоял, в выше заявленном тизере - подписываемся на телеграм канал, и шлём ненужные Вам деньги согласно реквизитам опубликованным ниже.
*Поддержать маленького бородатого JavaScript-ра*
Карта Приват: 5168745021397333
💵 USDT Tron (TRC20): TKoZu59WHiX6L6qvwYTYTsZJerDrnAHBTx
💶 USDT etherium (erc20): 0x75fb8a62dfcf453b2e73f1ef1c407d46f918fffa
💴 bitcoin:bc1q74aru82v4d3alay7p53jdwkmxe4a5gz7fmvfm2?message=AsForJS&time=1686349743
💷 PayPal: demimurych@protonmail.com
https://patreon.com/demimurych
https://t.me/AsForJavaScript?livestream – ссылка на стрим в телеге.
https://www.youtube.com/watch?v=Tfr4vXlc1sw – ссылка на трубу.
3 190
09:30 По киеву
Разбираем видео: "Продвинутый JS (Григорий Бизюкин)"
Меня всегда интересовал один вопрос, почему от Яндекс, выступают люди, которые уже на протяжении нескольких лет рассказывают чушь с экрана, в то время, когда у них есть действительно сильные специалисты.
Прогнозируемое время около 2х часов.
3 190
6:45 по Киеву.
Обсудим часть интервью D. Crockford: Why We Should Stop Using JavaScript
3 190
Что сегодня
почитать:
JavaScript engine fundamentals: optimizing prototypes
https://mathiasbynens.be/notes/prototypes
посмотреть:
00:37:45 Вячеслав Егоров — Производительность JavaScript через подзорную трубу
https://www.youtube.com/watch?v=HPFARivHJRY
3 190
у меня большая просьба ко всем кто перичислял средства.
напишите мне пожалуйста лично:
@demimurych
3 190
все. горшочек не вари.
кот счастлив.
от имени заслуженных пенсионеров js фронта выражаю всем искреннюю благодарность.
Ай нє нє
3 190
Ай нє нє!
Сбор на макароны директору Табора
и его первому помощнику
нам чтобы дожить до конца месяца нужны:
150дол. 90дол
ВСЕ ГОРШОЧЕК НЕ ВАРИ
Кто чем может:
Карта Приват: 5168745021397333
USDT Tron (TRC20): TKoZu59WHiX6L6qvwYTYTsZJerDrnAHBTx
USDT etherium (erc20): 0x75fb8a62dfcf453b2e73f1ef1c407d46f918fffa
bitcoin: bc1qt74aru82v4d3alay7p53jdwkmxe4a5gz7fmvfm2?message=AsForJS&time=1686349743
PayPal: demimurych@protonmail.com
3 190
Что можно сегодня почитать:
Язык: Английский
Сложность: Пред-средняя
Understanding V8’s Bytecode
Что можно посмотреть:
Язык: Русский
Сложность: Минимальная
⎡~1:43:18⎦ Vitaly Bragilevsky: Вводная лекция по теории алгоритмов
3 190
В рамках программы - ото делать мне больше нечего
Что можно сегодня почитать:
Язык: Английский
Сложность: Средняя
JavaScript Bytecode
Авторы попробовали на нескольких примерах прояснить, что такое Байт код в V8
Что можно посмотреть:
Язык: Английский
Сложность: Минимальная
YoutTube 25 минут: Franziska Hinkelmann: JavaScript engines - how do they even?
Несмотря на то, что этому видео уже больше 6 лет, оно все еще остается актуальным на уровне формирования общего представления о том, как работает V8.
3 190
⎡4.1. Примеры => Память и две разные HOST среды⎦
Неделей ранее, было записано видео, где мы разбирали случай, когда в среде NodeJS, оперирование большим массивом данных состоящим из целых чисел в пределах от 0 до 30бит на число, требовало большего количества ресурсов процессора, нежели такой же обьем данных состоящий из чисел типа Double64. Что было 100% воспроизводимо на 64 битных системах, и показывало более прогнозируемый результат на 32 битных системах.
Причиной которого, стала именно особенность оперирования памятью в случае HOST среды NodeJs, в которой отключены существующие уже два года в оригинальном V8 оптимизации напрямую связанные с работой GC и сжатием указателей для 64 битных систем.
То есть, HOST среда d8 показывала производительность в три раза выше чем среда NodeJs.
И при этом, поведение d8 было предсказуемым для заданных задачей типов чисел (SMI vs Double64)
При этом, производительность в NodeJS удалось привести к состоянию прогнозируемой (целые числа быстрее) и соизмеримой d8, только компенсировав особенности этой HOST среды.
Напомню еще раз, что разница была более чем в три раза.
⎡4.2. Примеры => Рекурсия⎦
Одним из самых показательных примеров проблем O нотации и ей подобных, является оценка сложности алгоритмов использующих рекурсию, против алгоритмов ее не использующих.
O нотация, однозначным образом определяет алгоритмы основанные на рекурсии, как те, которое несоизмеримо хуже чем алгоритмы не использующие рекурсию.
Однако, в V8 по умолчанию, для WASM кода уже год как включена оптимизация, которая носит общизвестное название - хвостовая рекурсия. Алгоритм закрепленный спецификацией ECMA.
Согласно которому, например вычисление тех же чисел фибоначи, произойдет с применением этой оптимизации, которая превратит рекурсивные вызовы функции, в плоский код без единого вызова функции, производительность которого в общем случае будет выше традиционной реализации. Выше в силу того, что подобная оптимизация накладывает на программиста набор правил, следуя которым он получает как гарантии применения оптимизации, так и гарантии получения чрезвычайно оптимизированного кода.
Для JS эта оптимизация пока находится на стадии тестирования.
Хвостовая рекурсия - это стандарт дефакто для функциональных языков, где наличие циклов - то есть итарций вообще исключено. И решение происходит за счет использования абстракции - рекурсия.
Которая благодаря форме хвостовой рекурсии, преобразовывается RunTime в форму эффективнее типичного итерационного цикла.
Как результат O нотация, дает совершенно неверное предсказание относительно используемого алогоритма в подобных условиях.
⎡5. Вместо ИГОГО⎦
Я преследовал цель, наглядно продемонстрировать, что O нотация, не может использоваться как эффективный инструмент, для принятия решений в случае выбора алгоритма, реализация которого будет на языке JavaScript.
Язык JavaScript, как и любой другой динамический интепретируемый язык, живет в мире абстракций чрезвычайно высокого уровня. В котором не может быть место методологии, которая отталкивается от предельно упрощенных способов оценки потребляемых ресурсов базирующихся на детерминированности поведения. Это противоречит природе таких языков.
Иными словами, я заявляю, что на собеседованиях, или где либо еще, когда кто-то требует пояснение JS кода с точки зрения O нотации - этот кто-то некомпетентен.
При этом, я хочу подчеркнуть, что само по себе понимание принципов оценки сложности алгоритмов, в отрыве от их реализации в JavaScript, безусловно положительно скажется на навыках программиста.
3 190
⎡3.1. Проблемы метрики о затраченной памяти => Интерпретируемые среды⎦
В системах, где задачами распределения этого ресурса, занимается среда выполнения кода, особенностей которые следует учитывать для уверенного прогноза затраченных ресурсов - чрезвычайно много.
Но даже учитывая их все, едва ли можно было бы сделать уверенный прогноз соответствующий критериям O нотации.
⎡3.2. Проблемы метрики о затраченной памяти => Garbage Collector⎦
Типичный пример - срабатывание Garbage Collector-а (GC), в процессе выполнения алгоритма, может вносить значимые флюктуации в результирующее затраченное время. Само по себе срабатывания GC на прямую связано с использованием оперативной памяти. Как следствие, алгоритм, который ставит во главу угла свою производительность за счет чрезмерного расхода той самой памяти, может оказаться не у дел, в силу агрессивной политики стороннего механизма GC.
⎡3.2. Проблемы метрики о затраченной памяти => Особенности представления в памяти данных⎦
Другой типичный пример - это то каким образом в принципе организовывается работа с данными в интерпретируемых средах подобных JS. Характерным отличием которых, является тот факт, что *представление таких данных в памяти - не отвечает ожидаемому*
Например: создание двух идентификаторов, которые ссылаются на одну и туже строку:
var theThing = "abc"; var theEnotheThing = "abc";не приведет к дополнительным расходам оперативной памяти для обеспечения функционирования второго идентификатора. Оба идентификатора будут ссылаться на одну и туже строку в памяти. Об этом позаботиться среда. Но что еще хуже, если бы мы в силу работы алгоритма сделали что-то подобное этому:
var theThing = "abc"; var theEnotheThing = "abc"; [...] theThing = undefined; theEnotheThing = undefined;это не означало бы, что память используемая для представление строки
abc была бы освобождена. Более того, если бы где-то ниже в алгоритме снова использовалась бы строка abc то окружение снова бы сослалось на эту строку в памяти.
⎡3.2. Проблемы метрики о затраченной памяти => Данные в коде и данные в интерпретаторе могут быть представлены радикально по разному⎦
Другим примером является конкатинация строк, когда существует минимум два поведения среды:
либо действительно создать в памяти новую результирующую строку,
либо создать особую структуру, которая описывает факт конкатинации с сылками на две строки.
И зависит этот выбор от разного набора параметров: первый из которых длина самой строки.
Если строка больше какого-то минимума, то при конкатинации, новая строка никогда не будет создана, но будет создана структура описывающая логику того, где взять части и как их собрать вместе для получения результата.
При этом не стоит забывать, что очистка памяти от строк, на которые больше не ссылаются идентификаторы, происходит только в самых критических случаях, решение о которых принимает тот самый GC.
⎡3.4. Проблемы метрики о затраченной памяти => Выводы⎦
Как было показано выше, распределение памяти, для выполнения необходимых задач в средах, где отсутствует ручное управление, может приобретать неконтролируемые формы в силу особенностей работы алгоритмов GC. Что делает предсказание о расходе подобного ресурса, намного более сложной задачей, нежели простое предположение о инкрементном использовании ресурса.
Сама архитектура среды, может представлять данные в памяти образом, который предполагает целый ряд оптимизаций, исключающих избыточность потребления памяти. Например одни и те-же строки будут представлены один единсвенным образом. Что еще более увеличивает сложность оценки поведения подобного ресурса.
Пример с конкатенацией строк, лишь подчеркивает насколько далеко может зайти в принципе оптимизация процесса использования памяти. Что как минимум, потребует в рамках O нотации, изменение методологии оценки расхода этого ресурса. И, как максимум, сделает его невозможным в принципе.
⎡4. Примеры⎦
А теперь несколько примеров, наглядно демонстрирующих сказанное выше.
Endi mavjud! Telegram Tadqiqoti 2025 — yilning asosiy insaytlari 
