2.5Kпросмотров
62.2%от подписчиков
10 марта 2026 г.
Score: 2.8K
Создать библиотеку с нуля Когда начинаешь свой путь в программировании, многие вещи воспринимаются смутно. Вроде бы ты их используешь: копируешь примеры из документации или генерируешь через агента или бота, но что конкретно происходит в той или иной строчке — загадка. Вот мой пример: первым языком, на котором я писал продолжительное время, был PHP. И я совершенно не понимал его ООП-сторону. То есть я пользовался объектами в библиотеках: создать экземпляр, вызвать метод. Но абсолютно не понимал, что при этом происходит и зачем это нужно. Написал $foo->bar() — вроде работает, но что за что отвечает — непонятно. Для меня программирование тогда было не «думаньем над задачей», а попыткой подобрать правильный пазл: поменял строчки местами — заработало. Я даже коллекционировал такие «пазлы»: вот код, чтобы прочитать файл, вот чтобы распарсить CSV. Я не думал, как они работают, а просто вставлял их под задачу. Сейчас понимаю, что это очень напоминает вайб-кодинг. Проблема в том, что ты никогда не преодолеешь этот барьер, пока не перестанешь бездумно копировать, а потратишь время и разберешься основательно. Но как это сделать? На мой взгляд, один из лучших способов — написать свою библиотеку. Да, придется попотеть: тут и теория, и практика, и поиск одного верного решения среди ста неверных. Но результат не разочарует — информация, полученная так, никогда не забудется и станет фундаментом для новых знаний: сразу становится понятно, как и зачем это можно использовать. Но слова словами, а код сам себя не напишет. Поэтому предлагаю устроить небольшой показательный мастер-класс: мы с тобой создадим свою библиотеку и заодно детально разберёмся с генераторами в JavaScript. Наша библиотека будет предлагать API для организации легковесных потоков, работающих по принципам кооперативной многозадачности. 🧐Звучит мудрёно? Давай поясню. В JavaScript постоянно приходится иметь дело с асинхронщиной: события, промисы — всё вокруг асинхронное. И при всём этом исполнение остаётся однопоточным — написал тяжёлый обработчик события, и интерфейс встал колом. Справиться с такими подвисаниями можно тремя способами: оптимизировать сам код; вынести вычисления в воркер/сервер; либо спроектировать выполнение так, чтобы задачи могли приостанавливаться и давать дорогу другим. Вот это последнее и есть кооперативная многозадачность. Ключевой принцип здесь — программы сами решают, когда уступить поток выполнения, а значит, мы можем гибко этим управлять, выжимая максимум производительности. 📚Именно этому и будет посвящен ОТКРЫТЫЙ УРОК в четверг 12 марта в 19:00: - Поймем разницу между кооперативной и вытесняющей многозадачностью
- Научимся применять кооперативную многозадачность в JS для устранения фризов и проблем с памятью
- Исследуем практическое применение генераторов на конкретном практическом примере ЗАРЕГИСТРИРОВАТЬСЯ НА УРОК БАЗА решает. До встречи в четверг!