Для чего полезен Clojure?

В каких реальных приложениях используются люди, использующие Clojure для?

Я использую Groovy для склейки, Java для больших систем, скрипты Python/Perl для синтаксического анализа и склеивания. Я мог видеть, что я нахожусь в Clojure с Java, но я не вижу, где я буду использовать его сам по себе. Мне кажется, было бы проще использовать практически любой скриптовый язык для специальных задач.

Я не эксперт Groovy или фанатик любыми способами, но мне кажется, что он имеет лучшую структуру поддержки, инструменты и множество языковых конструкций (замыкания, функциональное программирование). То же самое можно сказать и для Scala.

Может ли быть, что его будущее - это язык, встроенный в другие системы?

Ответ 1

Я использовал Clojure для:

  • Скремблирование веб-страниц
  • Сценарии оболочки
  • Создание веб-сайтов
  • Игра с OpenGL
  • Написание асинхронных веб-серверов
  • HTML Templating
  • Выполнение параллельных задач (выбор нескольких URL-адресов и процесс параллельно)
  • Игра с аудио в реальном времени
  • Моделирование

Это практичный/забавный материал.

Но Clojure имеет много теоретической глубины. Идеи, которые станут все более актуальными, поскольку основной поток действительно понимает потенциал функционального программирования.

Индивидуальное мнение, но Clojure обеспечивает лучшие языковые конструкции для правильной организации программного обеспечения (не вызывая чрезмерной боли для рабочего программиста) всех языков, которые я использовал до сих пор в академическом и профессиональном плане - C, С++, Objective-C, Java, JavaScript, Python, Ruby.

Это не значит, что Clojure совершенен. Но мне кажется, что он основывался на лучшем фундаменте, чем большинство того, что там было.

Ответ 3

Clojure широко используется для обработки больших объемов данных . Он очень хорошо подходит для интеллектуального анализа данных/коммерческого AI (то есть: Runa) и широкомасштабных прогнозов (aka WeatherBill). Clojure concurrency история действительно помогает в этих тяжелых областях данных, где параллельная обработка - это единственный ответ.

Ответ 4

Ну, это трудный вопрос для ответа. Что ты хочешь делать? Существует не так много, что Clojure на самом деле не подходит. Я имею в виду, что это не очень удобно для одного сценария командной строки из-за времени запуска JVM (если вы не используете cake или что-то подобное), но это можно сказать для любого языка JVM.

Clojure особенно подходит для задач concurrency. Он был построен с нуля, чтобы стать удивительным языком для concurrency, и эта система STM является фантастической. Если вам нужно сделать некоторые хардкорные concurrency связанные вещи, Clojure может быть особенно подходит для этой задачи.

Однако следует помнить, что Clojure - это язык общего назначения. Он не только подходит для определенных ниш, и он, как правило, полезен для многих или всех тех вещей, к которым подходят другие языки JVM.

Clojure был разработан как фантастический язык в его собственном праве, а не обязательно клей. Вы можете создавать системы с нуля в Clojure без прямого касания Java-кода. Не то, чтобы он не делал приятный клей, я знаю, что многие люди использовали его как таковой.

Если у вас есть что-то в виду, лучше всего подумать над тем, как будет выглядеть решение на любых языках, которые являются параметрами. Если он выглядит/чувствует себя лучше в Groovy, перейдите к Groovy. Они оба совершенно разные языки, и оба они имеют свои цели.

Ответ 5

Вы можете использовать Clojure где угодно, используя Groovy или java. Почему вы хотите это сделать? Некоторым нравится lisp. Они будут выбирать Clojure через Groovy. Некоторым людям не нравится lisp. Они будут выбирать Groovy.