курс

PHP: Построение абстракций

6066 студентов 1612 сообщений
Последнее обновление: 27 февраля 2024
Курс PHP: Построение абстракций
3 900 ₽ в месяц
за все курсы Хекслета
Зарегистрироваться
  • Тренажер с практикой
  • Бессрочный доступ к теории
  • Асинхронный формат
    обучения

Включено в курс

20 уроков (видео и/или текст)
24 упражнения в тренажере
60 проверочных тестов
Помощь в «Обсуждениях»
Доступ к остальным курсам платформы

Чему вы научитесь

  • Применять функциональное и декларативное программирование
  • Создавать гибкие алгоритмы с помощью функции высшего порядка и лямбда-функции
  • Обрабатывать сложные задачи с помощью рекурсивных функций с аккумулятором
  • Улучшать читаемость, разделяя программу на модули и функциональные блоки
  • Обрабатывать коллекции данных с помощью структуры данных и функции высшего порядка

Описание

На этом курсе вы познакомитесь с основами функционального программирования и понятием декларативного программирования. Вы узнаете, как использовать функции высшего порядка и работать с лямбда-функциями. Еще вы научитесь комбинировать функции, строить рекурсии с аккумулятором и оптимизировать хвостовую рекурсию. Также вы изучите структуры данных и научитесь использовать функции высшего порядка: map, filter и свертка. Вы познакомитесь с концепцией разделения программы на функциональные блоки и научитесь работать с общей структурой данных. В конце курса вы узнаете о присваивании и изменении состояния, а также о создании объектов. Вы рассмотрите преимущества и недостатки присваивания и сохранения состояния, чтобы лучше понимать, как использовать эти концепции в своих программах. Полученные знания помогут разрабатывать более эффективные и чистые программы. Этот курс является адаптацией под php знаменитого курса «Структура и интерпретация компьютерных программ», который преподается на первом курсе МИТ (Massachusetts Institute of Technology) с 70-х годов.

Чтобы учиться было проще, стоит заранее пройти курс Основы PHP.

Программа курса

Продолжительность 25 часов
  • 1

    Введение

    Знакомимся с курсом, декларативным программированием и других парадигмах
  • 2

    Hello World

    Пишем свою первую программу и обсуждаем способы ее запуска

    тесты

    упражнение

  • 3

    Абстракция с помощью функций

    Знакомимся с литералами и выражениями, а так же приоритетом операций в них

    тесты

    упражнение

  • 4

    Комбинирование функций

    Учимся комбинировать функции, знакомимся с понятиями окружения, порядком вычисления и с подстановочной моделью вычислений

    тесты

    упражнение

  • 5

    Линейно-рекурсивный процесс

    Знакомимся с понятием вычислительных процессов и линейно-рекурсивным процессом

    тесты

    упражнение

  • 6

    Линейно-итеративный процесс

    Учимся строить рекурсии с аккумулятором и знакомимся с оптимизацией хвостовой рекурсии

    тесты

    упражнение

  • 7

    Функции первого класса и передача функций как аргументов

    Учимся передавать анонимные функции как аргументы других функций

    тесты

    упражнение

  • 8

    Функции первого класса и возврат как значения

    Учимся строить более обобщенные функции и генерировать из них конкретные

    тесты

    упражнение

  • 9

    Данные

    Пытаемся понять, что такое данные в рамках языка программирования и как строить структуру данных на примере pair

    тесты

    упражнение

  • 10

    Абстракция данных

    Знакомимся с идеей абстракции данных на примере создания структуры, представляющей рациональное число

    тесты

    упражнение

  • 11

    Замкнутые множества

    Знакомимся с понятием замыкания при использовании математической операции на примере вложенных пар

    тесты

    упражнение

  • 12

    Map

    Знакомимся с функцией высшего порядка, позволяющей применять переданную функцию к элементам множества

    тесты

    упражнение

  • 13

    Фильтрация

    Знакомимся с еще одной полезной функцией высшего порядка: filter

    тесты

    упражнение

  • 14

    Свертка

    Пишем функцию, позволяющую производить свертку нескольких значений

    тесты

    упражнение

  • 15

    Деревья

    Изучаем структуру данных «двоичное дерево» и ее реализацию в PHP с помощью списков

    тесты

    упражнение

  • 16

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

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

    тесты

    упражнение

  • 17

    Оператор присваивания

    Рассматриваем концепцию присваивания и изменения состояния

    тесты

    упражнение

  • 18

    Объекты

    Продолжаем изучение оператора присваивания и переходим к созданию объектов

    упражнение

  • 19

    Преимущества присваивания

    Рассматриваем полезные и положительные аспекты сохранения состояния

    тесты

    упражнение

  • 20

    Недостатки присваивания

    Рассматриваем проблемы, связанные с использованием присваивания и сохранением состояния

    тесты

    упражнение

  • 21

    Дополнительные материалы

    Статьи и видео, подобранные командой Хекслета. Помогут глубже погрузиться в тему курса

