Классическое программирование для фронтендеров

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

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

Выступления

Выступление на FrontTalks в Екатеринбурге
18 сентября 2016 Презентация (PDF, 5 МБ)
Выступление на Moscow JS Conf в Москве
24 сентября 2016 Презентация (PDF, 5 МБ)
Выступление на Фронтенд-Миксе в Яндекс.Деньгах в Питере 7 июля 2016

Презентация (PDF, 20 МБ)

Практика

Битовые массивы

Битовый массив или битовая карта (bitset, bitarray, bitmap) — последовательность бит (нулей и единиц). Правильное использование битовых массивов поможет писать более производительный и лучше поддерживаемый код. Если же использовать битовые массивы вместе со словарями, можно писать код в декларативном стиле

Библиотека от HTML Academy для работы с битовыми картами
Разработка компоненты со сложным состоянием, интерактивная демка


Деревья

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

Использование дерева для описания зависимостей в форме, интерактивная демка