将Clojure与Python混合是一个好主意吗?

Hic*_*ick 8 python clojure

我正在开展一个涉及大量基于Web和AI工作的大项目.我对Python非常熟悉,尽管我唯一关心的是并发编程和扩展这个项目以使其在集群上工作.因此,Clojure for AI和支持Java函数调用并带来并发编程.

这是一个好主意,使用Python完成所有基于Web的api工作,并让Clojure处理大多数并发AI工作吗?

编辑:让我详细解释一下这种互动.Python将完成大部分肮脏的工作(抓取,图像处理,改进数据库等等.)如果可能的话,Clojure将处理数据库或从Python获取数据.我除了CPython与Python和Clojure之间的链接.

编辑2:这可能是一个愚蠢的问题,但这是一个相当长期的项目,将会发展很多并且经过几次迭代,Clojure是一种语言留下来吗?它足够便携吗?

Ger*_*ert 14

我建立与Clojure的后端(在机器上的一个任意数)的尴尬的并行数字运算应用和Ruby on Rails中一个前端.我并不特别喜欢RoR,但这是当时的零预算项目,我们手头有一位愿意免费工作的Rails程序员.

Clojure部分由(大致)控制器,数字运算节点和实现JSON-over-HTTP API的服务器组成,该API是Rails Web应用程序的接口.Clojure节点使用RabbitMQ相互通信.因为我们在应用程序的不同部分之间定义了清晰的API,所以以后很容易在Clojure中重写前端(因为它更适合我们的需求).

如果您正在开发具有长寿命和持续开发工作的分布式项目,那么将应用程序设计为多个单独的模块是有意义的,这些模块通过定义良好的API(json,bson,... over AMQP, HTTP,......或数据库).这意味着您可以使用您熟悉的语言快速入门,并在必要时在稍后阶段用其他语言重写部分.


mik*_*era 6

我不能看到使用Python作为Web应用程序和Clojure用于并发数据处理/后端代码的大问题.我假设你会使用像JSON这样的东西来进行两者之间的通信,这应该可以正常工作.

我个人使用Clojure(使用优秀的Noir作为Web框架,使用Korma作为数据库的东西.)但是如果你说你的经验主要是在Python中那么从生产力中坚持使用Python可能是有意义的观点(至少在短期内).

回答有关Clojure未来的问题:

  • 这绝对是留下来的.它有一个非常活跃的社区,可能是目前"最热门的"JVM语言之一(与Scala和Groovy一起).它似乎在大数据/分析领域做得特别好
  • Clojure在库支持方面具有特殊优势,因为它可以轻松地使用任何Java库.从实用的角度来看,这对于一个新的语言来说是一个巨大的优势,因为它可以立即解决通常在新的语言生态系统开发中遇到的问题之一.
  • Clojure是一种新语言,仍在进行大量的开发.如果您选择使用Clojure,您应该知道您需要付出一些努力来保持最新状态并使用最新的Clojure版本保持代码最新.我个人并不认为这是一个问题,但对于习惯于像Java这样更"稳定"的语言的人来说,这可能会让人感到惊讶.
  • Clojure非常便携 - 它基本上可以在任何地方运行,你可以得到一个相当现代的JVM,现在几乎无处不在.