Clojure для студентов

В настоящее время большинство высших учебных учреждений испольльзуют Pascal в качестве языка для обучения программированию на разных курсах. Во многом это объясняется косностью программ и незаинтересованностью преподавателей другими языками. Встречаются такие, которые превозносят простоту паскаля как аргумент в его пользу. С другой стороны, понимаешь, что язык не развивается, не предлагает возможностей функционального программирования, требует специфической среды для разработки, большинство инструментов которой остались со времен msdos. А еще, наверное, понимаешь, что написать в резюме “Pascal” в 2015 году, как минимум, архаично.

“У меня курс на паскале, что делать?”

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

Что clojure может предложить

Естественно, первое, что приходит на ум - это экосистема наукоемких Java библиотек, которые можно использовать “как есть” или через обертки для самых различных целей - обработки “больших данных” (BigData): cascalog, процессинга человеческого языка (NLP): clojure-opennlp, clj-vw; машинного обучения: deeplearning4j, компьютерного зрения и распознавания образов (Computer Vision): vision, clj-tesseract; нейронных сетей: k9, synaptic, машинного обучения (Machine Learning) clj-ml

Кроме того, есть наукоемкие библиотеки, написанные на самом Clojure, для распределенной обработки данных в realtime: Storm и Onyx; для статистики: incanter, statistiker; символьных вычислений: expresso; графов: loom и другие. Более подробно можно посмотреть здесь.

На Clojure пишут другие языки программирования (в основном, в учебных целях), например, Lux, или mal, clojure-подобный lisp, написанный на самых разных языках, в том числе, на самом Clojure.

Clojure можно попробовать использовать в нише Matlab или Mathematica, используя Java библиотеки для обсчета и визуализации данных, в “блокнотном” виде. Например, существуют замечательные вещи, например, такие как gorilla-repl (посмотрите на его вводное видео).

Почему не Haskell?

Существует мнение, что в европейской и американской университетской культуре место языка de-facto занял Хаскель, и это отчасти так, благодаря университетам Беркли и Стэндфорду. Но это не отменяет того факта, что Clojure используется в продвинутой университетской среде. Например, университет Хельсинки даже имеет специальный курс, и есть опенсорсные проекты, на которые выделяются образовательные гранты, например, hypower-org/watershed