HowProgrammingWorks - JavaScript and Node.js Programming
6.31K subscribers
328 photos
8 videos
1 file
808 links
Программная инжененрия для JavaScript, TypeScrip, Node.js 👉 Group: https://t.me/MetarhiaHPW 👉 Node.js channel: https://t.me/metarhia 👉 Node.js group: https://t.me/nodeua
Download Telegram
Сегодня мы обсудим парадигмы программирования, различия и связь между ними, их реальное влияние на наш код каждый день, войны парадигм, концептуальный экстимизм, синтаксические и семантические особенности, а также эффекты, которые ими достигаются.

Виталий Николаевич Брагилевский, Тимур ибн Джафар и Деми Мурыч

https://www.youtube.com/watch?v=ES2NPqlDnek
🔥64👍3😁1
Инсайты по парадигмам, паттернам и стилям по мотивам стрима

- Код может быть и быстрым и понятным одновременно, если не доводить концептуальность и оптимизацию до фанатизма.
- Более 90% оптимизации под виртуальные машины может выполняться интуитивно, если запомнить всего несколько простых правил.
- Нет "лучшей" парадигмы программирования, и лучшего стиля, можно выбирать любую машинерию, чтобы получать желаемые характеристики кода.
- Паттерны Prototype и Proxy в GoF путаются с возможностями языка JavaScript, а паттерны Iterator и Decorator встроены в язык.
- Паттерн Strategy можно реализовать через Map<string, Function> или Map<string, Constructor> и много такого...
- Паттерн Observer породил в JavaScript сразу много: EventEmitter, EventTerget, Signals, MessagePort API, BroadcastChannel и др...
- Нужно разделять синтаксис и парадигму, может быть монада в синтаксисе класса, а может быть ООП на замыканиях.
- Паттерны готовят почву для построения архитектуры, без них код рыхлый и неуправляемый, из которого хорошей архитектуры не построить.
- Паттерны - это не теория, а практика, каждый паттерн дает типовое решение для распространенных проблем, которые встречаются везде.
20🔥7💯4🎉3
Тут пример того, как на курсах я описываю парадигмы, конечно с примерами, и обсуждением, какие эффекты мы можем получить, благодаря этим характеристикам и как их комбинировать.

Императивное программирование
+ Характеристики: явные команды, циклы, ветвление, пошаговый контроль, изменяемые данные, экономия памяти, риск "гонок", повышение производительности, сложность поддержки и отладки.
+ Влияние на архитектуру: сложность масштабирования, оптимизация отклика (latency)
+ Хорошо для: системный код близкий к железу, сценарная бизнес-логика, оптимизация hot-paths.
+ Плохо для: абстракций среднего уровня, вычислений, кода с сильной конкуррентностью.
+ Синтез: императивная "оболочка" + ФП или ООП "ядро"

Конечные автоматы
+ Характеристики: явное состояние, надежные переходы, события, детерминрованное поведение (предсказуемое), декларативность моделирования.
+ Влияние на архитектуру: повышает прозрачность жизненных циклов, верификация процессов.
+ Хорошо для: моделирование воркфлоу, оркестрация, парсинг, сетевые протоколы, геймдев.
+ Плохо для: много состояний и переходов, сложные домены, "туманные" доменные модели без четких фаз.
+ Синтез: FSM на границах + сценарии/SAGA для длительных процессов.

Прототипное программирование
+ Характеристики: динамическое изменение наследования, экономия памяти, гибкость модели.
+ Влияние на архитектуру: нативная поддержка для JavaScript, высокая эффективность и гибкость, меньше ритуалов для результата.
+ Хорошо для: расширяемые платформы, Web-программирование, метапрограммирование.
+ Плохо для: для сложных доменов риск непредсказуемых состояний.
+ Синтез: прототипы для frontend и UI + строгий домен на ООП, ФП, процедурном.

По ссылке можно посмотреть примеров кода, тут 46 стилей с разными парадигмами и разными эффектами, про которые я говорил на стриме: https://github.com/HowProgrammingWorks/Paradigms
14👍6🔥5
Гранулярность кода
(на скриншоте слишком мелко-гранулярный ФП код)

Общий инженерный принцип SoC (Separation of concerns) решает большую часть проблем хрупкости и понятности. SoC нравится мне гораздо больше паттерна SOLID:SRP (Single Responsibility Principle), потому что он точнее.

