В бесплатном курсе Patterns Mini вышли последние три лекции и там не только про GRASP и SOLID, но есть, например, паттерн SAGA и его реализацию через оркестрацию и хореографию https://nodeua.com/Patterns-2025-free
❤10👍2🔥2😁1
Выводы: если что-то работает, но мы не видим, что за этим стоит обширная теория, может казаться, что оно просто работает, но нет, как Маккарти понял из Черча только слово функция и еще символ лямбда понравился, примерно в таком же стиле процедурное программирование связано с машиной Тьюринга. Просто мы еще находимся на начальном этапе становления программирования, через 200-300 лет могут быть построены адекватные теории, а сейчас пока много мифов и псевдонаучного бреда, не нужно делать вид, что все все поняли и из правильной теории напрямую вывели красивую практику и построили технические решения, все складывалось кое-как, работает и работает. Затем вывели из практики инженерные обобщения как GRASP, SOLID, GOF, они ненаучны, они полностью практичны, и ограничены, но работают, более того, и для ФП работают, имея определенные ограничения, нужно больше времени, чтобы объединить это в теорию, и вот когда ее выведут, общую для всех парадигм, то людям, которые будут учиться по новым книгам, будет казаться, что это все так и было выведено сразу гладко и согласовано.
https://youtu.be/bUwCRiED4Uo
https://youtu.be/bUwCRiED4Uo
👍7🤯2💯1
🧩 Через неделю мы начинаем курс Pattern 2025
Уже заполнено 70% мест, со среды цены поднимутся.
https://nodeua.com/Patterns-2025
- Курс Patterns Mini уже завершился
- В выходные будет воркшоп по парадигмам программирования
- С понедельника начинается первая неделя 2025 года
Уже заполнено 70% мест, со среды цены поднимутся.
https://nodeua.com/Patterns-2025
- Курс Patterns Mini уже завершился
- В выходные будет воркшоп по парадигмам программирования
- С понедельника начинается первая неделя 2025 года
👍9🎉3❤1
Напоминаю, в субботу и воскресенье 22-23 ноября воркшоп по парадигмам. Раньше он был частью курса по паттернам, но я вынес его в отдельный воркшоп. Все, кто до завтра успеет купить курс по паттернам, попадают на воркшоп бесплатно.
Владение несколькими парадигмами и разными стилями написания кода стало сейчас важным для практической работы, оно не только позволяет понимать код коллег и быстро вникать в соседние языки и платформы, но расширяет мышление и делает разработчика гибким и более конкурентоспособным.
До начала курса по паттернам очень важно понимать базовые принципы ООП, ФП, процедурного и прототипного программирования, разные стили: асинхронный, реактивный, контрактный, декларативный. Отсидеться в одном фреймворке не удастся, свести все задачи к одной парадигме и стилю - тоже не выйдет.
Паттерны дают готовые проверенные решения для часто встречающихся ситуаций, ускоряя разработку, повышая эффективность взаимодействия с AI, позволяют видеть структуру кода, управлять его характеристиками для построения надежных архитектурных решений.
Знание парадигм помогает адаптировать паттерны для вашего конкретного случая, выбирать правильный инструмент под задачу, сокращая сложность и ошибки. Идеи ООП (инкапсуляция, структурная композиция, наследование, полиморфизм, делегирование, сокрытие, диспетчеризация, зацепление и связывание в коде) формируют устойчивые и поддерживаемые системы.
Паттерны + парадигмы дают общую архитектурную грамотность, без которой невозможно строить продукты на JavaScript и TypeScript. Осваивая парадигмы и паттерны Вы развиваете инженерное мышление, умение работать с абстракциями, связями, ответственностями и потоками данных.
Это фундамент, который превращает разработчика из автора скриптов на 1 раз в синьора, способного создавать масштабные, долгоживущие и надежные системы.
Владение несколькими парадигмами и разными стилями написания кода стало сейчас важным для практической работы, оно не только позволяет понимать код коллег и быстро вникать в соседние языки и платформы, но расширяет мышление и делает разработчика гибким и более конкурентоспособным.
До начала курса по паттернам очень важно понимать базовые принципы ООП, ФП, процедурного и прототипного программирования, разные стили: асинхронный, реактивный, контрактный, декларативный. Отсидеться в одном фреймворке не удастся, свести все задачи к одной парадигме и стилю - тоже не выйдет.
Паттерны дают готовые проверенные решения для часто встречающихся ситуаций, ускоряя разработку, повышая эффективность взаимодействия с AI, позволяют видеть структуру кода, управлять его характеристиками для построения надежных архитектурных решений.
Знание парадигм помогает адаптировать паттерны для вашего конкретного случая, выбирать правильный инструмент под задачу, сокращая сложность и ошибки. Идеи ООП (инкапсуляция, структурная композиция, наследование, полиморфизм, делегирование, сокрытие, диспетчеризация, зацепление и связывание в коде) формируют устойчивые и поддерживаемые системы.
Паттерны + парадигмы дают общую архитектурную грамотность, без которой невозможно строить продукты на JavaScript и TypeScript. Осваивая парадигмы и паттерны Вы развиваете инженерное мышление, умение работать с абстракциями, связями, ответственностями и потоками данных.
Это фундамент, который превращает разработчика из автора скриптов на 1 раз в синьора, способного создавать масштабные, долгоживущие и надежные системы.
👍8🫡3💯2❤1
🧩 Сегодня в 23:59 (GMT+3) поднимается цена на Patterns 2025, еще можно успеть
https://nodeua.com/Patterns-2025
⭐️ Воркшоп по парадигмам программирования 22-23 ноября
Программа воркшопа:
Суббота - с 11:00 до 14:00
Объектно-ориентированное программирование и обзор парадигм, как писать одновременно понятный и эффективный код, задания с проверкой, разбор решений в прямом эфире.
Воскресенье - с 11:00 до 14:30
Функциональное программирование, реактивное, асинхронное, контрактное, автоматное и другие парадигмы и обзор характеристик кода, которые они дают.
Для кого: если вы практикующий программист, но ощущаете, что ваши знания не системные, с пробелами и не упорядочены, то этот воркшоп очень быстро наведет порядок в большом объеме знаний и покажет практическое применение.
Будут рассмотрены понятия: инкапсуляция, наследование, полиморфизм (Ad-hoc, Subtype, Parametric, Dynamic dispatch и другие), структурная композиция, агрегация, делегирование, дженерики, закон Деметры, чистые функции, функции первого класса, мутабельности против иммутабельности, ссылочная прозрачность, функции высшего порядка, композиция функций, каррирование, частичное применение, ADT, скрытое и явное состояние, ленивые вычисления, декларативный и императивный стиль, рекурсия против циклов, обобщенное программирование, функторы, монады и мное другое.
Что говорят те, кто прошли воркшоп: начали понимать как оптимальнее решать свои задачи и ощутили уверенность в своих решениях, потому, что они были приняты не случайно и не потому, что всегда так делали или это единственное, что мы знали, а с пониманием разных подходов и характеристик кода, которые они дают, сильных и слабых сторон, получаемых в результате.
https://nodeua.com/Patterns-2025
⭐️ Воркшоп по парадигмам программирования 22-23 ноября
Программа воркшопа:
Суббота - с 11:00 до 14:00
Объектно-ориентированное программирование и обзор парадигм, как писать одновременно понятный и эффективный код, задания с проверкой, разбор решений в прямом эфире.
Воскресенье - с 11:00 до 14:30
Функциональное программирование, реактивное, асинхронное, контрактное, автоматное и другие парадигмы и обзор характеристик кода, которые они дают.
Для кого: если вы практикующий программист, но ощущаете, что ваши знания не системные, с пробелами и не упорядочены, то этот воркшоп очень быстро наведет порядок в большом объеме знаний и покажет практическое применение.
Будут рассмотрены понятия: инкапсуляция, наследование, полиморфизм (Ad-hoc, Subtype, Parametric, Dynamic dispatch и другие), структурная композиция, агрегация, делегирование, дженерики, закон Деметры, чистые функции, функции первого класса, мутабельности против иммутабельности, ссылочная прозрачность, функции высшего порядка, композиция функций, каррирование, частичное применение, ADT, скрытое и явное состояние, ленивые вычисления, декларативный и императивный стиль, рекурсия против циклов, обобщенное программирование, функторы, монады и мное другое.
Что говорят те, кто прошли воркшоп: начали понимать как оптимальнее решать свои задачи и ощутили уверенность в своих решениях, потому, что они были приняты не случайно и не потому, что всегда так делали или это единственное, что мы знали, а с пониманием разных подходов и характеристик кода, которые они дают, сильных и слабых сторон, получаемых в результате.
❤5👍1🔥1🤣1
На воркшопе по парадигмам (на этих выходных) я решил развернуть их сравнение через свойства кода, которые мы достигаем благодаря следующим идеям и их комбинациям:
- Control Flow: Statements, algorithm steps, Expression, Command-style, Declarative style
- State: Mutable, Immutable, Copy-on-write, Stateless
- Contexts: Objects, Records, Closures, Containers, Modules
- Branching: statement, expressions, guards, pattern matching
- Iteration: Loops, Recursion, Iterators / Generators, Streams
- Instantiation: Operator
- Inheritance: Classes (
- Primitive values: Scalars, Boxing, Value Objects, Containers
- Purity: Pure functions, Functions with side effects, IO monads
- Evaluation Flow: Function composition, Nested calls, Pipeline
- Dependencies: pass, injection, global namespaces, service locators
- Structural Control: Pattern matching, Nested
- Error handling: Total functions, Throwing exceptions, Error codes, Return
- Stability of Effects: Idempotent operations, Order-sensitive operations, Commutative / associative operations
- Resource Control: Manual destruction, RAII / disposables, Region-based allocation
- Concurrency Model: Shared-memory, Stateless, Message passing (Actor model), Transactional
- Asynchronity: Callback, Promise, Async/await, Future, Task, Async compose, Observer (EventEmitter, EventTarget, Signal), Streams and other abstractions
- Other topics: Data Ownership, Code granularity, Point-free style, Referential transparency
- Control Flow: Statements, algorithm steps, Expression, Command-style, Declarative style
- State: Mutable, Immutable, Copy-on-write, Stateless
- Contexts: Objects, Records, Closures, Containers, Modules
- Branching: statement, expressions, guards, pattern matching
- Iteration: Loops, Recursion, Iterators / Generators, Streams
- Instantiation: Operator
new, Creational patterns like Factory, Builder, Closures, Containers, Cloning- Inheritance: Classes (
extends), Interfaces (implements), Prototype programming, Mixins, Composition, Aggregation, Partial/Curry, Traits- Primitive values: Scalars, Boxing, Value Objects, Containers
- Purity: Pure functions, Functions with side effects, IO monads
- Evaluation Flow: Function composition, Nested calls, Pipeline
|>- Dependencies: pass, injection, global namespaces, service locators
- Structural Control: Pattern matching, Nested
if/else conditionals, Guards- Error handling: Total functions, Throwing exceptions, Error codes, Return
null, undefined, Null objects, Option / Either / Result / Promise- Stability of Effects: Idempotent operations, Order-sensitive operations, Commutative / associative operations
- Resource Control: Manual destruction, RAII / disposables, Region-based allocation
- Concurrency Model: Shared-memory, Stateless, Message passing (Actor model), Transactional
- Asynchronity: Callback, Promise, Async/await, Future, Task, Async compose, Observer (EventEmitter, EventTarget, Signal), Streams and other abstractions
- Other topics: Data Ownership, Code granularity, Point-free style, Referential transparency
❤5👍2🔥1💯1
Тут несколько примеров из завтрашних слайдов
Containers
Guards
in JavaScript
Pattern matching
in JavaScript
Do-notation
Pipeline operator
Declarative style
🧐 заходим, не стесняемся 👉 https://nodeua.com/Patterns-2025-paradigms
Containers
Box.of(42); Either.right(42); Promise.resolve(42);
let maybe: number | null = 42; type Pair = { a?: number; b?: number };
type Option<T> = { kind: 'some'; value: T } | { kind: 'none' };
std::optional<int>; std::tuple<int>; std::reference_wrapper<int>;
Nullable<int> maybe = 42; new StrongBox<int>(value); Tuple.Create(myIntValue);
Guards
func process(_ x: Int?) -> Int? {
guard let v = x else { return nil }
guard v >= 0 else { return nil }
return v * 2
}in JavaScript
const process = (x) => {
if (x === null) return null;
if (x < 0) return null;
return x * 2;
};Pattern matching
fn process(x: Option<i32>) -> Option<i32> {
match x {
None => None,
Some(v) if v < 0 => None,
Some(v) => Some(v * 2),
}
}in JavaScript
const match = (variant, handlers) => handlers[variant.tag](variant);
match({ tag: 'point', x: 10, y: 20 }, {
point: ({ x, y }) => `(${x}, ${y})`,
circle: ({ r }) => `radius: ${r}`
});
Do-notation
Do({ id: 15 })
.chain(({ id }) => ({ id, name: 'marcus', age: 42 }))
.chain(({ name, age }) => name === 'marcus' ? (log) => log(age) : () => {})
.run()(console.log);Pipeline operator
(({ id: 15 })
|> read
|> (({ name, age }) => name === 'marcus' ? (log) => log(age) : () => {})
)(console.log);Declarative style
execute({
read: { id: 15 },
success: {
match: { name: 'marcus' },
success: { effect: { log: 'age' } },
fail: { effect: 'noop' },
},
})(reader)(console.log);🧐 заходим, не стесняемся 👉 https://nodeua.com/Patterns-2025-paradigms
🔥5❤3🫡2👍1💯1