Цель моего вопроса не в том, чтобы развязать пламенную войну, а в том, чтобы определить, при каких обстоятельствах каждый язык является «лучшим инструментом для работы».
Я прочитал несколько книг по Clojure ( Programming Clojure , Practical Clojure , The Joy of Clojure и Manning Early Access edition Clojure in Action ), и я считаю, что это фантастический язык. В настоящее время я читаю Let Over Lambda, который в основном имеет дело с макросами Common Lisp, и это тоже очень интересный язык.
Я не эксперт по Лисп (скорее новичок), но это семейство языков очаровывает меня, как и функциональное программирование в целом.
Преимущества Clojure (и недостатки «других»):
Работает на JVM.
JVM - это очень стабильная, высокопроизводительная языковая среда, которая вполне соответствует мечте Sun: «Напиши один раз, запусти [почти] где угодно». Я могу написать код на своем Macbook Pro, скомпилировать его в исполняемый файл JAR, а затем запустить его в Linux и Microsoft Windows с небольшим дополнительным тестированием.
(Hotspot и др.) JVM поддерживает высококачественную сборку мусора и очень производительную своевременную компиляцию и оптимизацию. Если всего несколько лет назад я написал все, что должно было работать быстро, на C, теперь я без колебаний делаю это на Java.
Стандартная, простая, многопоточная модель. Есть ли в Common Lisp стандартный пакет многопоточности?
Перерывы однообразия всех этих скобок с
[]
,{}
и#{}
, хотя эксперты Common Lisp, вероятно , сказать мне , что с чтением макросами, вы можете добавить их к CL.
Недостатки Clojure :
- Работает на JVM.
- Никакой хвостовой рекурсии или продолжений. Поддерживает ли Common Lisp продолжения? Я считаю, что схема требует поддержки обоих.
Преимущества других (в частности Common Lisp) (и недостатки Clojure):
Макросы считывателя, определяемые пользователем.
Другие преимущества?
Мысли? Другие отличия?