人工智能项目 - 该选择哪种编程语言?

11

我是一名计算机科学专业的学生,将要开展一个人工智能项目,这个项目能根据音乐类型和情感输入创作出一段音乐曲目。用于此项目的算法是否会消耗很多资源?如果我选择使用Java而不是C ++,那么速度上是否会有任何区别?(注意:我只了解这两种语言,且更喜欢使用Java。)

NB: 很抱歉我的英语不好,如果有人可以,请在必要时清理本帖。谢谢。


3
这个问题经常被提出。简短回答:语言选择几乎不是应用程序性能的因素。 - Daniel Earwicker
10个回答

13

如果你更擅长使用Java,则选择使用Java。这样可以让你集中精力解决问题,而不是在编程上花费过多时间。也许使用C++会得到更快的程序,也许不会,但是达到这个目标的速度会更慢,并且你并没有明确说明程序必须非常快。


12

资源消耗受算法影响远大于所选择的编程语言。如果你熟悉Java,用这种语言编写你的应用程序 - 即使C++实现可能快10%。

话虽如此,你可能会对Java人工智能API感兴趣。


一个C++实现可以很容易地快10倍。我刚遇到一个Java初始化一个1600万向量数组需要40秒的情况。 - Don Reba
在C++中存在一些可怕的内存泄漏的案例。我认为关键是通过使用开发者自己感到舒适的语言来避免过早优化。 - Adam Matan

3

在我看来,与人工智能最相关的语言是Lisp。

请参阅对为什么使用Lisp进行AI的回答。其中被投票最多的回答指出,在20世纪60年代和70年代,Lisp曾经是主流。但是现在,动态语言如Ruby、Python等更常用。


3

看起来你的项目处于概念验证阶段。我建议使用你最熟悉的编程语言。写得好的Java代码比写得差的C代码运行速度更快。


2

我会在这样的项目中使用Common Lisp。如果您不了解Lisp,我会为了这个项目学习它。这将是一个很好的学习经验,而且由于您是计算机科学专业的学生,它只会对您有所帮助。Lisp是一种可以真正开阔眼界的语言。


3
许多Lisp方言(例如SBCL)可以编译成本地代码。Clojure是一种基于JVM运行的Lisp方言,并且与Java库集成良好,因此他可以兼得两者之长。 - Tim Schaeffer

1

我几年前做过类似的AI项目。我不知道你将要实现什么解决方案,但是AI程序通常会占用较多资源,并可能需要很长时间才能运行,但另一方面,你需要使用你熟悉的语言来完成它。

因此,我的建议是,如果你感觉你了解 C++(或C),就选择其中之一。如果你不了解它们,请在选择之前仔细考虑需要投入的学习时间。


1

如果你从零开始,就用你最擅长的。如果你想使用已经建立的库来加速开发,你可能需要先调查一下 - 但是 Java 肯定有一些。

如果我是你,我肯定会选择 Java。


1

我会选择Clojure,原因如下:

  • 它是一种Lisp语言,而Lisp语言对于人工智能开发非常好(部分是基于历史原因,但也有一些实际的具体原因 - 参见this threadthis thread
  • Clojure运行在JVM上,并且具有很好的Java互操作性,因此您可以利用所有出色的Java AI库(例如Weka),而且您已经对Java环境有一些经验
  • JVM现在拥有优秀的即时编译器,就实际目的而言,您将获得与C/C++相同速度的性能。

0

我的建议是首先设计你需要的一切,每个ADT,每个算法类,层次结构,所有东西。这种项目/编程可能在C/C++语言族中设计起来非常困难,也许你可以选择其他具有较少字符串类型哲学的语言。因此,我鼓励您使用专为此类问题设计的语言,更适合您的应用程序,例如函数式范式,如LISP,逻辑范式,如PROLOG或类似的东西。


0

我的第三年论文项目是实现用于蜂窝网络无线电频率分配的启发式算法。我选择了Java而不是C++,因为它使我比使用C++更容易地可视化结果。我不认为在C++中性能会有显着不同 - 你的算法的复杂度因素可能是最大的因素。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接