SRP утверждает: один класс — одна причина для изменения. Но большинство причин можно декомпозировать. А вот SoC указывает на гранулярность — мы сами выбираем уровень гранулярности. Фактически это выливается в организацию модульности, контрактное программирование, тестирование, управление зацеплением и Protected Variations по GRASP, во многом Open/Closed из SOLID.
15👍5💯1
Вчера перезаписал 2 лекции по метапрограммированию. Там про техники, позволяющие программно изменять поведение программ с использованием метаданных:
* Introspection - чтение структур и программных абстракций: типы, поля, методы, наследование и т.д.
* Reflection - динамическое изменение поведения и структуры программы.
* Scaffolding - автоматическая генерация кода/структур для ускорения разработки.
* Code Generation - программная генерация кода из метаданных.
* Macros - расширение синтаксиса языка через шаблоны или скрипты.
* Decorators - добавление к коду метаданных, влияющих на выполнение.
* Dynamic Invocation - вызов методов, функций, конструкторов и классов по имени во время исполнения.
* Monkey Patching - изменение кода в рантайме, добавлением и удалением свойств и методов.
* Generics - унификация и параметризация типов и алгоритмов если в коде изменяются только типы.
* DSL - доменно-специализируемые и встраиваемые языки для выразительности синтаксиса под задачу.
* Self-Modification - программы, изменяющие собственный код, байткод или бинарник.
* Polyfilling - вмешательство в поведение языка и платформы, перехват и подмена стандартного API.
* Homoiconic code - использование одинаковых структур для данных для исполняемого кода программы, как в LISP.
👍157🔥7
Функциональное программирование, все равно имеет дело с coupling и cohesion, с дженериками и интерфейсами, с адаптерами и фасадами. Хоть паттерны и появились в среде ООП, но они полностью пронизаны идеями из ФП, а ФП должно использовать приемы распределения ответственностьи и изоляции сложности, которые развились в ООП. Синтаксическая разница между парадигмами не так существенна, как мы уже говорили, можно делать монады на классах и инкапсуляцию на замыканиях. На самом деле, между парадигмами не так много разницы. Главное различие - это иммутабельность, но не сложно представить себе такое ООП, в котором каждый матод отображает экземпляр в новый объект. Какие еще существенные отличия? Выражения в ФП против пошагового исполнения в разных императивных стилях. Да, но это не влияет на применимость GRASP и SOLID. Работа в данными важнее способа исполнения кода. Композиция и там и там предпочтительнее, а наследования нужно избегать, хоть и там и там оно реализуется. Сокрытие и делегирование везде используются. Изоляция и расширяемость везде достигаются, да, немного разными способами, но это не так существенно. Так что, большинство принципов GRASP и SOLID вполне применимы во всех парадигмах. Более того, эти принципы работают даже в самом ужасном коде, который плох с позиции любой парадигмы. Если код выполняет то, что нужно и делает это надежно, тесты проходят не от случая к случаю, а всегда, то на каких-то принципах он же основан, пусть в нем может быть путаница в понятиях или плохая декомпозиция, чрезмерная сложность или запутанность, но базовые принципы работают даже там, где нам сложно это осознать сквозь дебри кода.

Тут пример хороших и плохих реализаций на ФП и простом императивном процедурном программировании для той же задачи, которую я публиковал на этой неделе, в слишком гранулярной реализации https://github.com/HowProgrammingWorks/Abstractions/tree/master/JavaScript
14👍9💯21🔥1
Новый набор на курс Patterns 2025!
За время второго потока мы не только обучали, но и развивали Local-first подход в оупенсорсе.

Что нового: обновленная программа, практические кейсы, реальные проекты, менторство от экспертов. Результат студентов: +30% к скорости разработки, меньше багов и переписываний, больше уверенности в результате, рост уважения и зарплаты.

Паттерны GoF (Gang of Four) — это не теория, а кирпичики, из которых вы построите надежные и удобные в поддержке программные системы. Теперь все задачи курса складываются в большой проект. Менторы делают ревью пул-реквестов и отвечают на вопросы, помогая получить комплексное понимание, такое же, как в реальном проекте.

Обзор: https://youtu.be/8a9PX12FB9s
13👍5🔥4🎉1
Структура курса Patterns 2025:
- короткие лекции — быстрое и точное объяснение теории с примерами;
- длинные лекции — дополнительные материалы с глубоким погружением;
- примеры кода — применение для backend и frontend;
- семинары — еженедельные созвоны с живым обсуждением и ревью кода;
- групповая работа — разработка в малых группах с менторами;
- сквозной проект — полное от идеи до продакшена.

