Продолжение изучения составных данных на более продвинутом уровне. Рассматриваем тип данных «список». В течение курса работаем над проектом «Генератор HTML», и на практике учимся понимать и использовать функции высшего порядка filter, map и reduce. Знакомимся с иерархическими структурами и уровневым проектированием.
Чему вы научитесь:
- Строить сложные структуры данных на базе более простых
- Проектировать функции так чтобы их можно было легко соединять друг с другом
- Обрабатывать коллекции представленные списками с помощью функций высшего порядка (map/filter/reduce)
- Разделять код на уровни выстраивая правильное взаимодействие между слоями
Уроки курса
-
2
Представление последовательностей
Вспомнить пары (pairs) и рассмотреть представление списков с помощью пар. -
5
Фильтрация списков
Изучить новую очень важную операцию — фильтрацию. Рассмотреть функцию filter, которая является одной из трех главных функций высшего порядка в функциональном программировании. Понять, как реализована функция filter внутри, и как она помогает писать хороший декларативный код на примере функции удаления тегов. -
7
Стандартные интерфейсы
Понять, какие преимущества дает хорошая абстракция, и как писать код таким образом, чтобы его было легче комбинировать впоследствии. Рассмотреть примеры построения сложных конструкций с помощью простых базовых элементов. Вникнуть в идею стандартных интерфейсов. -
8
Иерархические структуры
Перейти к построению иерархических структур с помощью пар. -
9
Уровневое проектирование
Изучить подход «уровневого проектирования», примером которого является наша реализация библиотеки для работы с HTML.тесты
Испытания
Это практические задания, которые мы советуем выполнить после завершения курса. Задания помогут вам получить дополнительный опыт в программировании и закрепить полученные навыки.
# | Задание | % завершений |
---|---|---|
1 | Уникальное объединение | 89% |
2 | Выбор по селектору | 53% |
3 | Задача про ферзей | 64% |
4 | Списки на базе строк | 67% |
5 | Молния | 94% |
6 | Периметр многоугольника | 80% |
7 | Первые n элементов | 93% |
8 | Выравнивание | 85% |
9 | Быстрая сортировка | 77% |
10 | Одинаковая четность | 95% |
Автор
Сооснователь и CEO образовательного проекта Хекслет. Программирую с 2007 года. За это время прошёл путь от разработчика до технического директора и управляющего отдельным подразделением (филиалом). Управлял командами, в которых больше 50 разработчиков.
- Программирую на языках: Elixir, Clojure, JavaScript, PHP, Ruby.
- Соорганизатор конференции Nastachku.ru.
- Вимер.
- Топлю за DevOps и автоматизированные тесты.
Впечатления
АААААА просто жесть!) Несколько дней сидела по несколько часов. Ночами во снах видела окошко Хекслета и не проходящие тесты. Километры обсуждений, стопки исписанных листов. Хотелось все бросить и посмотреть решение учителя. В конечном итоге, третья функция решена. Последней каплей в моем понимании стало написание всех свойств функции, которыми она должна обладать (какой параметр должен браться, куда записываться, как взять поэлементно, расписать рекурсивно некий образ вызова всех элементов и т.д.). Когда увидела три галочки в тестах, даже как-то не отлегло, какой-то осадок остался в душе)) Будто не я сама это решила, а кто-то за меня написал. Но так оно и есть) Коллективно из обсуждений родилось решение. СПАСИБО ВСЕМ!
Автор задания просто красавчик. Так закрутил все. Респект и уважуха ))
Удивился, как быстро удалось написать emptyTagsCount
. Буквально одной левой передал тип элемента в функцию для reduce
. Каррирование и "функции, возвращающие функции" даром не прошли. Тот момент, когда уже научился ездить на велосипеде, но сам еще не можешь в это поверить :)
Да,надо отметить,что мозги горят. решил обе функции сам,но первую с помощью внутренней итеративной функции. поглядел решение учителя и переписал без подсматриваний на аналогичное. т.е. понимание есть!<br> что касается emptyTagsCount,то пришлось подключить filter из прошлого урока,отфильтровать сначала все элементы типа,потом из них итеративно выбрать элементы с нулевым содежанием value. а все потому,что не смог правильно описать условие,как у учителя. в общем буду сейчас дальше биться,чтобы дописать до его варианта. только так понимание и приходит! спасибо за уроки,они отличные!
Классные задания, чувствую, как мозг кипит и шевелится) Спасибо!)