В которых случаях лучше для Использования Clojure? [закрытый]

IMO, реальный ответ на этот вопрос является любыми работами лучше всего для Вас приложение. Я рекомендовал бы сравнить приложения с помощью и персистентных и нестойких соединений.

Maggie Nelson Объективно Ориентированный отправленный об этом в августе и Robert Swarthout сделал сопроводительное сообщение с некоторыми твердыми числами. Оба - довольно хорошие чтения.

21
задан Nathan Campos 26 November 2009 в 00:22
поделиться

11 ответов

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

Еще одним большим плюсом Clojure является его отточенная поддержка параллелизма с примерно тремя различными вариантами . Если у вас есть ресурсоемкая параллелизируемая задача, Clojure может упростить ее. Что ж, проще.

Обновление: Еще один аргумент. Clojure очень функциональна, так что это плюс, если вы хотите заставить себя думать и писать функционально.

21
ответ дан 29 November 2019 в 06:07
поделиться

Существует множество причин, некоторые из которых упомянуты выше. Мое мнение:

  1. Существующие библиотеки. Это такое преимущество. Я просто не могу достаточно похвалить эту функцию.
  2. Язык больше адаптирован к оборудование в настоящее время доступно (многоядерный) и развитие парадигмы, используемые сегодня. Гораздо проще рассуждать о параллелизме. Функциональные аспекты тоже лучше. Вы, конечно, можете выполнять функциональное программирование на Лиспе, но очень легко сломать парадигму неосознанно, невольно и непреднамеренно.
  3. Кросс-платформенный. Я бегу идентично программы в Linux, Windows и Mac. Есть много родных Лиспов которые работают на разных платформах, но поддержка всех функций на всех платформы немного пятнистые, и вы постоянно надо быть начеку для вещей, которые отсутствуют на одном платформа или другой. Точно так же библиотеки, которые вам нужны, не всегда постоянно поддерживается платформы. ABCL и некоторые из Реализации схемы JVM имеют это постоянная поддержка, но я по-прежнему предпочитаю Clojure из-за пункт 2.
  4. Природа языка сообщество. Посмотрим правде в глаза, много время, когда сообщество Common Lisp просто противно иметь дело. То есть совсем не так с Clojure. Получить полезную помощь без снисходительность и подлость, которые часто приходит с ответом от Сообщество Common Lisp. Как я узнал для себя несколько раз, нет вопросов настолько глупых, что вы не получите вежливого и полезного ответ сообщества Clojure.

Если бы мне нужно было найти что-то, на что можно пожаловаться, это была бы поддержка IDE. Возможно, это вопрос приобретения новых привычек, но мне все же легче справиться с механикой разработки на Java, чем на Clojure. Я пробовал и использую Clojure Box, enclojure в NetBeas, La Clojure в Intellij IDEA и против часовой стрелки в Eclipse. Все они работают нормально, если вы работаете в основном из REPL, но для компиляции и выполнения файлов классов они все еще кажутся немного неуклюжими.

8
ответ дан 29 November 2019 в 06:07
поделиться

Clojure работает на JVM (и на CLR), так что вот оно.

3
ответ дан 29 November 2019 в 06:07
поделиться

На этот вопрос невозможно ответить. Я бы сказал, что вы должны использовать Clojure почти 100% времени вместо CL и Scheme. Но это не значит, что ты должен меня слушать. Другие могут привести веские аргументы в пользу обратного.

Для меня синтаксис и имена функций в Clojure эстетически приятны. Некоторые библиотеки Java бесценны для того, что я делаю для работы с данными, веб-программирования и прочего графического интерфейса пользователя. Функциональное программирование - это сложно и приятно. На мой взгляд, недостатки Clojure не важны и перевешиваются его преимуществами. Некоторые недопустимые недостатки других Lisp'ов «исправлены» в Clojure, потому что он новый и может игнорировать обратную совместимость. Это новый и, возможно, мощный подход к параллелизму. Сообщество Clojure энергично, приветливо и потрясающе. Все это говорит обо мне и том, что я ценю, так же, как и о Clojure или других Lisp.