3 месяца (12 недель) интенсивного обучения:
- 📦 Unit 1 (1-4 неделя): Структура кода, парадигмы и модульность
- 📦 Unit 2 (5-8 неделя): Контрактное программирование и асинхронность
- 📦 Unit 3 (9-12 неделя): Среда исполнения, масштабирование и внедрение

- Менторство: консультации, ревью и разбор вашего кода, помощь в карьерном росте.
- Результат: глубокое понимание паттернов и их применения.

"Хороший код — это не тот, который работает, а тот, который понятен" /Торвальдc. Навык писать просто приходит через практику, реальные проекты, менторство, разбор кейсов и регулярные тренировки.

Обзор курса: https://youtu.be/8a9PX12FB9s
6👍6🔥2🎉1
This media is not supported in your browser
VIEW IN TELEGRAM
Отзывы выпускников курса по Patterns

Как создавать контракты и архитектуру, работать с менторами и как разрозненные пазлы складываются в общую картину. О получении персонального фидбека, расширении мировоззрения, новой мотивации и повышении эффективности в работе. Студенты сравнивают с другими курсами, рассказывают об изменениях в общении с заказчиками, коллегами и руководством. Раскрыта ценность курса для фронтенда и бэкенда, применения различных отраслей разработки и для разных уровней подготовки на входе, выпускники описывают практическую ценность в проектах.

Дейкстра говорил: "Программирование – это искусство, а не наука". Но искусство требует мастерства, а мастерство – понимание принципов. Паттерны – это не магия, а проверенные решения архитектурных проблем. Но со стороны это выглядит как магия. "Любая достаточно развитая технология не отличается от магии" // Артур Кларк.

Результаты студентов: как меняется эффективность и скорость разработки уже через 3 месяца примерно на треть, становится меньше багов и переписывания, больше уверенности в решениях, рост зарплат и статуса. В течение года после прохождения курса, если практиковаться и внедряться в живых проектах, эффективность вырастет в 2-3 раза. Вы будете писать меньше и за меньшее время, а толку от этого для бизнеса будет гораздо больше.

Посмотреть видео-отзывы на сайте: https://nodeua.com/Patterns-2025
👍84🔥3
Если вам дорого — то курс Patterns не для вас. Это курс минимум для практикующих Middle-Senior разработчиков или того, кто уже вплотную подходит к этому уровню. А зарплата Senior вполне позволяет делать инвестицию в свое будущее — окупаемость 2-3 месяца. Бесплатные альтернативы есть, но они не адаптированы для современного JavaScript и TypeScript мира, для frontend и backend разработки на Node.js и Web API.

Аналогов этому курсу нет, все материалы не просто взяты из книжек Банды четырех, Крэга Лармана, Роберта Мартина, Эрика Эванса, Эриха Гамма, Ричард Хелма, Ральфа Джонсона, Джона Влиссидеса, Эдсгера Дейкстры, Гради Буча и других. Все эти знания пропущены через многолетнюю практику автора и менторов и поданы в формате, понятном современному разработчику.

Писать много кода в режиме катастрофы и потогонки не приводит к получению опыта — нужно спешить медленно. Оказывается, что эффективность хорошо продуманных решений дает выигрыш во времени уже на протяжении 2-3 месяцев. Не говоря уже о том, что написанное в спешке будет потом много раз переписываться и чиниться, в то время как написанное качественно будет расширяться и дополняться, не ломаясь.

Если у вас "нет времени", то откуда вы находите время, чтобы отлаживать в дебагере по ночам и краснеть на созвонах? Курс адаптирован под рабочий график, можно проходить в спокойном темпе, менторы помогают с планированием, результат стоит потраченного времени.

Обзор курса: https://youtu.be/8a9PX12FB9s
12😁12👍7🔥4🤯21💯1
Почему-то фронтенд разработчики убеждены, что паттерны нужны только для бизнес-логики, а вся она находится на сервере и в базе данных, а у нас в UI все иначе устроено. Для тех, кто не верит в то, что доменная-логика таки существует и должна быть изолирована от UI, от сети и от инфраструктурного кода, я публикую вчерашний семинар, где отвечаю на вопросы тех, кто уже зашел на курс Patterns.
https://youtu.be/bfw101W5Xf4
🔥10👍54
Как вы без паттернов поймёте, что вам написал AI?

