Подтвердить что ты не робот

Преимущества Clojure

Может ли кто-нибудь указать преимущества Clojure и для каких типов приложений он подходит?

Я не собираюсь сравнивать его с любыми языками как таковыми. Как язык сам по себе, для чего он подходит? Мое намерение состоит в том, чтобы знать правильные инструменты для правильной работы и где Clojure встраивается в такой сценарий.

4b9b3361

Ответ 1

Преимущества:

  • все преимущества функционального программирования, без чистоты смирительной рубашки
  • lispy: позволяет динамический, компактный код с поздним связыванием, макросы, мультиметоды
  • Java-совместимость
  • может программировать функции для абстракции последовательности, а не для конкретных структур данных.
  • concurrency плюсы, запеченные в: функциональные структуры данных, транзакционная память программного обеспечения
  • работает на JVM: портативность и быстрая сборка мусора

Подходит для:

  • снизу вверх дизайн
  • встроенные языки
  • высококонкурентные приложения

Вероятно, не подходит для:

  • случаи, когда требуется статическая печать
  • если вы хотите, чтобы язык был поддающимся статическому анализу
  • все, что требует быстрого запуска
  • орды невежественных обезьян-обезьян

Ответ 2

В общем, я нахожу в качестве сильных точек для clojure (в определенном порядке):

1) REPL, чтобы попробовать в интерактивном режиме.

2) Все по умолчанию неизменно, а изменчивость имеет несколько хорошо выбранных стандартных шаблонов для безопасного безопасного перехода в многопоточную среду.

3) Рекурсия хвоста сделана явной. До тех пор, пока не будет надлежащей поддержки хвостовой рекурсии на JVM, это, вероятно, лучший компромисс.

4) Очень выразительный язык, который способствует функциональному подходу к императивному подходу.

5) Очень хорошая интеграция с платформой Java, что делает ее безболезненной для смешивания в библиотеках Java.

6) Leiningen как инструмент управления сборкой и зависимостью вместе с сайтом clojars.

Хорошо, пункт 6 не имеет ничего общего с языком perse, но определенно с моим удовольствием использования.

В отношении приложений он нацелен на многопоточные приложения, но теперь все происходит так, что может означать что угодно, так как повсюду люди пытаются сохранить все эти ядра занятыми, пока пользователь не ожидает. С другой стороны, по-видимому, многие люди используют его для развертывания в Google App Engine, который радикально SINGLE имеет резьбу.

Функциональный подход хорошо работает в моем (ограниченном) опыте для реализации преобразований и вычислений данных. Где информация и события могут "транслироваться" через приложение. Веб-приложения в значительной степени относятся к этой категории, где мы "трансформируем" запрос в "ответ".

Но я все еще должен использовать его в реальном коде производства. В настоящее время я использую его для личных проектов и создания прототипов/бенчмаркинга.