我正在开展一个涉及大量基于Web和AI工作的大项目。我对Python非常熟悉,尽管我唯一关心的是并发编程和扩展这个项目以使其在集群上工作。因此,Clojure for AI和支持Java函数调用并带来并发编程。
使用Python完成所有基于Web的api工作并让Clojure处理大部分并发AI工作是一个好主意吗?
编辑: 让我详细解释一下这种互动。 Python将完成大部分肮脏的工作(抓取,图像处理,改进数据库等等。)如果可能的话,Clojure将处理数据库或从Python获取数据。我除了CPython与Python和Clojure之间的链接。
EDIT2: 可能是一个愚蠢的问题要问,但这是一个相当长的项目,它会发展很多并且经过几次迭代,Clojure是一种语言留下来吗?它足够便携吗?
答案 0 :(得分: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,...或数据库)。这意味着您可以使用您熟悉的语言快速入门,并在必要时在稍后阶段用其他语言重写部分。
答案 1 :(得分:6)
我无法看到将Python用于Web应用程序和Clojure用于并发数据处理/后端代码的大问题。我假设你会使用像JSON这样的东西来进行两者之间的通信,这应该可以正常工作。
我个人使用Clojure(使用优秀的Noir作为Web框架,Korma作为数据库的东西。),但如果你说你的经验主要是在Python那么从生产力的角度(至少在短期内)坚持使用Python可能是有意义的。
回答有关Clojure未来的问题:
答案 2 :(得分:4)
如果你可以构建双方使用Data和Pure(ish)函数进行通信,那么这应该可以很好地工作。将您的clojure函数包装在Web服务中,这些函数可以使用JSON(或者更优选的是clojure形式),这样可以使基于Python的前端可以访问这些函数。
当然,在Clojure中一直编写它会更有趣。 ;)
如果这是一个长期项目,而不是构建清洁功能(如在接收和返回值中),那么交换数据的接口变得更加重要,因为它将使您能够独立地发展组件。
答案 3 :(得分:0)
在这种情况下,我个人喜欢从以下顺序开始。
就Clojure的未来而言,这是一种由“惊人的程序员社区”而不是某些公司开发的语言。我希望能够清除你对Clojure“长期”关注的怀疑。顺便说一句,Clojure是LISP,所以你可以按自己喜欢的方式修改语言并自己解决问题,即使有人不这样做。