В наше время паттерны становятся инструментом обуздания LLM. Нужно ставить ему задачу, например, понизить coupling между модулями, декомпозировать класс при помощи SRP, изолировать слой через IoC, DI или Revealing constructor, применить strategy, bridge, visitor, adapter... для того, чтобы получить определенный эффект, например, подмену поведения в разных условиях или стыковку сложных контрактов. GRASP, SOLID, GoF, DDD, Enterprise patterns должны стать универсальным языком, который мы используем для объяснения своих мыслей и требований, своей задумки как автора что при общении с коллегой, что при постановке задачи джуну или AI агенту.

Созвон с вопросами про паттерны: https://youtu.be/bfw101W5Xf4
9💯6👍4🔥1
Курс Patterns не похож на другие мои курсы, он имеет отдельные наборы с датой начала и конца, с программой по неделям. Это все потому, что он включает практику, ревью кода, работу над проектом, групповые созвоны. А значит, с вами работает целая команда менторов, а не только один я. Менторов у нас ограниченное количество и время, которое они могут выделить тоже, это все специалисты, которые работают в компаниях или имеют свои живые проекты. Каждый на курсе получает персональное внимание, потому, что качество менторства требует вникнуть в его код и в его знания, разбор кода и рекомендации по его улучшению, а групповой проект возьмет еще больше времени менторов на консультации, ответы на вопросы и согласование. Что мы имеем сейчас: план Mentoring - 200 мест, Professional - 50 мест, а Exclusive - всего 3 места, я тоже не резиновый и лично вести много людей не могу, максимум могу 4 взять. Курс длится 3 месяца, но есть еще онбординг и каникулы, так что, следующий набор будет скорее всего только весной. Кто успеет, забронировать место по ранней цене, попадает в основной поток, а дальше мы попробуем расширить наши мощности, но мы никогда не делаем это за счет качества, так что, найм новых хороших менторов отразится на повышении цены.

Подробности на сайте: https://nodeua.com/Patterns-2025
6👍3😢2🫡2🔥1
Первые 10 лет разработки я сам писал ужасный код, хоть и читал Буча и Кнута, учился в ВУЗе на программиста, работал на крупных проектах для нефте- и газотранспорта (ППДМН, Укрнафта), МЧС (министерства чрезвычайных ситуаций), ЗАГСов (минюст), реестры для медицинских и общественных организаций. Но у меня не было ни наставника ни с кем сравнить свои силы, не было профессиональной среды, мне никто не делал ревью кода. Я добыл огромный опыт, свободно писал на 8 языках (первый Asm x86, много писал на dBase, Pascal, C++ Builder, Delphi), но профессиональный рост был очень медленным, все на своих шишках.

Вторые 10 лет у меня появились старшие друзья, которые могли подсказать что-то и покритиковать, подчиненные, которым тоже нужно было помогать и я начал преподавать, что резко улучшило мой собственный код. Я начал руководить большой командой и пришлось писать такой код, чтобы его мог понять каждый в команде, а для студентов нужно было писать еще проще. За этот период я сильно вырос в профессиональном плане, читал в 10 раз больше, профессионально освоил только три языка C#, JavaScript и PHP, начал писать open source, статьи, делать доклады на конференциях, выступать перед большой аудиторией, в том числе на английском, в других странах. Руководил коллективами в продуктах для США, Китая, Европы.

Третье десятилетие я уже твердо знал, что хочу полностью посвятить себя open source и подготовке профессионалов. За это время я провел 269 офлайн митапов, записал более 2000 видео лекций, подготовил 11 контрибьюторов node.js, запустил разработку технологического стека Metarhia, который имеет сотни контрибьюторов и был внедрен во многих проектах в корпоративных системах, госсекторе, геймдеве, телевизионных и интерактивных видеоформатах, социологии, медицине, транспорте, получил международные награды. Был архитектором единой информационной системы МВД Украины. Преподавал в трех ВУЗах и читал лекции у более 10 тысяч студентов. Сделал более 150 докладов, организовывал международные конференции.

