IMO, реальный ответ на этот вопрос является любыми работами лучше всего для Вас приложение. Я рекомендовал бы сравнить приложения с помощью и персистентных и нестойких соединений.
Maggie Nelson Объективно Ориентированный отправленный об этом в августе и Robert Swarthout сделал сопроводительное сообщение с некоторыми твердыми числами. Оба - довольно хорошие чтения.
«Clojure работает на JVM» означает, что вы получаете все доступные библиотеки Java. Вы можете создавать красивые графические интерфейсы в Swing, использовать веб-клиент или серверный код Apache, подключать готовый решатель судоку ... все, что вам нравится.
Еще одним большим плюсом Clojure является его отточенная поддержка параллелизма с примерно тремя различными вариантами . Если у вас есть ресурсоемкая параллелизируемая задача, Clojure может упростить ее. Что ж, проще.
Обновление: Еще один аргумент. Clojure очень функциональна, так что это плюс, если вы хотите заставить себя думать и писать функционально.
Существует множество причин, некоторые из которых упомянуты выше. Мое мнение:
Если бы мне нужно было найти что-то, на что можно пожаловаться, это была бы поддержка IDE. Возможно, это вопрос приобретения новых привычек, но мне все же легче справиться с механикой разработки на Java, чем на Clojure. Я пробовал и использую Clojure Box, enclojure в NetBeas, La Clojure в Intellij IDEA и против часовой стрелки в Eclipse. Все они работают нормально, если вы работаете в основном из REPL, но для компиляции и выполнения файлов классов они все еще кажутся немного неуклюжими.
Clojure работает на JVM (и на CLR), так что вот оно.
На этот вопрос невозможно ответить. Я бы сказал, что вы должны использовать 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 не является «стандартом», и некоторые люди считают язык, определенный реализацией, непривлекательным. И так далее. Для меня все это не имеет значения, но они могут иметь значение для вас.
Это почти полностью субъективно. Какой язык вам следует использовать, зависит от того, что вы уже знаете, что вы хотите изучать, какие библиотеки вы хотите использовать, какие редакторы и инструменты вам удобны, с какими языковыми недостатками вы готовы жить и обходить с какими недостатками вы не можете мириться и что помогает вам выполнять работу быстрее, дешевле, с большим удовольствием или достигать поставленных целей.
В основном, все, что заставляет вас чувствовать тепло и нечеткость. Изучите их все, а затем сделайте осознанный выбор, основываясь на своих вкусах, и используйте тот, который вам больше нравится. Все они хороши.
Когда? Насколько это возможно. Почему? Неизменяемые структуры данных - они действительно хороши. Есть много других причин .
Clojure следует использовать, когда
Схема была бы лучше, когда:
[1] да, это плохая плохая плохая причина. таков мир, в котором мы живем ...
ABCL (Armed Bear Common Lisp) и несколько Реализации схем (KAWA, SISC, ...) также работают на JVM.
Обычно Common Lisp доступен в различных «разновидностях» - ABCL - одна из них. Другие компилируются в C, в собственный код, имеют обширные среды разработки или специализированные расширения, такие как языки логики или базы данных.
Clojure OTOH - это новый диалект Lisp с упором на ленивое функциональное программирование и параллельное программирование. Его автор (Рич Хики) - очень опытный разработчик программного обеспечения (он также написал интерфейсы Java и .net для Common Lisp) и отлично справился с Clojure. Несмотря на то, что вокруг языка есть шумиха,
Подмножество Clojure также может компилироваться в javascript
Одна из величайших особенностей Clojure - это множество библиотек, которые вы можете использовать с ним. У вас есть мощь Java с выразительностью Lisp, и это крутая комбинация. Clojure больше подходит для разработки в реальном мире, потому что он был создан для разработки в реальном мире. С Clojure у вас есть потрясающие библиотеки, потрясающие современные функции и потрясающее сообщество полезных и единомышленников.
Я должен сказать, что Clojure - лучший язык во всех отношениях. Это весьма аргументированное заявление, поэтому я отмечу здесь, что это всего лишь мое честное мнение.
Clojure потрясающе.
Я всегда стараюсь изучать новые языки, поэтому мне интересно изучать Clojure. Но разве SBCL и некоторые другие реализации Common Lisp не намного быстрее, чем Clojure? Разве вам не понадобится значительно больше четырех процессоров (и достаточно распараллеливаемая задача), чтобы компенсировать разницу в производительности между приложением Clojure и даже однопоточной версией SBCL того же приложения?
Дизайн Clojure заботится о безопасном приспособлении нескольких стилей параллельного программирования, намеренно затрудняя ошибочное написание опасного, шаткого и часто ломающегося кода, допускающего параллелизм, в других языков. Если ваша проблемная область включает параллельное программирование, набор интегрированных инструментов Clojure для управления параллелизмом может быть более подходящим, чем библиотеки, специфичные для реализации или библиотеки с наименьшим общим знаменателем, доступные в других Lisps и схемах.