Видео с вводного курса профессора Грэма Хаттона из Ноттингемского университета были размещены в свободном доступе на YouTube. Разработанные для студентов первого курса информатики, они обучают основным принципам функционального программирования с использованием Haskell.
Грэм Хаттон — известный авторитет в сообществе FP. Он является профессором компьютерных наук в Ноттингемском университете, где он является одним из руководителей Лаборатории функционального программирования. Он является редактором журнала функционального программирования, членом рабочей группы 2.1 IFIP по алгоритмическим языкам и исчислениям, а также заместителем председателя Специальной группы ACM по языкам программирования и председателем Руководящего комитета Международной конференции по языкам программирования. Функциональное программирование.
Хотя курс проводится на Haskell, он в первую очередь посвящен образу мышления функционального программирования с использованием Haskell в качестве средства достижения этой цели. Это также возможность открыть для себя Haskell, язык, не похожий ни на один другой, который меняет представления разработчиков о программировании и помогает им в целом улучшить свои способности.
Поскольку Haskell — это чисто функциональный язык, когда вы пишете на нем программу, вы, по сути, пишете математические функции. Именно здесь хороший опыт в математике поможет вам в программировании, что наконец-то ответит на вечный вопрос о том, нужна ли вам математика по порядку. в программировании, тема, изучаемая в разделе «Помогает ли математика программированию» или «Программирование помогает математике?».
Курс во введении пытается ответить на вопросы о том, что на самом деле означает функциональное программирование и откуда оно взялось в историческом воспоминании. Подчеркивая разницу между чисто функциональными языками и языками, поддерживающими функциональное программирование, такими как Java, является то, что первые поддерживают и поощрять функциональный стиль.
Отличный вводный пример — это противопоставление быстрой сортировки в Haskell и любого императивного языка. Оно начинается с отображения некоторых непонятных формальных математических типов и величественно демистифицирует их простыми заменами.
Вот в чем суть. Борясь с первоначальным страхом, который вызывают математические обозначения, и методично работая над ними, в конце концов вы обнаружите, что писать в функциональном стиле проще, чем в императиве. Это просто требует альтернативного мышления. Как показывает пример быстрой сортировки, в Haskell вы не просто обходите алгоритм, но фактически фиксируете его суть.
Остальная часть курса следует этим шагам, используя компилятор Glasgow Haskell (больше часть интерпретатора, поскольку он фокусируется на обратной связи в реальном времени), состоящий из следующих видео лекций:
Лекция 1 — Введение
Лекция 2 — Первые шаги
Лекция 3 — Типы и классы
Лекция 4 — Определение функций
Лекция 5 — Составление списков
Лекция 6 — Рекурсивные функции
Лекция 7 — Упражнения на рекурсию
Лекция 8 — Функции высшего порядка
Лекция 9 — Как думать рекурсивно
Лекция 10 — Объявление типов и классов
Лекция 11 — Проблема обратного отсчета
Лекция 12 — Интерактивное программирование
Поскольку курс новый и продолжается, есть две лекции, которые еще не доступны в виде видео, но когда-то будут готовы:
Лекция 13 — Упражнения на взаимодействие
Лекция 14 — Ленивое оценивание
Но подождите, это еще не все. Это была часть I, в которой были представлены основные концепции чистого программирования в Haskell, структурированные вокруг основных функций языка. Часть II, «Расширенное функциональное программирование», предназначена для студентов второго курса, изучающих информатику, и охватывает ряд более сложных тем.
К счастью, эта часть тоже была доступна на YouTube. Он включает в себя создание решателя судоку и включает следующие лекции:
Лекция 1 — Судоку в Haskell I
Лекция 2 — Судоку в Haskell II
Лекция 3 — Судоку в Haskell III
Курсовая работа 1 — игра Connect Four
Лекция 4 — Функторы
Лекция 5 — Аппликативные функторы
Лекция 6 — Монады I
Лекция 7 — Монады II
Лекция 8 — Монады III
Лекция 9 — Монады IV.
Отсутствующий :
Лекция 11 — Курсовая работа 2: монадический компилятор
Лекция 12 — Рассуждения о программах
Лекция 13 — Индукция
Лекция 14 — Как заставить исчезнуть добавление I
Лекция 15 — Исчезновение дополнения II.
Лекция 16 — Корректность компилятора
Подводя итог, это действительно убедительный материал, который заново открывает слово «программирование». Фактически, FP в Haskell является частью более крупного модуля Programming Paradigms, который предполагает параллельное обучение ООП на Java, чтобы студенты могли изучать оба стиля и, конечно же, сравнивать их.
Обязательно посмотрите, независимо от того, интересуетесь ли вы Haskell или нет.