As For JS
3.37K subscribers
144 photos
16 videos
4 files
452 links
As For JavaScript...
Обсуждения — @AsForJsTalks
Download Telegram
⎡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, безусловно положительно скажется на навыках программиста.
👍15🔥2
В рамках программы - ото делать мне больше нечего

Что можно сегодня почитать:
Язык: Английский  
Сложность: Средняя

JavaScript Bytecode
Авторы попробовали на нескольких примерах прояснить, что такое Байт код в V8


Что можно посмотреть:
Язык: Английский  
Сложность: Минимальная

YoutTube 25 минут: Franziska Hinkelmann: JavaScript engines - how do they even?
Несмотря на то, что этому видео уже больше 6 лет, оно все еще остается актуальным на уровне формирования общего представления о том, как работает V8.
13🐳1💔1
Что можно сегодня почитать:
Язык: Английский  
Сложность: Пред
-средняя
Understanding V8’s Bytecode

Что можно посмотреть:
Язык: Русский  
Сложность: Минимальная
⎡~1:43:18⎦ Vitaly Bragilevsky: Вводная лекция по теории алгоритмов
👍112🔥2🐳2
Ай нє нє!
Сбор на макароны директору Табора
и его первому помощнику

нам чтобы дожить до конца месяца нужны:
150дол. 90дол

ВСЕ ГОРШОЧЕК НЕ ВАРИ

Кто чем может:

Карта Приват: 5168745021397333

USDT Tron (TRC20): TKoZu59WHiX6L6qvwYTYTsZJerDrnAHBTx

USDT etherium (erc20): 0x75fb8a62dfcf453b2e73f1ef1c407d46f918fffa

bitcoin: bc1qt74aru82v4d3alay7p53jdwkmxe4a5gz7fmvfm2?message=AsForJS&time=1686349743

PayPal: demimurych@protonmail.com
👍54
все. горшочек не вари.
кот счастлив.

от имени заслуженных пенсионеров js фронта выражаю всем искреннюю благодарность.

Ай нє нє
16😍3👍1
у меня большая просьба ко всем кто перичислял средства.

напишите мне пожалуйста лично:
@demimurych
👍6
09:30 По киеву
Разбираем видео: "Продвинутый JS (Григорий Бизюкин)"
Меня всегда интересовал один вопрос, почему от Яндекс, выступают люди, которые уже на протяжении нескольких лет рассказывают чушь с экрана, в то время, когда у них есть действительно сильные специалисты.

Прогнозируемое время около 2х часов.
👍7😍7
Live stream scheduled for
Диалог о том, почему аналогии, которые не отвечают спецификации, это не всегда плохо.


Один из нас, рискнул донести до такого человека как я, мысль о том, что мои претензии к аналогиям, на базе которых они, обучают языку, не обязательно являются злом для всех.

И пока Вы, а стало быть и я, разбираемся в том, кто на ком стоял, в выше заявленном тизере - подписываемся на телеграм канал, и шлём ненужные Вам деньги согласно реквизитам опубликованным ниже.


*Поддержать маленького бородатого 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ссылка на трубу.
7👍4
Live stream started
Live stream finished (5 hours)
По перше ми живі.
Незважаючи увагу на увесь тий безлад який сьогодні вночі було зроблено БРАЦЬКІМ НАРОДОМ.


Что сегодня

почитать:
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


Слава Україні.
18🤡8🔥4🙏1
Что сегодня

почитать:
⎡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
15🤡2🐳1
Перебирая бумажки из прошлой жизни, нашел одно собеседование, где была такая задача:

Каким образом нужно инициализировать 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

На скриншоте дополнительные примеры.