PRO курс

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

5126 сообщений в сообществе 4021 учащихся

Продолжение изучения составных данных на более продвинутом уровне. Рассматриваем тип данных «список». В течение курса работаем над проектом «Генератор 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.

    тесты

Испытания

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

Автор

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

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

Впечатления

В ходе долгих мучений, пришло прозрение и все встало на свои места:

«Мы становимся крепче там, где ломаемся», — Хемингуэй

Ох сколько мороки было с функцией concat пока не понял, как её можно реализовать. Всё-таки огромное удовольствие испытываешь, когда после долгих мучений все тесты становятся зелеными =). Хм... похожие эмоции я испытывал в серии игр Dark Souls )). Решение учителя заставило смеяться - настолько просто и красиво написано. Спасибо!

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

Спасибо за упражнения, хотелось бы видеть упражнения где необходимо использовать (чтобы без этого было сложно решить) каррирование, частичное выполнение итд, вобщем все из уроков по функциям.

P.S. очень помогла подсказка с concat где нужно представить как будет реализовано копирование последовательности, спасибо.

Здравствуйте, спасибо за такие задачи. Реально мозги начинают думать.

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