Каково Ваше мнение о Clojure? [закрытый]

51
задан John Saunders 20 November 2013 в 08:02
поделиться

10 ответов

Рассмотрите изучение его. Если ни по какой другой причине затем, потому что можно на самом деле использовать его в реальном проекте.

You : Can I use this small Java library called Clojure?
Boss: Why do you need it?
You : For some concurrency improvements.
Boss: Ok.
134
ответ дан Marko 7 November 2019 в 09:41
поделиться

То, к чему Вы обращаетесь Lisp-1 по сравнению с Lisp-2, является вопросом того, совместно используют ли функции и переменные то же пространство имен. В Lisp-1 Шепелявит, как Scheme и Clojure, они делают. В Lisp-2 Шепелявит, как язык Common LISP, они не делают. Это - главным образом вопрос вкуса и/или удобства - это не влияет на питание языка программирования.

Как пример, в Clojure можно сделать это:

(defn my-apply [func arg1 arg2]
  (func arg1 arg2))

Это - функция, которая берет функцию и два значения и применяет функцию к значениям. Например:

user=> (my-apply + 1 2)
3

В языке Common LISP, необходимо было бы записать это как

(defun my-apply (func arg1 arg2)
  (funcall func arg1 arg2))

причина, Вам нужен "funcall", то, что, так как "func" находится в пространстве имен переменных, Вы не можете непосредственно использовать его в качестве функции, как Вы может в Clojure, который не делает это различие. Таким образом, необходимо сказать язык Common LISP, "интерпретируйте эту переменную как функцию и назовите ее с этими аргументами". Другое последствие этого - то, что для получения того же результата необходимо звонить, "мои - применяются" как это:

=> (my-apply #'+ 1 2)
3

Здесь проблема инвертируется: "+" функция, но Вы хотите передать ее как переменную, таким образом, необходимо "преобразовать" ее. "# '+" короток для" (функция +)", btw.

27
ответ дан Mark Probst 7 November 2019 в 09:41
поделиться

Clojure является диалектом LISP так, да, это столь же мощно как LISP.

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

17
ответ дан Allain Lalonde 7 November 2019 в 09:41
поделиться

Я думаю, что имя умно.

14
ответ дан Bill Echo 7 November 2019 в 09:41
поделиться

"Clojure имеет потенциал, чтобы сделать для ориентированного на параллелизм программирования, что Java сделал для объектно-ориентированного программирования десятилетие назад: сделайте более простым сделать правильно использование языка (или, в случае Clojure’s, “language environment”), который подобен тому, к чему уже привыкли программисты". - Bill Clementson

И люди, LISP состоит из семьи языков программирования. Существуют диалекты Lisp как язык Common LISP и Clojure. И вдобавок ко всему, существует много реализаций языка Common LISP или Схемы.

15
ответ дан Berlin Brown 7 November 2019 в 09:41
поделиться

Мне нравится язык Common LISP лучше, чем Clojure, потому что синтаксис является более регулярным, и он не связывается с ужасным (по моему скромному мнению), API Java.

Для языка Common LISP у меня также есть выбор между несколькими превосходными и хорошо протестированными реализациями и сформировавшимся стандартом для доверия.

, Но если бы я должен был использовать Java для задания затем, я определенно рассмотрел бы использование Clojure. :)

3
ответ дан Leslie P. Polzer 7 November 2019 в 09:41
поделиться

то, что я подразумеваю "под Действительно ли Clojure, так же мощно, как LISP" то, что я читал где-нибудь здесь на stackoverflow, что язык Common LISP является шепелявостью 2, и Clojure является шепелявостью 1? (Я мог easly околачиваться здесь)...

, насколько параллелизм обеспокоен, что мне действительно нравится история Erlang с тех пор ее настолько легкий распределить приложения путем записи им в модели

Actor от создателя Clojure в http://groups.google.com/group/clojure/browse_thread/thread/2a2b24ffef5d1631?pli=1

"Даже с агентами, Clojure еще не будет иметь распределенной истории параллелизма, но я рассматриваю просто принятие оптовой торговли Erlang, с помощью Jinterface для Clojure<-> Clojure или даже Clojure<-> Erlang распределил процессы. Возможно, это будет похоже на Термита, когда он будет сделан. Останьтесь настроенными".

3
ответ дан Rayne 7 November 2019 в 09:41
поделиться

Я использовал Erlang в работе для согласованного сетевое нагрузочное тестирование, и оно идеально подходило для этого, потому что проблема была в пределах «сладкого места» Erlang - «правильного выполнения программного обеспечения, ориентированного на распределенные коммуникации». Я считаю, что Clojure НАМНОГО лучше подходит для кода, который должен делать что-то сложное в одном блоке с несколькими потоками (это более распространенный сценарий).

Вы на шаг впереди, потому что знаете Erlang, и это поможет вам выявить проблемы, в которых он действительно проявляет себя. Что вы думаете о Clojures "сладкое пятно"? есть?

5
ответ дан 7 November 2019 в 09:41
поделиться

Я использую Clojure, а не CL, потому что:

  • Он хорошо взаимодействует с Java, поэтому я могу передать код на аутсорсинг.
  • У него есть доступ к огромному количеству библиотек java, которые выполняют все виды такие вещи, как Swing и Weka
  • Поскольку он работает на JVM, вы можете с большей уверенностью предположить, что ваша проблема будет работать везде
  • . Если вы можете показать, что те же библиотеки используются с гораздо меньшим количеством кода, вы можете преобразовать Java-программистов в лямбда-метод
  • И, что наиболее важно, я не привязан к Emacs

: wq

22
ответ дан 7 November 2019 в 09:41
поделиться

Clojure - это Lisp-1, да. Думайте об этом как о более хорошем Common Lisp без всего исторического багажа. Он также имеет несколько современных функций параллелизма, таких как STM и агенты (они решили не реализовывать модель акторов Erlang). Преимущество работы на JVM простое - для нее уже написано ТАКОЕ много библиотек (в основном на Java).

Clojure in Clojure - это постоянная попытка переписать компилятор Clojure в Clojure, чтобы сделать его более удобным. портативный и ремонтопригодный. Помимо core.clj, большая часть Clojure в настоящее время написана на Java. После этого перехода его можно будет перенести на МНОГО ВМ, включая Parrot.

5
ответ дан 7 November 2019 в 09:41
поделиться