Этот курс является адаптацией под php знаменитого курса "Структура и Интерпретация Компьютерных Программ", который преподается на первом курсе МИТ (Massachusetts Institute of Technology) с 70 годов.
Уроки курса
-
2
Hello World
Написать свою первую программу и узнать про способы ее запуска -
3
Абстракция с помощью функций
Познакомиться с литералами и выражениями, а так же приоритетом операций в них. Научиться работать с лямбда-функциями. -
4
Комбинирование функций
Научиться комбинировать функции. Познакомиться с понятиями окружения, порядком вычисления и с подстановочной моделью вычислений. -
5
Линейно-рекурсивный процесс
Познакомиться с понятием вычислительных процессов и, конкретно, линейно-рекурсивным процессом. -
6
Линейно-итеративный процесс
Научиться строить рекурсии с аккумулятором. Познакомиться с оптимизацией хвостовой рекурсии. -
7
Функции первого класса. Передача функций как аргументов
Научиться передавать анонимные функции как аргументы других функций. -
8
Функции первого класса. Возврат как значения
Научиться строить более обобщенные функции и генерировать из них конкретные. -
9
Что такое данные?
Попытаться понять, что такое данные в рамках языка программирования, и как можно построить структуру данных на примере pair. -
10
Абстракция данных
Познакомиться с идеей абстракции данных на примере создания структуры, представляющей рациональное число. -
11
Замкнутые множества
Познакомиться с понятием замыкания при использовании математической операции на примере вложенных пар. -
13
Фильтрация
Познакомиться с еще одной полезной функцией высшего порядка: filter. -
16
Стандартные интерфейсы
Рассмотреть концепцию разделения программы на функциональные блоки, работающие с общей структурой данных. -
17
Оператор присваивания
Рассмотреть концепцию присваивания и изменения состояния. -
19
Преимущества присваивания
Рассмотреть полезные и положительные аспекты сохранения состояния. -
20
Недостатки присваивания
Рассмотреть проблемы, связанные с использованием присваивания и сохранения состояния.
Испытания
Это практические задания, которые мы советуем выполнить после завершения курса. Задания помогут вам получить дополнительный опыт в программировании и закрепить полученные навыки.
# | Задание | % завершений |
---|---|---|
1 | Сглаживание функций | 80% |
2 | Рекурсивный реверс | 73% |
3 | Одинаковая чётность | 81% |
4 | Композиция функций | 80% |
5 | Плоское дерево | 63% |
Автор
Сооснователь и CEO образовательного проекта Хекслет. Программирую с 2007 года. За это время прошёл путь от разработчика до технического директора и управляющего отдельным подразделением (филиалом). Управлял командами, в которых больше 50 разработчиков.
- Программирую на языках: Elixir, Clojure, JavaScript, PHP, Ruby.
- Соорганизатор конференции Nastachku.ru.
- Вимер.
- Топлю за DevOps и автоматизированные тесты.
Впечатления
Практика конечно крутая получилась в этом уроке. Length сделал без проблем, только в отличии от учителя, использовал итеративное вычисление. Reverse - тоже без проблем, решение один в один с учителем. А вот с Append пришлось помучиться. Я его сделал, но мое решение и близко не такое короткое, как у учителя. Делал через итеративное вычисление используя и Length и listRef из теории. Я собирал новый list c конца прибавляя к list2 сar(subList1) от самого глубокого и выше.
Тема вроде не сложная, но с решением немного заморочился. Сделал через if, тесты прошли, как оказалось попал в точку. Спасибо Кириллу за уроки и задания, для меня, как для новичка, это бесценный опыт. Хотя бывает очень сложно, что аж мозг закипает))
Класс!!! :)
Таки вынос мозга произошел.
Спасибо! :) .
Класс! Звучит многообещающе. 😃