Включено в курс
Чему вы научитесь
- Применять функциональное и декларативное программирование
- Создавать гибкие алгоритмы с помощью функции высшего порядка и лямбда-функции
- Обрабатывать сложные задачи с помощью рекурсивных функций с аккумулятором
- Улучшать читаемость, разделяя программу на модули и функциональные блоки
- Обрабатывать коллекции данных с помощью структуры данных и функции высшего порядка
Описание
На этом курсе вы познакомитесь с основами функционального программирования и понятием декларативного программирования. Вы узнаете, как использовать функции высшего порядка и работать с лямбда-функциями. Еще вы научитесь комбинировать функции, строить рекурсии с аккумулятором и оптимизировать хвостовую рекурсию. Также вы изучите структуры данных и научитесь использовать функции высшего порядка: map, filter и свертка. Вы познакомитесь с концепцией разделения программы на функциональные блоки и научитесь работать с общей структурой данных. В конце курса вы узнаете о присваивании и изменении состояния, а также о создании объектов. Вы рассмотрите преимущества и недостатки присваивания и сохранения состояния, чтобы лучше понимать, как использовать эти концепции в своих программах. Полученные знания помогут разрабатывать более эффективные и чистые программы. Этот курс является адаптацией под php знаменитого курса «Структура и интерпретация компьютерных программ», который преподается на первом курсе МИТ (Massachusetts Institute of Technology) с 70-х годов.
Чтобы учиться было проще, стоит заранее пройти курс Основы PHP.
Программа курса
-
3
Абстракция с помощью функций
Знакомимся с литералами и выражениями, а так же приоритетом операций в них -
4
Комбинирование функций
Учимся комбинировать функции, знакомимся с понятиями окружения, порядком вычисления и с подстановочной моделью вычислений -
5
Линейно-рекурсивный процесс
Знакомимся с понятием вычислительных процессов и линейно-рекурсивным процессом -
6
Линейно-итеративный процесс
Учимся строить рекурсии с аккумулятором и знакомимся с оптимизацией хвостовой рекурсии -
7
Функции первого класса и передача функций как аргументов
Учимся передавать анонимные функции как аргументы других функций -
8
Функции первого класса и возврат как значения
Учимся строить более обобщенные функции и генерировать из них конкретные -
10
Абстракция данных
Знакомимся с идеей абстракции данных на примере создания структуры, представляющей рациональное число -
11
Замкнутые множества
Знакомимся с понятием замыкания при использовании математической операции на примере вложенных пар -
13
Фильтрация
Знакомимся с еще одной полезной функцией высшего порядка: filter -
16
Стандартные интерфейсы
Рассматриваем концепцию разделения программы на функциональные блоки, работающие с общей структурой данных -
17
Оператор присваивания
Рассматриваем концепцию присваивания и изменения состояния -
19
Преимущества присваивания
Рассматриваем полезные и положительные аспекты сохранения состояния -
20
Недостатки присваивания
Рассматриваем проблемы, связанные с использованием присваивания и сохранением состояния -
21
Дополнительные материалы
Статьи и видео, подобранные командой Хекслета. Помогут глубже погрузиться в тему курса
Формат обучения
Испытания
Это практические задания, которые мы советуем выполнить после завершения курса. Задания помогут вам получить дополнительный опыт в программировании и закрепить полученные навыки. Обычно мы рекомендуем выполнить 3-5 испытаний. Но если не получается, не отчаивайтесь. Просто вернитесь к ним позже
Отзывы
Практика конечно крутая получилась в этом уроке. Length сделал без проблем, только в отличии от учителя, использовал итеративное вычисление. Reverse - тоже без проблем, решение один в один с учителем. А вот с Append пришлось помучиться. Я его сделал, но мое решение и близко не такое короткое, как у учителя. Делал через итеративное вычисление используя и Length и listRef из теории. Я собирал новый list c конца прибавляя к list2 сar(subList1) от самого глубокого и выше.
Тема вроде не сложная, но с решением немного заморочился. Сделал через if, тесты прошли, как оказалось попал в точку. Спасибо Кириллу за уроки и задания, для меня, как для новичка, это бесценный опыт. Хотя бывает очень сложно, что аж мозг закипает))