Как‑то я уже упоминал курс «Функциональное программирование на языке Haskell». Наконец могу поделиться собственными впечатлениями об этом курсе.
Этот курс стоит того, чтобы его пройти и сделать (или хотя бы попытаться сделать) все предложенные задания. Лучшего вводного курса по Haskell я не встречал. Огромное спасибо Денису Москвину (основной преподаватель) и команде за курс!
Курс состоит из 5 блоков, каждый из которых раскрывает некоторые аспекты языка: типы данных, списки, монады и т. п. Каждый блок — это набор видеоуроков с заданиями примерно на 5–6 часов работы.
Материал подаётся постепенно. Видео представляет собой в основном демонстрацию работы преподавателя в редакторе кода и запуске каких‑либо вычислений в интерпретаторе. Всё сопровождается подробными комментариями и разъяснениями. Просмотра видео, по большей части, достаточно для выполнения заданий, которые за ним следуют. Иногда приходится гуглить, чтобы найти те или иные функции из стандартной библиотеки, упомянутые в видео. Не хватает исходных текстов примеров, набранных Денисом на видео.
Отдельно нужно отметить количество и качество практических заданий. Их много — в среднем по 4–5 за урок. По большей части в заданиях просят написать кусок кода на Haskell. Сложность варьируется очень сильно (причём она даже не сильно зависит от баллов, которые назначены за задачу создателями курса). Но это, скорее, связано с особенностями функционального подхода: порой поломать голову приходится над задачами в 1 балл больше, чем над задачей в 3 балла.
Курс определённо стоит того, чтобы потратить на него 5 недель своего времени. Haskell, может, и не самый востребованный язык программирования, но, безусловно, он оказывает огромное влияние на другие языки. Программисту стоит ознакомиться с его основами.