Где провести линию между Clojure и Java?

У меня есть интересный архитектурный вопрос, касающийся приложения, которое я разрабатываю с использованием как Clojure, так и Java. Приложение включает в себя множество интенсивных параллельных задач обработки данных, которые необходимо согласовать.

Вот причина для смешивания Clojure и Java:

  • Java необходима для довольно числового кода, интенсивно использующего процессор ], где мне нужно оптимизировать алгоритмы для максимально быстрой работы на JVM. Clojure еще не может достичь этого, и такой код не будет очень идиоматическим в Clojure, потому что алгоритмы требуют большого количества изменяемых данных по соображениям производительности.
  • Clojure (IMHO) намного лучше для оркестровки общего потока заявки, с отличной поддержкой функционального программирования, интерактивной динамической разработки в REPL и функций параллелизма.

Учитывая, что я использую оба языка - какую логику или принципы мне следует применить, чтобы определить разделительную линию между ними? В частности, меня интересует, как спроектировать API / интерфейс, который был бы на нужном уровне, чтобы использовать относительные преимущества обоих языков.

14
задан mikera 21 January 2011 в 13:07
поделиться