Клиенты и другие заинтересованные стороны, делающие значительные инвестиционные вложения, часто довольны производительностью, безопасностью и стабильностью таких платформ как Java Virtual Machine. В то время, как разработчики Java могут позавидовать лаконичности, гибкости производительности динамических языков программирования.
У таких разработчиков всегда есть опасения по поводу работы над архитектурой, одобренной клиентом, производительности, доступа к существующей базе кода и библиотекам. Кроме того, они сталкиваются с постоянными проблемами параллелизма с использованием собственных потоков и блокировки.
Пара слов о Clojure
Clojure – функциональный и динамичный язык программирования общего назначения, который работает на основе виртуальной машины JVM (Java Virtual Machine). Он стремится быть языком общего назначения, подходящим в тех областях, где подходит Java.
Clojure сочетает в себе много интересных возможностей: доступность, горячая замена кода, разработка многопоточных программ. Clojure будет особенно интересен программистам, пишущим на Java или смотрящим в сторону функциональных языков.
Язык программирования Clojure – достаточно молодой, но он уже успел удивить многих своей функциональностью: он активно используется в production, клиент сайтах, backend, браузерных интерфейсах. Его используют для анализа данных, machinelearning, управления ресурсами и задачами.
Clojure разработали всего 6 лет назад в компании Cognitect. Несмотря на то, что это компилируемый язык, он остается полностью динамичным. Clojure обеспечивает легкий доступ к платформе Java с дополнительным выведением типа и подсказками для избежания отражения вызовов Java.
Преимущества
Clojure обладает рядом преимуществ перед другими языками программирования. Мы перечислим некоторые из них:
· язык ориентирован на работу с данными. Данные вынесены в основу концепции Clojure. У него есть все средства для работы с ними, а также удобная библиотека. Язык заменяет данными классы, иерархии, объекты, что позволяет разработчику легко работать и писать на Clojure;
· Clojure – очень динамический язык программирования. У него есть возможность запускать команды в консоли и тут же просматривать результат, не затрачивая лишнего времени. Также есть возможность горячей подмены кода, позволяющая не инициализировать программу заново при каждом изменении в коде;
· язык очень компактен. Например, размер кода, написанного на Clojure, будет от 3 до 10 раз меньше, чем у Java.
Первая версия языка программирования Clojure существовала в виде языка компилируемого в JVM байт-код. Сейчас это основное направление развития Clojure.
Минусом Clojure можно назвать стоимость разработки на этом языке программирования. Разработчиков, пишущих на Clojure, значительно меньше.
Возможности
Clojure – диалект Lisp, разделяющий с ним мощную макросистему и философию «код-как-данные», когда у кода и данных общий синтаксис. В язык программирования Clojure по сравнению с другими языками, основанными на Lisp, введен дополнительный синтаксис: кроме стандартных символов, строк, чисел, списков он отражает такие объекты первого класса как векторы, отображения (maps) и множества (sets).
Еще одна не менее важная возможность Clojure заключается в том, что написанный на этом языке код можно легко компилировать в JavaScript.
Во время создания Clojure было уделено много внимания для того, чтобы писать многопоточный код на нем было легко и с меньшей вероятностью совершать ошибки, приводящих к багу. Для этого было создано много утилит.
У Clojure вы найдете богатый набор неизменных, стойких структур данных. Когда необходимо изменить состояние, Clojure предлагает транзакционную систему взаимодействия с памятью и реактивную систему Агента, которые обеспечивают чистые, правильные и многопоточные конструкции.
Clojure достигает своих целей путем:
· внедрения отраслевого стандарта, открытой платформы - JVM;
· модернизации языка программирования Lisp;
· содействия функциональному программированию с неизменяемыми постоянными структурами данных;
· обеспечения встроенной поддержки параллелизма через программную транзакционную память и асинхронные агенты.
Результат программирования на Clojure всегда быстрый, практичный и мощный.