Что я вынес из этих 30 лет опыта, что важно и что помогло бы мне двигаться быстрее, если бы я знал это с самого начала:
- Длинная воля — способность к глубокому изучению специальности, а не поверхностному копированию решений, это фундамент профессионального роста.
- Обучение других — лучший способ самому разобраться в теме и получить критику своего кода, научиться делать проще и пояснять как оно работает, а потом переделывать еще проще.
- Открытый код — возможность получить обратную связь от сообщества и показать свой уровень экспертизы, принести пользу и сохранить свой труд для многократного переиспользования коллегами.
- Публичные выступления — развитие навыков объяснения сложных концепций простыми словами и построения репутации интересного докладчика дало мне больше чем известность, это позволило натренировать скил открытого профессионального разговора, который нужен и в переговорах и в обсуждениях.
- Ревью кода учат нас больше, чем его написание, причём и ревью которые мы делаем и которые получаем.
- Нужно писать как можно проще — сложный код говорит о незрелости инженера, о неспособности разделить на части задачу и применять всю мощь языка, платформы и железа.
- Мультипарадигменное программирование победило — умение комбинировать разные парадигмы и получать кода с разными характеристиками, это ключевое для всех современных языков.
- Борьба парадигм бессмысленна — каждая парадигма сильна в своем, важно понимать их сильные и слабые стороны и формировать набор идей, синтаксисов, абстракций и приемов под задачу.
- Основной инженерный принцип SoC (Separation of concerns) — основа предсказуемого и поддерживаемого кода, а паттерны — это не теория, а сконцентрированная практика и мудрость, заточенная для переиспользования, не привязанная к языку и платформе.
- Доброжелательность важнее знаний, а токсичность, гордость и ненависть разрушают все, к чему прикоснутся.

Github: https://github.com/tshemsedinov
Youtube: https://www.youtube.com/@TimurShemsedinov
LinkedIn: https://www.linkedin.com/in/shemsedinov
Twitter: https://twitter.com/tshemsedinov
🔥4628👍23
...Патерны не были частью моего майндсета, когда знание паттернов на автомате влияет на то, какой код я БУДУ писать и как сделать это лучше.

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

Я бы посоветовал пройти курсу каждому, особенно на начале своего пути, смотря на материал Тимура, я думаю что все люди которых я смотрел при обучении просто сами ничего не знали, ещё и меня заставили посмотреть и дать ощущение будто и я теперь всё знаю. Поэтому вместо того чтобы годами смотреть тонны мусора(увы говно-контента в интернете валом), один раз стоит пройти курс.

Цена курса ничтожно мала в сравнении с тем что вы заплатите смотря годами ютуб


Евгений

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

После прохождения курса я получил много новой и полезной информации, а также более глубокое понимание JavaScript.

Сейчас я пишу код более осмысленно, постепенно внедряю решения, которые увидел на курсе. Я стал меньше сомневаться в своих решениях и больше думать о качестве кода.

Рекомендую этот курс всем, кто хочет повысить свой уровень.


Виталий С.

Честно скажу: до этого я смотрел десятки англоязычных курсов и материалов, но этот курс оказался лучшим, что есть. Он не про “книжные паттерны”, а про живые, осмысленные решения, адаптированные под современный JavaScript и реальные задачи.

После курса взгляд на проект изменился полностью. Теперь я могу разложить систему на логичные модули, правильно выбрать паттерны и архитектурные подходы, а главное — формулировать точные задачи для LLM, чтобы она писала код, который идеально вписывается в общую логику.

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


Александр К.

Подробности на сайте: https://nodeua.com/Patterns-2025
👍11💯53👎1😁1
Паттерны решают ключевые проблемы как разработки, так и вашего профессионального роста:

- Упрощают коммуникацию и ускоряют понимание между специалистами, дают профессиональный словарь терминов, это как Ubiquitous Language (Единый язык в Domain-Driven Design от Эрика Эванса) только не для предметной области, а для типичных инженерных решений, повторяющихся в каждом проекте. Очень помогает не называть все "штуковиной" или "контроллеров", а то у многих все приложение состоит из одних только контроллеров, потому что словарного запаса не хватает называть решения грамотными техническими терминами. Паттерны позволяют ставить задачу для LLM и писать ТЗ джуну или комментарий к пул-реквесту понятный коллегам.
- Все это очень экономит время, паттерны дают структуру и предсказуемость, разработка ускоряется минимум в 2-3 раза. Постоянные баги и переписывания одних и тех же частей кода сходят на нет, потому что терминология даёт нам самим возможность осознанно размышлять над структурой приложения, а SOLID и GRASP принципы готовят код к принятию архитектурных решений, багов становится в разы меньше.
- Типовых решений в проектах всегда множество, когда вы заняты не тушением пожаров, а выделением этих решений в библиотеки, абстрагированием их от предметной области, тестированием, оптимизацией, популяризацией среди коллег, то ни о каком выгорании или отсутствии профессионального роста уже и речь не может идти, у вас всегда есть материал для статьи, доклада, для митапа в своем городе или внутри компании.
- Принципы GRASP и SOLID должны стать для вас не теоретическими, а спуститься до реальных снипетов кода, примеров и юзкейсов. Так что вы можете быстро вынуть из памяти несколько шаблонов под специфику практической задачи. Например, Low Coupling начинает ассоциироваться с тем, что мы признаем mix-inы нежелательным изменением структуры объекта после его создания, это нарушение закона Деметры, которое решается делегированием и структурной композицией.
- Паттерны — это не столько теория, сколько упражнения, на примере которых вы качаете навык, понимание рантайма, взаимодействие с коллегами, экспертизу и интуицию. Паттерны дают глубокое понимание кода через тренировку часто встречающихся ситуаций.

