Как я могу перейти с Java на Clojure?

После открытия Clojure я провел последние несколько дней в этом.

Какие типы проектов пригодны для Java поверх Clojure, и наоборот, и в сочетании?

Каковы примеры программ, которые вы никогда бы не попробовали до Clojure?

4 ответа

Решение

Clojure хорошо подходит для параллельного программирования. Он предоставляет такие замечательные инструменты для работы с потоками, как программная транзакционная память и изменяемые ссылки.

В качестве демонстрации для группы разработчиков Western Mass Рич Хикки провел симуляцию колонии муравьев, в которой каждый муравей представлял собой свой собственный поток, а все переменные были неизменными. Даже с очень большим количеством потоков все работало замечательно. Это не только потому, что Рич - замечательный программист, но и потому, что ему не нужно было беспокоиться о блокировке при написании своего кода. Вы можете проверить его представление о колонии муравьев здесь.

Если вы собираетесь попробовать параллельное программирование, то я думаю, что clojure намного лучше, чем то, что вы получаете из Java из коробки. Посмотрите на эту презентацию, чтобы понять, почему:

http://blip.tv/file/812787

Я задокументировал мои первые 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; Вы, конечно, должны справиться с потерей статической типизации, которая сначала пугает, но, как правило, уходит.

Другие вопросы по тегам