❓ Почему читаемость и простота кода стратегически важна для программных систем?
💡 Казалось бы, оптимизация не критична, работает же, и ладно. По потреблению ресурсов это так, ну ест в 10 раз больше памяти и процессора, это часто не критично. Сложно читаемый код связывает ресурсы разработчиков и проект очень быстро увязает в долгих изменениях. Переписать сложно, а добавлять новые возможности выходит все медленнее. В какой-то момент все это схлопывается и код отправляется на свалку.
✅ Семантическая оптимизация, направленная на понятность, упрощение, читаемость, скорость изменений, гибкость кода, оказываются на порядок важнее потребления ресурсов.
👉 Но какие техники программирования к этому ведут? Подробнее будет скоро видео на моем ютюбе: https://youtube.com/@TimurShemsedinov
💡 Казалось бы, оптимизация не критична, работает же, и ладно. По потреблению ресурсов это так, ну ест в 10 раз больше памяти и процессора, это часто не критично. Сложно читаемый код связывает ресурсы разработчиков и проект очень быстро увязает в долгих изменениях. Переписать сложно, а добавлять новые возможности выходит все медленнее. В какой-то момент все это схлопывается и код отправляется на свалку.
✅ Семантическая оптимизация, направленная на понятность, упрощение, читаемость, скорость изменений, гибкость кода, оказываются на порядок важнее потребления ресурсов.
👉 Но какие техники программирования к этому ведут? Подробнее будет скоро видео на моем ютюбе: https://youtube.com/@TimurShemsedinov
🔵 Metarhia / Sphere — концепция и техничесткое задание на цифровую платформу в открытом коде https://youtu.be/iAJ7dbdNrXk
⭐️ Кто смотрел мои лекции или проходил курс по ноде, джаваскрипту или асинхронному программированию, и хотел бы набрать практического опыта разработки, проекты в открытом коде - это лучший вариант, можно контрибьютить в Ноду, Метархию, но это системный код. А практику и прикладного и системного кода можно набрать в нашем новом проекте Sphere. Что это, я описал на английском вот тут оригинал концепции, и тут же я пишу ТЗ каждый день понемногу: https://github.com/metarhia/Sphere
👉 Заходите в канал https://t.me/MetarhiaChiefs и группу https://t.me/metaserverless где мы будем организовывать разработку этой платформы
⭐️ Кто смотрел мои лекции или проходил курс по ноде, джаваскрипту или асинхронному программированию, и хотел бы набрать практического опыта разработки, проекты в открытом коде - это лучший вариант, можно контрибьютить в Ноду, Метархию, но это системный код. А практику и прикладного и системного кода можно набрать в нашем новом проекте Sphere. Что это, я описал на английском вот тут оригинал концепции, и тут же я пишу ТЗ каждый день понемногу: https://github.com/metarhia/Sphere
👉 Заходите в канал https://t.me/MetarhiaChiefs и группу https://t.me/metaserverless где мы будем организовывать разработку этой платформы
YouTube
Metarhia / Sphere — концепция и техничесткое задание на цифровую платформу в открытом коде
⭐️ Кто смотрел мои лекции или проходил курс по ноде, джаваскрипту или асинхронному программированию, и хотел бы набрать практического опыта разработки, проекты в открытом коде - это лучший вариант, можно контрибьютить в Ноду, Метархию, но это системный код.…
🚀 Architecture 2024
This is a small part of a new course I'm working on🖼 Metarhia Architectural Principles:
* Isolation with IoC (Inversion of Control) and DI (Dependency Injection)
* Metaprogramming (dynamic metamodel interpretation)
* Platform-agnostic domain codebase
* Layered architecture (no system code in applications)
* Multiparadigm programming and semantic code
* Wide use of DSL (Domain-Specific Languages)
* Contract programming (defined with schemas)
* Modularity with auto-binding (no dependency locators in domain code)
👉 News will be here: https://t.me/MetarhiaChiefs
This is a small part of a new course I'm working on
* Isolation with IoC (Inversion of Control) and DI (Dependency Injection)
* Metaprogramming (dynamic metamodel interpretation)
* Platform-agnostic domain codebase
* Layered architecture (no system code in applications)
* Multiparadigm programming and semantic code
* Wide use of DSL (Domain-Specific Languages)
* Contract programming (defined with schemas)
* Modularity with auto-binding (no dependency locators in domain code)
👉 News will be here: https://t.me/MetarhiaChiefs
Please open Telegram to view this post
VIEW IN TELEGRAM
🔁 Автоматическое преобразование исключений в события — посмотрите код в примере. Да, это работае в #NodeJS еще с версии v12.16.0 и такого очень много в асинхронном программировании и в ноде. При чем все события 'error' придут после завершения цикла for..of, а вот события 'item' будут приходить по ходу цикла. Почему так и как сделать, чтобы они приходили в пордке цикла? Это задания из курса 👉 Async 2024: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Async-2024.md
Здесь могли бы быть и ваши поздравления:
👉 https://github.com/tshemsedinov
👉 https://youtube.com/@TimurShemsedinov
👉 https://www.linkedin.com/in/shemsedinov
👉 https://twitter.com/tshemsedinov
👉 https://www.facebook.com/tshemsedinov
👉 https://github.com/tshemsedinov
👉 https://youtube.com/@TimurShemsedinov
👉 https://www.linkedin.com/in/shemsedinov
👉 https://twitter.com/tshemsedinov
👉 https://www.facebook.com/tshemsedinov
Что из этого вы использовали для улучшения обработки ошибок?
Anonymous Poll
4%
AggregateError
7%
Error.prototype.cause
49%
Свои классы extends Error
23%
Хватает Error, своих не делаю
56%
Предпочитаю throw
5%
Предпочитаю без throw
29%
Пишу finally для try и Promise
9%
Мне finally не нужен
Forwarded from Metarhia/NodeUA - Node.js Ukraine Community
Что такое семантика кода?
В новом API промисифицированном setInterval возвращает асинхронный итератор, а цикл for await на каждой итерации дает один и тот же объект items. Мы конечно можем использовать shift для того, чтобы модифицировать массив на каждой итерации, но это еще больше запутывает семантику. Идея итерирования сломана.
Другие подобные примеры в курсе Node.js 2024: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/NodeJS-2024.md
В новом API промисифицированном setInterval возвращает асинхронный итератор, а цикл for await на каждой итерации дает один и тот же объект items. Мы конечно можем использовать shift для того, чтобы модифицировать массив на каждой итерации, но это еще больше запутывает семантику. Идея итерирования сломана.
Другие подобные примеры в курсе Node.js 2024: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/NodeJS-2024.md
Вы знаете зазницу между
events.once
и EventEmitter.prototype.once
, то, что они одинаково называются, сбивает многих с толку, тут задача, направленная на выявление разницы: https://github.com/HowProgrammingWorks/Events/blob/main/JavaScript/Tasks/5-once.js⚠️ Запись на курсы Async 2024 и NodeJS 2024 закрывается 30 апреля. Я хочу реорганизовать формат обучения, и таких длинных годичных курсов я наверно делать не буду больше, максимум 3 месяца для материала. А в формате года - будет интернатура, работа на проекте. Все, кто уже на учатся по плану до конца года. Кто начал позже - не беда, материалы все в записи есть, а практику делать и задавать вопросы - есть созвоны (3 раза в неделю это по двум курсам если должно хватить всем).
👉 Async 2024: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Async-2024.md
👉 NodeJS 2024: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/NodeJS-2024.md
👉 Async 2024: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Async-2024.md
👉 NodeJS 2024: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/NodeJS-2024.md
Как нужно писать вакансию (или CV):
- 10 лет опыта высоконагруженной архитектуры
- 7 лет опыта параллельного программирования
- 5 лет опыта паттернов банды четырех
- 3 года как покрываю код тестами
- 2 года как программирую без switch/case
- 1 год опыта с функциями до 10 строк
- Уже неделя понятного именования переменных
Хобби:
- В свободное время люблю обрабатывать ошибки
ВУЗы 50 лет клепают людей, умеющих в сортировки, красночерные деревья, списки и графы, но не способных дать имя переменной.
Компании 15 лет как спрашивают на собесах про идемпотентность и решардинг, но не обращают внимание на синтаксический мусор в коде и семантический кретинизм у кандидатов.
- 10 лет опыта высоконагруженной архитектуры
- 7 лет опыта параллельного программирования
- 5 лет опыта паттернов банды четырех
- 3 года как покрываю код тестами
- 2 года как программирую без switch/case
- 1 год опыта с функциями до 10 строк
- Уже неделя понятного именования переменных
Хобби:
- В свободное время люблю обрабатывать ошибки
ВУЗы 50 лет клепают людей, умеющих в сортировки, красночерные деревья, списки и графы, но не способных дать имя переменной.
Компании 15 лет как спрашивают на собесах про идемпотентность и решардинг, но не обращают внимание на синтаксический мусор в коде и семантический кретинизм у кандидатов.
Forwarded from Metarhia/NodeUA - Node.js Ukraine Community
🔁 Какие проблемы асинхронного программирования Вам мешают?
Anonymous Poll
20%
Плохо читается смысл кода
32%
Непредсказуемая очередность
16%
Нестабильность результата
32%
Сложность отладки
24%
Сложность тестирования
18%
Сложность обработки ошибок
16%
Callback hell
14%
Блокирование event loop
25%
Утечки памяти и ресурсов
44%
Состояние гонки и блокировки
Все время уходил от вопроса, про литературу, которую стоит читать программистам, это потому, что мой список выглядит странно и сложно объяснить, почему не Дядя Боб и не Мартин Фаулер... Они тоже, конечно, полезны, но все же мой список такой:
- Рене Декарт
- Людвиг Витгенштейн
- Ноам Хомский
- Кристофер Александер
- Алан Тьюринг
- Джон фон Нейман
- Норберт Винер
- Виктор Глушков
- Клод Шеннон
- Людвиг фон Берталанфи
- Стаффорд Бир
- Уильям Эшби
- Эдсгер Дейкстра
- Дональд Кнут
Это не так много, и точно более полезно, чем нетфликс и амазон
- Рене Декарт
- Людвиг Витгенштейн
- Ноам Хомский
- Кристофер Александер
- Алан Тьюринг
- Джон фон Нейман
- Норберт Винер
- Виктор Глушков
- Клод Шеннон
- Людвиг фон Берталанфи
- Стаффорд Бир
- Уильям Эшби
- Эдсгер Дейкстра
- Дональд Кнут
Это не так много, и точно более полезно, чем нетфликс и амазон
Forwarded from Metarhia/NodeUA - Node.js Ukraine Community
🖼 Какие возможности Node.js для организации серверов вы знаете? Если что-то неизвестное, обновлены примеры тут: https://github.com/HowProgrammingWorks/NodeServer
Anonymous Poll
25%
IP sticky
41%
TLS (Transport Layer Security)
12%
Multidomain support
9%
Server Name Indication (SNI)
7%
ALPN (Application-Layer Protocol Negotiation)
41%
Clustering
85%
WS/WSS (Websocket)
🎓 Позиция сообщества Метархия по платному IT образованию:
1⃣ Все материалы для начинающих должны быть бесплатными, чтобы они могли стартовать без вложений. Новички не могут отличить качественные курсы от пустых, слабо ориентируются и часто попадают на инфомошенников, хоть интернет полон бесплатными материалами для новичков.
2⃣ Платные курсы, наставники, интернатура, ревью кода и консультации — это только для тех, кто уже освоил базовое программирование, работает или имеет возможность работать за деньги. Такие люди уже понимают чего хотят и могут оценить качество обучения.
3⃣ Обучение это не просмотр видео и не решение задачек с литкода, а практика написания продуктового или системного кода, приближенного к реальному, семинары, обсуждения, ревью.
4⃣ Важно научиться писать понятный, а не быстрый код. Оптимизации нужно подвергать 1% критического кода, после того, как он заработал, и именно этот 1% дает 99% всех тормозов.
5⃣ Учиться нужно в группах и после первых 6 месяцев, обязательно на реальных проектах, потому, что работать вы будете в коллективе, где более половины навыков, это понимание коллег и взаимодействие с ними.
1⃣ Все материалы для начинающих должны быть бесплатными, чтобы они могли стартовать без вложений. Новички не могут отличить качественные курсы от пустых, слабо ориентируются и часто попадают на инфомошенников, хоть интернет полон бесплатными материалами для новичков.
2⃣ Платные курсы, наставники, интернатура, ревью кода и консультации — это только для тех, кто уже освоил базовое программирование, работает или имеет возможность работать за деньги. Такие люди уже понимают чего хотят и могут оценить качество обучения.
3⃣ Обучение это не просмотр видео и не решение задачек с литкода, а практика написания продуктового или системного кода, приближенного к реальному, семинары, обсуждения, ревью.
4⃣ Важно научиться писать понятный, а не быстрый код. Оптимизации нужно подвергать 1% критического кода, после того, как он заработал, и именно этот 1% дает 99% всех тормозов.
5⃣ Учиться нужно в группах и после первых 6 месяцев, обязательно на реальных проектах, потому, что работать вы будете в коллективе, где более половины навыков, это понимание коллег и взаимодействие с ними.
«Преждевременная оптимизация — корень всех зол». Дональд Кнут это ещё в 1974 сказал, но люди сейчас Кнута не читают и с первого месяца обучения до 2-3 лет опыта им очень важно сравнить for/while/do..while/forEach/for..of/for..in/reduce/map для несчастного сложения 5 чисел в массиве, которое вызывается 2 раза в час.
Forwarded from Asynchronous Programming
Patterns for Async & Node.js
Rethinking GRASP, SOLID, and GoF patterns for Frontend & Backend
Опрос для формирования нового курса по переосмыслению принципов GRASP и SOLID, а так же паттернов проектирования (классических GoF и дополнительных), чистой архитектуры и проектирования архитектуры на базе DDD (Domain-driven design) для фронтенд и бекенд инженеров.
10 самых интересных ответов получат мои рекомендации по поднятым темам и ссылки на решения этих проблем из моих открытых и закрытых лекций, семинаров, тренингов, а если нет таких материалов, то я постараюсь ответить лично и привести примеры кода. 👉 https://forms.gle/zE78uTAqKR3GWAoq5
Rethinking GRASP, SOLID, and GoF patterns for Frontend & Backend
Опрос для формирования нового курса по переосмыслению принципов GRASP и SOLID, а так же паттернов проектирования (классических GoF и дополнительных), чистой архитектуры и проектирования архитектуры на базе DDD (Domain-driven design) для фронтенд и бекенд инженеров.
10 самых интересных ответов получат мои рекомендации по поднятым темам и ссылки на решения этих проблем из моих открытых и закрытых лекций, семинаров, тренингов, а если нет таких материалов, то я постараюсь ответить лично и привести примеры кода. 👉 https://forms.gle/zE78uTAqKR3GWAoq5