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

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

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

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

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

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



c