Формат обучения

Испытания

Это практические задания, которые мы советуем выполнить после завершения курса. Задания помогут вам получить дополнительный опыт в программировании и закрепить полученные навыки. Обычно мы рекомендуем выполнить 3-5 испытаний. Но если не получается, не отчаивайтесь. Просто вернитесь к ним позже

#
Задание
% завершений

Отзывы

Аватар пользователя Yaroslav Detsyk
Yaroslav Detsyk 28 марта 2017

Практика конечно крутая получилась в этом уроке. Length сделал без проблем, только в отличии от учителя, использовал итеративное вычисление. Reverse - тоже без проблем, решение один в один с учителем. А вот с Append пришлось помучиться. Я его сделал, но мое решение и близко не такое короткое, как у учителя. Делал через итеративное вычисление используя и Length и listRef из теории. Я собирал новый list c конца прибавляя к list2 сar(subList1) от самого глубокого и выше.


Аватар пользователя Denis Dyuzhy
Denis Dyuzhy 21 февраля 2017

Тема вроде не сложная, но с решением немного заморочился. Сделал через if, тесты прошли, как оказалось попал в точку. Спасибо Кириллу за уроки и задания, для меня, как для новичка, это бесценный опыт. Хотя бывает очень сложно, что аж мозг закипает))



Аватар пользователя Андрей Соколов
Андрей Соколов 14 ноября 2016

Таки вынос мозга произошел.

Спасибо! :) .


Аватар пользователя Андрей Соколов
Андрей Соколов 12 ноября 2016

Класс! Звучит многообещающе. 😃

Рекомендуемые программы

профессия
от 6 300 ₽ в месяц
Осваивайте разработку веб-страниц, оживляйте дизайн макетов, публикуйте сайты и приложения. Отслеживайте ошибки в интерфейсе и устраняйте их
10 месяцев
с нуля
Старт 25 июля
профессия
от 6 300 ₽ в месяц
Обучитесь разработке бэкенда сайтов и веб-приложений — серверной части, которая отвечает за логику и базы данных
10 месяцев
с нуля
Старт 25 июля
профессия
от 6 183 ₽ в месяц
Выполняйте ручное тестирование веб-приложений, находите ошибки в продукте. Узнайте все о тест-дизайне.
4 месяца
с нуля
Старт 25 июля
профессия
от 6 300 ₽ в месяц
Научитесь разработке веб-приложений, сайтов и программного обеспечения на языке Java, программируйте и используйте структуры данных
10 месяцев
с нуля
Старт 25 июля
профессия
от 5 025 ₽ в месяц
новый
Собирайте, анализируйте и интерпретируйте данные, улучшайте бизнес-процессы и продукт компании. Обучитесь работе с библиотеками Python
9 месяцев
с нуля
Старт 25 июля
профессия
от 6 300 ₽ в месяц
Занимайтесь созданием сайтов, веб-приложений, сервисов и их интеграцией с внутренними бизнес-системами на бекенд-языке PHP
10 месяцев
с нуля
Старт 25 июля
профессия
от 5 840 ₽ в месяц
Создание веб-приложений со скоростью света
5 месяцев
c опытом
Старт 25 июля
профессия
от 9 900 ₽ в месяц
Обучитесь разработке визуальной части сайта — фронтенда, а также реализации серверной — бэкенда. Освойте HTML, CSS, JavaScript
16 месяцев
с нуля
Старт 25 июля
профессия
от 6 300 ₽ в месяц
Разработка бэкенд-компонентов для веб-приложений
10 месяцев
с нуля
Старт 25 июля
профессия
новый
Организовывайте процесс автоматизации тестирования на проекте, обучитесь языку программирования JavaScript, начните управлять процессом тестирования
8 месяцев
c опытом
в разработке
Старт 25 июля