Обзор курса: https://youtu.be/8a9PX12FB9s
👍125💯3👎1
🧩 Для подготовки к курсу Patterns 2025 я буду в ближайшие 2 недели проводить онбординг. Он нужен чтобы подогнать базовые знания для лучшего понимания курса. Для тех, кто уже забронировал место он проводится как созвоны и текстовые инструкции, а для всех остальных я решил в отдельном канале расшарить часть материалов вступительного тренинга в свободном доступе. Переходите по ссылке и добавляйтесь в канал 👉 https://t.me/+I-suNalcHC03NGUy
5👍3🔥2
Что нужно знать, чтобы пойти на Patterns 2025 и нужно ли сначала идти на Async 2025 или курс по Node.js. Отвечаю: Async и Node.js проходить до Patterns не нужно. Материалы из этих курсов, которые нужны для понимания Patterns или будут полезны как примеры использования, я даю на курсе. Что нужно знать, это большой вопрос, сначала кратко, потом подробно читайте дальше...

Входные требования: JavaScript syntax, OOP and async programming basics, как минимум год практического программирования, чтобы столкнуться с реальными проблемами на практике и знать, чего хочешь от курса. Владение базовым TypeScript будет большим плюсом, но не обязательное.

Желаемое владение следующими терминами и концепциями: Value, Identifier, Variable, Constant, Scalar, Literal, Statements and Expressions, Code block, Conditions, Loops, Assignment, Lexical scope, Primitive types, Reference types, Call stack, Function, Arrow function, Async function, Method, Class, Inheritance, Polymorphism, Encapsulation, Interface, Getters and setters, Structural composition, Aggregation, Prototype, Constructor, Signature, Argument, Parameter, Recursion, Callback, Callable, Generator, Iterator, Serialization, Pure function, Lambda expression, Side effects, Closure, Array, Structure, Record, Destructuring, Enum, Collection, Set, Hash table, Linked list, Queue, git, Docker, Linux basics and shell, Bitwise operators, Ternary operator, Promise, async/await, Static and Private fields, Modularity (ESM, CommonJS), Unit tests, Error handling,

Желаемые, но необязательные знания: Heap, Procedure, Type, Flag, Regular expression, Interface, Namespaces, Type systems, Strong typing, Weak typing, Duck typing, Static typing, Dynamic typing, Nominal typing, Structural typing, Explicit typing, Partial application, Currying, Higher order, Function composition, Pipe, Memoization, Mutable state, Immutable state, Stack, Deque, Tree, Graph, Async generator, Async iterator, Chaining, IIFE, Async IIFE, void, yield, Property descriptors, Sealing properties, Freezing properties, Functional object, WeakMap, WeakSet, Typed arrays, Mixins, Proxy, Reflect, Atomics, WeakRef, FinalizationRegistry, Abstract class, Hidden class, Object form, Introspection, Reflection, Event loop, Debugging, Profiling, Flame graph, Memory dump, Chrome Developer tools, CI and building tools, DOM manipulation, Fetch API, npm/yarn, Semantic versioning, Linting, Covariance, Contravariance, Type inference, Type guards, Union types, Generics, Algebraic data types, Pattern matching, Trie, B-tree, Red-black tree, AVL tree, Binary search tree, Big O notation and complexity, WebAssembly, Service Workers, Web Workers, Streams API, Observables, Disposable

Подробности на отдельном канале: https://t.me/+I-suNalcHC03NGUy
7👍4🔥1💯1