Обоснование на сайте clojure.org гласит:
Почему я написал еще один язык программирования? В основном потому, что я хотел:
- Лисп
- для функционального программирования
- симбиот с установленной платформой
- предназначен для параллелизма
и не смог найти.
Соответствуют ли указанные вами 3 языка (Kawa, ABCL и SISC) этим требованиям? Это:
- Лиспс (диалекты CL или Scheme) ✓
- для функционального программирования ✓
- симбиот с установленной платформой (JVM) ✓
но они не предназначены для (STM) параллелизма; однако, чтобы быть справедливым и полным, я нашел по крайней мере 2 библиотеки STM для CL, которые еще не были упомянуты:
- STMX
- Проверена работа на ABCL. В стадии активной разработки.
- CL-STM
- Dead? Последнее изменение было в 2007 году.
Хм ... Так зачем создавать новый Лисп? Главным образом потому, что это библиотеки . Страница с обоснованием на clojure.org продолжается (выделение добавлено):
А как насчет стандартных Лиспов (Common Lisp и Scheme)?
- Медленная / без инноваций после стандартизации
- Основные структуры данных изменяемые, не расширяемые
- Нет параллелизма в спецификации
- Хорошие реализации уже существуют для JVM (ABCL, Kawa, SISC и др.)
- Стандартные Лиспы - это их собственные платформы
Это языковая проблема параллелизма , как уже упоминали другие.
Кроме того, зачем останавливаться на JVM? Поддержка Clojure CLR находится в активной разработке .
Это два пробела, которые он заполняет, с моей точки зрения. Вы должны использовать Clojure, если он соответствует вашим потребностям. Не беспокойтесь о потере своих навыков, если Clojure выпадет из карты. Ваши навыки Лиспа, но, что более важно, ваш образ мышления, будут перенесены на другие диалекты Лисп.