Как я могу перейти с Java на Clojure?
-
05-07-2019 - |
Вопрос
После обнаружения Clojure я провел в нем последние несколько дней. Р>
Какие типы проектов пригодны для Java поверх Clojure, наоборот и в сочетании?
Какие примеры программ вы бы никогда не попробовали до Clojure?
Решение
Clojure хорошо подходит для параллельного программирования . Он предоставляет такие замечательные инструменты для работы с потоками, как программная транзакционная память и изменяемые ссылки. Р>
В качестве демонстрации для группы разработчиков Western Mass Рич Хикки провел симуляцию колонии муравьев, в которой каждый муравей представлял собой свой собственный поток, а все переменные были неизменными. Даже с очень большим количеством потоков все работало замечательно. Это не только потому, что Рич - замечательный программист, но и потому, что ему не нужно было беспокоиться о блокировке при написании своего кода. Вы можете посмотреть его презентацию о колонии муравьев здесь .
Другие советы
Если вы собираетесь попробовать параллельное программирование, то я думаю, что clojure намного лучше, чем то, что вы получаете из Java из коробки. Посмотрите на эту презентацию, чтобы понять, почему:
Я задокументировал мои первые 20 дней с Clojure в моем блоге
http://loufranco.com/blog/files /category-20-days-of-clojure.html р>
Я начал с лекций SICP, а затем построил параллельное сито простых чисел. Я также играл с макросами.
Какие типы проектов пригодны для использования Java поверх Clojure, вице или в комбинации?
Проект, где инструмент для построения GUI (например, Матисс в Netbeans) Необходим был бы случай, когда Java может все еще будет необходимо. Все, что сделано в Java может быть сделано в Clojure довольно с готовностью, с прокси и gen-классом, если необходимо, или просто доступ к Java как необходимо (., doto, new и т. д.). это позволяет проектам Clojure легко использовать Библиотеки Java или устаревший код Java. Р>
Какие программы вы никогда не пробовали до Clojure?
Прежде чем я нашел Clojure, я был Созерцая проект, который требовал JDBC, будет работать в сервлете контейнер, и я ожидал сделать много итеративной разработки, потому что не было ясно, какие методы работать для данных, которые мне нужно было проанализировать. Я положил это на задний план, потому что я не было ни времени, ни терпения для compile-debug-deploy-validation езда на велосипеде, что требует Java. У меня сейчас написал заявление в Clojure, и я очень доволен легкостью вносить изменения на лету и быть в состоянии изучить результаты немедленно. Не говоря уже о радости программирования без блокировки освобожден от необходимости развиваться (и рефактор) иерархии классов. Р>
- "MikeM" через clojure@googlegroups.com список рассылки
Какие типы проектов пригодны для Java поверх Clojure, наоборот и в сочетании?
Если вы хотите разработать инфраструктуру, которая будет использоваться Java и Clojure, я считаю, что написание основных абстракций (интерфейсов и классов рекламы) в Java предпочтительнее, чем написание их в Clojure (я считаю, что <код Clojure < > gen-class быть довольно утомительным и использовать proxy
). Р>
Если вы являетесь пользователем Hibernate или любой другой среды, которая интенсивно использует Java-аннотации, не предлагая программную альтернативу, у вас возникнут некоторые проблемы, поскольку нетрудно эмулировать аннотированные POJO с помощью структур данных Clojure. р>
Кроме того, у меня не было ни одного варианта использования, для которого Clojure менее подходит, чем Java; Вы, конечно, должны справиться с потерей статической типизации, которая поначалу кажется немного смущающей, но, как правило, уходит.