PRO курс

JS: Последовательности

5829 сообщений в сообществе 4371 учащихся

Продолжение изучения составных данных на более продвинутом уровне. Рассматриваем тип данных «список». В течение курса работаем над проектом «Генератор HTML», и на практике учимся понимать и использовать функции высшего порядка filter, map и reduce. Знакомимся с иерархическими структурами и уровневым проектированием.

Подготовительный курс

JS: Составные данные

Уроки курса

  • 1

    Введение

    Познакомиться с курсом и проектом «Генератор HTML», который будет постепенно разрабатываться в течение всего курса.
  • 2

    Представление последовательностей

    Вспомнить пары (pairs) и рассмотреть представление списков с помощью пар.

    тесты

    упражнение

  • 3

    Разметка

    Начать разрабатывать библиотеку для работы с HTML. Познакомиться с Markdown. Изучить общие принципы языков разметки на примере HTML.

    тесты

    упражнение

  • 4

    Отображение списков

    Рассмотреть функцию map и способ отображения списков.

    тесты

    упражнение

  • 5

    Фильтрация списков

    Изучить новую очень важную операцию — фильтрацию. Рассмотреть функцию filter, которая является одной из трех главных функций высшего порядка в функциональном программировании. Понять, как реализована функция filter внутри, и как она помогает писать хороший декларативный код на примере функции удаления тегов.

    тесты

    упражнение

  • 6

    Свертка

    Рассмотреть третий «столп» функционального программирования — функцию reduce. Понять, как она может помочь нам при создании обработчика HTML.

    тесты

    упражнение

  • 7

    Стандартные интерфейсы

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

    тесты

    упражнение

  • 8

    Иерархические структуры

    Перейти к построению иерархических структур с помощью пар.

    тесты

    упражнение

  • 9

    Уровневое проектирование

    Изучить подход «уровневого проектирования», примером которого является наша реализация библиотеки для работы с HTML.

    тесты

Испытания

Это практические задания, которые мы советуем выполнить после завершения курса. Задания помогут вам получить дополнительный опыт в программировании и закрепить полученные навыки.

Автор

Аватар пользователя Kirill Mokevnin

Кирилл Мокевнин

Сооснователь и технический директор образовательного проекта Hexlet. Программирует с 2007 года. За это время прошел путь от разработчика до технического директора и управляющего отдельным подразделением (филиалом). Управлял командами, в которых больше 50 разработчиков. Программирует на языках: elixir, clojure, javascript, php, ruby. Со-организатор конференции nastachku.ru. Вимер. Топит за DevOps и автоматизированные тесты.

Впечатления

АААААА просто жесть!) Несколько дней сидела по несколько часов. Ночами во снах видела окошко Хекслета и не проходящие тесты. Километры обсуждений, стопки исписанных листов. Хотелось все бросить и посмотреть решение учителя. В конечном итоге, третья функция решена. Последней каплей в моем понимании стало написание всех свойств функции, которыми она должна обладать (какой параметр должен браться, куда записываться, как взять поэлементно, расписать рекурсивно некий образ вызова всех элементов и т.д.). Когда увидела три галочки в тестах, даже как-то не отлегло, какой-то осадок остался в душе)) Будто не я сама это решила, а кто-то за меня написал. Но так оно и есть) Коллективно из обсуждений родилось решение. СПАСИБО ВСЕМ!

Автор задания просто красавчик. Так закрутил все. Респект и уважуха ))

Удивился, как быстро удалось написать emptyTagsCount. Буквально одной левой передал тип элемента в функцию для reduce. Каррирование и "функции, возвращающие функции" даром не прошли. Тот момент, когда уже научился ездить на велосипеде, но сам еще не можешь в это поверить :)

Да,надо отметить,что мозги горят. решил обе функции сам,но первую с помощью внутренней итеративной функции. поглядел решение учителя и переписал без подсматриваний на аналогичное. т.е. понимание есть!<br> что касается emptyTagsCount,то пришлось подключить filter из прошлого урока,отфильтровать сначала все элементы типа,потом из них итеративно выбрать элементы с нулевым содежанием value. а все потому,что не смог правильно описать условие,как у учителя. в общем буду сейчас дальше биться,чтобы дописать до его варианта. только так понимание и приходит! спасибо за уроки,они отличные!

Классные задания, чувствую, как мозг кипит и шевелится) Спасибо!)

Курс JS: Последовательности
продолжительность
20 часов
награда
76 баллов