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