Преимущества Clojure [закрываются]

17
задан Rishav Rastogi 15 June 2010 в 15:45
поделиться

2 ответа

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

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

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

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

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

  • случаев, когда вам нужна статическая типизация
  • , если вы хотите, чтобы язык поддавался статическому анализу
  • все, что требует быстрого запуска
  • орды невежественных Java-обезьян
18
ответ дан 30 November 2019 в 12:50
поделиться

В целом я считаю сильными сторонами clojure (без особого порядка):

1) REPL для интерактивного опробования.

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

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

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

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

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

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

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

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

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

10
ответ дан 30 November 2019 в 12:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: