Clojure — интересный Lisp‑подобный функциональный язык. Если вы фанат круглых скобок, то программировать на этом языке интересно. К тому же Clojure компилируется в байт‑код JVM и транслируется в JavaScript. Вернее, в JS транслируется ClojureScript. Над ним работает та же команда, что и над Clojure, так что это всё‑таки один и тот же язык — за исключением некоторой разницы в типах и мелочах, зависящих от среды исполнения. При этом ресурсов для изучения этого языка не так много. Один из них — онлайн‑курс Functional programming in Clojure.

Курс во многих отношениях необычный. Первое, что бросается в глаза: никаких видеоуроков, только текст и упражнения. После прочтения вводного занятия понимаешь, что курс ещё более необычный: он сильно завязан на GitHub. Необходимые шаблоны для выполнения заданий нужно форкнуть на свой аккаунт. Выполненные задания отправляются пул‑реквестом создателю курса, где их оценивает скрипт сборки Travis CI.

В курсе всего 9 основных блоков с упражнениями и 2 дополнительных блока. Основные блоки закрывают темы от основ языка до рекурсии и свёрткок. Из дополнительных блоков один описывает стиль, второй рассказывает о практическом примере использования Clojure.

Главная ценность курса — упражнения. Их много, они разнообразны и в большей части блоков привязаны к решению одной практической задачи. Часть задач решается с ходу, над частью задач надо посидеть довольно долго. Есть задачи повышенной сложности — они действительно такие. Хотя их постановка может выглядеть предельно просто. К примеру, одно из таких заданий предлагает вывести монотонные куски заданной последовательности. Я бился над этой задачей несколько часов.

Курс не является всеобъемлющим. Это введение, знакомство с языком. Он не знакомит с большей частью библиотеки языка. При этом зачастую автор предполагает знакомство студента с какими‑то аспектами языка и его библиотеки. В этом основной недостаток курса, который не так‑то просто исправить с помощью документации: Clojure — своеобразный и непривычный язык, стандартная библиотека и документация к ней такая же своеобразная и необычная.

В целом курс хороший. Его стоит пройти, если есть интерес к языку Clojure или к функциональному программированию.