• A
  • A
  • A
  • АБB
  • АБB
  • АБB
  • А
  • А
  • А
  • А
  • А
Обычная версия сайта

Практический Haskell: чистое функциональное программирование в реальных задачах

Преподаватель: Сыровецкий Юрий Алексеевич

Модуль: 1-2

Кредиты: 3

Аннотация:

Обзор применений Haskell в индустрии на основе открытого кода с разбором примеров. Опыт компаний Facebook, Лаборатория Касперского, Тинькофф Банк, Яндекс. Веб-сервисы, игры, компиляторы.

Более популярные языки программирования копируют фишки из Haskell спустя лет десять, следовательно, изучая Haskell, вы изучаете промышленные языки будущего!

Вы овладеете навыками и приёмами программирования на языке Haskell, а также получите опыт применения языка в основных задачах, которые встречаются в индустрии. Повысите шансы трудоустройства на интересные проекты и расширите свой арсенал для решения повседневных задач.

В отличие от курса «Функциональное программирование», этот даёт скорее широкую прикладную, чем глубокую теоретическую подготовку, немного пересекается с тем, может изучаться до или после него.

Организация курса:

Курс продлится 11 недель. Еженедельно нужно будет посетить одно занятие и выполнить домашнее задание. Каждое занятие будет длиться 2 пары и состоять из теоретической и практической частей. Предполагается, что студенты будут приносить на занятия свои портативные компьютеры, рекомендуется установить компилятор (clck.ru/Ns4wu), настроить подсветку в текстовом редакторе (можно использовать бесплатные редакторы Atom, Emacs, Vim, VS Code или др.).

Предварительный список тем:

  1. Введение в Haskell. Основные синтаксические конструкции. Основные средства разработки. Решение классических задач.

  2. Типовая структура приложения. Тестирование (библиотека tasty).

  3. Случайное тестирование и тестирование свойств (библиотека QuickCheck).

  4. Ввод-вывод и чистота. Приложение командной строки. Разбор аргументов (библиотека optparse-applicative).

  5. Введение в протокол HTTP и клиент-серверную архитектуру. Простейший веб-сервер (библиотека scotty).

  6. СУБД. Работа с SQL из веб-сервера (библиотеки sqlite-simple, persistent-sqlite).

  7. Игры. Субъектно-компонентная система (ECS). (библиотеки gloss, apecs)

  8. Внутренние предметные языки. Интерпретация. Компиляция (библиотека language-c-quote).

  9. Аппликативный предметный язык для доступа к данным (библиотека haxl).

  10. Предметный язык на уровне типов для описания программного интерфейса (библиотека servant).

  11. Внешние предметные языки. Монадные парсеры (библиотека megaparsec).

Формула оценивания: Оценка за курс будет выставлена на основании проверки домашних заданий, строящихся как модификация готового решения, предложенного преподавателем, под немного усложнённые условия.

Программа учебной дисциплины 

Для кого: для студентов всех курсов бакалавриата и магистратуры, заинтересованных в изучении перспективных технологий, планирующих работать или работающих в исследовательских проектах и наукоёмких направлениях сферы IT.

Пререквизиты: умение программировать хотя бы на одном языке программирования высокого уровня.

Расписание: суббота 14:40-16:00 лекция и 16:20-17:40 семинар с 26 сентября (онлайн)