ch
Feedback
HowProgrammingWorks - JavaScript and Node.js Programming

HowProgrammingWorks - JavaScript and Node.js Programming

前往频道在 Telegram

Программная инжененрия для JavaScript, TypeScrip, Node.js 👉 Group: https://t.me/How_Programming_Works 👉 Node.js channel: https://t.me/metarhia 👉 Node.js group: https://t.me/nodeua

显示更多
6 473
订阅者
-224 小时
-167
-1130
帖子存档
джаваскриптоднопоточный
Что хотят сказать люди, когда мы слышим это заклинание? Удивительно, но я 15 лет слышу эту чушь из каждой второй статьи и доклада. Но для чего на ней настаивать? Может быть, хочется думать, что в js не бывает корапшена данных, неконсистентного состояния, когда ссылки на данные есть у нескольких частей программы одновременно, а в многопоточной среде это приводит к состоянию гонки. Но все эти проблемы могут быть и в однопоточном приложении, которое использует кооперативную многозадачность, передавая управление разным частям кода хоть через колбеки и ивентлуп или даже без него, на промисах и async/await, которые вообще часть языка, но позволяют в одном месте приостановить выполнение, а в другом поработать и в это время. Если объект доступен из таких разных мест, которые работают асинхронно в одном потоке, как только промис, await или callback возвращает управление в нашу часть кода, и она ожидает, что объект все еще в том же состоянии, что и был до асинхронной операции, то это опасная иллюзия, нужно все перепроверять в условно синхронном фрагменте кода. Но это тоже не всегда сработает, у нас есть Atomics и SharedArrayBuffer, которые могут и в синхронном фрагменте менять состояние и гарантий консистентности в JS нет. Что же говорит спецификация? Безопасность не гарантируется даже в синхронном фрагменте кода и не только через Atomics и SharedArrayBuffer. Деми Мурыч хорошо это комментирует "спецификация дала возможность любому окружению, создавать условия, когда выполнение JS кода не прибито гвоздями к одному агенту". Это значит, что в будущем могут появиться такие среды исполнения, где будет общий хип для нескольких потоков и нескольких агентов. Но прямо сейчас все известные рантаймы js гарантируют безопасность данных на коротких фрагментах условно синхронного кода, если не использовать SharedArrayBuffer. Это уже что-то, но это далеко не безопасно в том смысле, на который надеются люди, кричащие "джаваскриптоднопоточный" из любого утюга. И это не имеет никакого отношения к потокам или процессам, потому что для исполнения кода ваш js рантайм может порождать сколько угодно внутренних потоков для компиляции, оптимизации, сбора мусора, выполнения I/O операций, и еще пачку потоков для пользовательского кода: worker threads, shared workers, service workers. Поразительно, как широко распространилось это клише про однополосный js, статьи, доклады, комменты, просто разговоры, люди это повторяют как мантру. Мне вот футболку подарили 5 лет назад, с надписью джаваскриптоднопоточный и nodejsоднопоточный, хоть я это уже лет 15 критикую на конфах всех, и нет конца этому...

AI сломал новичков. Не понимая, что такое stack trace, не освоив даже циклы, новички массово рвутся изучать архитектуру.

What AI features do you use?
Anonymous voting

We will have this in JavaScript in future, Insha'Allah https://github.com/tc39/proposal-do-expressions

🧩 Паттерн Context
Контекст используется для обеспечения обмена данными между различными компонентами (абстракциями, модулями, слоями), не имеющими общего окружения, без лишнего связывания.
Примеры: - 1-closure.js — Контекст с замыканием: Частично применяемая функция с привязанным контекстом; простой RBAC и аутентификация пользователя - 2-oop.js — Контекст в ООП: Контекст передается в конструктор; RBAC, User и AccountService как классы - 3-factory.js — Фабрика контекста: Фабрика создает сервисы с общим контекстом; внедрение зависимостей - 4-pipeline.js — Контекст в конвейере промежуточного ПО: Асинхронный конвейер с распространением контекста; трассировка и идентификаторы запросов - 5-async.js — Асинхронный контекст (AsyncLocalStorage): Контекст сохраняется между асинхронными границами без явной передачи - 6-immutable.js — Неизменяемый контекст: Замороженный контекст и производные контексты с помощью вспомогательных функций; без мутаций 👉 https://github.com/HowProgrammingWorks/Context

Тут план на этот год по курсам, это кроме паттернов - Async 2026 полностью готов и уже было первое подняие цены, будет и второе - Paradigms 2026 готов, но еще не опубликована программа, пока early birds - Node.js 2026 готовлю большую перезагрузку материалов, до публикации действует early birds - Scale 2026 - высоконагруженные, интерактивные и распределенные системы (готовится) - На остальные предзапись, будут выходить в течении года https://www.patreon.com/collection/1913313?view=expanded

Дети грызут ручку, чтобы ее ни кто не забрал, ведь кому нужна ручка погрызаная другим. Когда программисты пишут код, я полагаю, они руководствуются тем же принципом, чтобы отвадить от него как коллег, так и конкурентов.

"Люди ничему не верят так твердо, как тому, о чем они меньше всего знают" // ChatGPT

По ходу курса Patterns обнаружили с менторами интересную штуку, писать код многие могут неплохо, исправлять и оптимизировать, улучшать - это да, но вот декомпозировать задачу, проектировать абстракции и связи между ними - просто в разы меньше людей. А ведь на курсе почти все синьоры, лиды, 5+ опыта, более 30% даже 7+ опыта. Самое сложное самому "понять", как высокоуровневую задачу превратить в малые issue, что для этого нужно делать. Если бы мы научили людей декомпозировать не классы и функции, а issue, это был бы прорыв в другое измерение))) Конечно, это выходит за рамки курса, но вообще - очень актуально, будем экспериментировать понемногу...

3 января ушел из жизни мой учитель информатики, пионер программирования Валерий Власенко. Он работал вместе с Виктором Глушко
+2
3 января ушел из жизни мой учитель информатики, пионер программирования Валерий Власенко. Он работал вместе с Виктором Глушковым над первыми в мире моделями вычислительной техники, а затем создал в обычной средней школе 4 лаборатории самодельных компьютеров, сделал вместе с учениками сетевые карты, я писал драйверы и протоколы на асме в 5 классе. На своем 87 дне рождения 3 января он играл на баяне так отчаянно, что стало тяжело дышать, скорая уже не успела. Это великий человек, ему благодарны тысячи учеников по всему миру.

Все публичные видео, касающиеся подхода local-first, я собрал в этот плейлист. Хватит праздновать… ну давайте… уже смотрите,
Все публичные видео, касающиеся подхода local-first, я собрал в этот плейлист. Хватит праздновать… ну давайте… уже смотрите, развивайтесь… потому что дальше так нельзя во фронтенде. https://www.youtube.com/playlist?list=PLHhi8ymDMrQbvfYi9Vh4QqbliUSMsAHQd

🎫 До 7 января 2026 (включительно) можно купить за $200 🎫 До 14 января 2026 (включительно) за $250 🎫 Далее, в течение всего
🎫 До 7 января 2026 (включительно) можно купить за $200 🎫 До 14 января 2026 (включительно) за $250 🎫 Далее, в течение всего 2026 года: $300 https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Async-2026.md