Практический Haskell: чистое функциональное программирование в реальных задачах
Преподаватель: Сыровецкий Юрий Алексеевич
Модуль: 1-2
Кредиты: 3
Аннотация:
Обзор применений Haskell в индустрии на основе открытого кода с разбором примеров. Опыт компаний Facebook, Лаборатория Касперского, Тинькофф Банк, Яндекс. Веб-сервисы, игры, компиляторы.
Более популярные языки программирования копируют фишки из Haskell спустя лет десять, следовательно, изучая Haskell, вы изучаете промышленные языки будущего!
Вы овладеете навыками и приёмами программирования на языке Haskell, а также получите опыт применения языка в основных задачах, которые встречаются в индустрии. Повысите шансы трудоустройства на интересные проекты и расширите свой арсенал для решения повседневных задач.
В отличие от курса «Функциональное программирование», этот даёт скорее широкую прикладную, чем глубокую теоретическую подготовку, немного пересекается с тем, может изучаться до или после него.
Организация курса:
Курс продлится 11 недель. Еженедельно нужно будет посетить одно занятие и выполнить домашнее задание. Каждое занятие будет длиться 2 пары и состоять из теоретической и практической частей. Предполагается, что студенты будут приносить на занятия свои портативные компьютеры, рекомендуется установить компилятор (clck.ru/Ns4wu), настроить подсветку в текстовом редакторе (можно использовать бесплатные редакторы Atom, Emacs, Vim, VS Code или др.).
Предварительный список тем:
-
Введение в Haskell. Основные синтаксические конструкции. Основные средства разработки. Решение классических задач.
-
Типовая структура приложения. Тестирование (библиотека tasty).
-
Случайное тестирование и тестирование свойств (библиотека QuickCheck).
-
Ввод-вывод и чистота. Приложение командной строки. Разбор аргументов (библиотека optparse-applicative).
-
Введение в протокол HTTP и клиент-серверную архитектуру. Простейший веб-сервер (библиотека scotty).
-
СУБД. Работа с SQL из веб-сервера (библиотеки sqlite-simple, persistent-sqlite).
-
Игры. Субъектно-компонентная система (ECS). (библиотеки gloss, apecs)
-
Внутренние предметные языки. Интерпретация. Компиляция (библиотека language-c-quote).
-
Аппликативный предметный язык для доступа к данным (библиотека haxl).
-
Предметный язык на уровне типов для описания программного интерфейса (библиотека servant).
-
Внешние предметные языки. Монадные парсеры (библиотека megaparsec).
Формула оценивания: Оценка за курс будет выставлена на основании проверки домашних заданий, строящихся как модификация готового решения, предложенного преподавателем, под немного усложнённые условия.
Программа учебной дисциплины
Для кого: для студентов всех курсов бакалавриата и магистратуры, заинтересованных в изучении перспективных технологий, планирующих работать или работающих в исследовательских проектах и наукоёмких направлениях сферы IT.
Пререквизиты: умение программировать хотя бы на одном языке программирования высокого уровня.
Расписание: суббота 14:40-16:00 лекция и 16:20-17:40 семинар с 26 сентября (онлайн)