Существуют библиотеки для CL и Scheme, которых нет в Clojure или Java. Есть люди, которым не нравится, что Clojure использует слишком много синтаксиса, например [] и {} , и хотят использовать скобки везде. Если вам нужен ООП в стиле CLOS или много изменяемых структур данных, возможно, лучше другой Лисп. JVM тяжеловесна, может быть, слишком тяжеловесна и слишком загружена для некоторых людей. Многие утечки Java попадают в Clojure (намеренно), и это оскорбляет чувства некоторых людей. STM и неизменяемые структуры данных имеют накладные расходы, которые делают некоторые вещи (например, обработку чисел) медленнее или менее элегантными. Clojure является новым и все еще грубым в одних областях, но быстро меняется и развивается в других. Clojure еще не прошел проверку временем, тогда как у других Lisp уже есть. Clojure не является «стандартом», и некоторые люди считают язык, определенный реализацией, непривлекательным. И так далее. Для меня все это не имеет значения, но они могут иметь значение для вас.

Это почти полностью субъективно. Какой язык вам следует использовать, зависит от того, что вы уже знаете, что вы хотите изучать, какие библиотеки вы хотите использовать, какие редакторы и инструменты вам удобны, с какими языковыми недостатками вы готовы жить и обходить с какими недостатками вы не можете мириться и что помогает вам выполнять работу быстрее, дешевле, с большим удовольствием или достигать поставленных целей.

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

55
ответ дан 29 November 2019 в 06:07
поделиться

Когда? Насколько это возможно. Почему? Неизменяемые структуры данных - они действительно хороши. Есть много других причин .

8
ответ дан 29 November 2019 в 06:07
поделиться

Clojure следует использовать, когда

  • вам нужно работать с существующим Java-кодом.
  • вы работаете с людьми, у которых аллергия на lisp («босс, я бы хотел использовать java-библиотеку параллелизма под названием clojue vs. я хотел бы переписать это в схеме» [1]
  • вы будете программировать для многопроцессорной системы.

Схема была бы лучше, когда:

  • вам нужно доказать, что ваш код верен. Clojures (вызов java) мешает, но не предотвращает этого.
  • вы работаете с людьми, страдающими аллергией на Java.
  • вы разрабатываете для платформы без (достаточно новой) JVM

[1] да, это плохая плохая плохая причина. таков мир, в котором мы живем ...

8
ответ дан 29 November 2019 в 06:07
поделиться

ABCL (Armed Bear Common Lisp) и несколько Реализации схем (KAWA, SISC, ...) также работают на JVM.

Обычно Common Lisp доступен в различных «разновидностях» - ABCL - одна из них. Другие компилируются в C, в собственный код, имеют обширные среды разработки или специализированные расширения, такие как языки логики или базы данных.

Clojure OTOH - это новый диалект Lisp с упором на ленивое функциональное программирование и параллельное программирование. Его автор (Рич Хики) - очень опытный разработчик программного обеспечения (он также написал интерфейсы Java и .net для Common Lisp) и отлично справился с Clojure. Несмотря на то, что вокруг языка есть шумиха,

8
ответ дан 29 November 2019 в 06:07
поделиться

Подмножество Clojure также может компилироваться в javascript

7
ответ дан 29 November 2019 в 06:07
поделиться

Одна из величайших особенностей Clojure - это множество библиотек, которые вы можете использовать с ним. У вас есть мощь Java с выразительностью Lisp, и это крутая комбинация. Clojure больше подходит для разработки в реальном мире, потому что он был создан для разработки в реальном мире. С Clojure у вас есть потрясающие библиотеки, потрясающие современные функции и потрясающее сообщество полезных и единомышленников.

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

Clojure потрясающе.

3
ответ дан 29 November 2019 в 06:07
поделиться

Я всегда стараюсь изучать новые языки, поэтому мне интересно изучать Clojure. Но разве SBCL и некоторые другие реализации Common Lisp не намного быстрее, чем Clojure? Разве вам не понадобится значительно больше четырех процессоров (и достаточно распараллеливаемая задача), чтобы компенсировать разницу в производительности между приложением Clojure и даже однопоточной версией SBCL того же приложения?

2
ответ дан 29 November 2019 в 06:07
поделиться

Дизайн Clojure заботится о безопасном приспособлении нескольких стилей параллельного программирования, намеренно затрудняя ошибочное написание опасного, шаткого и часто ломающегося кода, допускающего параллелизм, в других языков. Если ваша проблемная область включает параллельное программирование, набор интегрированных инструментов Clojure для управления параллелизмом может быть более подходящим, чем библиотеки, специфичные для реализации или библиотеки с наименьшим общим знаменателем, доступные в других Lisps и схемах.

3
ответ дан 29 November 2019 в 06:07
поделиться