我是一名计算机科学专业的学生,将要开展一个人工智能项目,这个项目能根据音乐类型和情感输入创作出一段音乐曲目。用于此项目的算法是否会消耗很多资源?如果我选择使用Java而不是C ++,那么速度上是否会有任何区别?(注意:我只了解这两种语言,且更喜欢使用Java。)
NB: 很抱歉我的英语不好,如果有人可以,请在必要时清理本帖。谢谢。
我是一名计算机科学专业的学生,将要开展一个人工智能项目,这个项目能根据音乐类型和情感输入创作出一段音乐曲目。用于此项目的算法是否会消耗很多资源?如果我选择使用Java而不是C ++,那么速度上是否会有任何区别?(注意:我只了解这两种语言,且更喜欢使用Java。)
NB: 很抱歉我的英语不好,如果有人可以,请在必要时清理本帖。谢谢。
如果你更擅长使用Java,则选择使用Java。这样可以让你集中精力解决问题,而不是在编程上花费过多时间。也许使用C++会得到更快的程序,也许不会,但是达到这个目标的速度会更慢,并且你并没有明确说明程序必须非常快。
资源消耗受算法影响远大于所选择的编程语言。如果你熟悉Java,用这种语言编写你的应用程序 - 即使C++实现可能快10%。
话虽如此,你可能会对Java人工智能API感兴趣。
在我看来,与人工智能最相关的语言是Lisp。
请参阅对为什么使用Lisp进行AI
的回答。其中被投票最多的回答指出,在20世纪60年代和70年代,Lisp曾经是主流。但是现在,动态语言如Ruby、Python等更常用。
看起来你的项目处于概念验证阶段。我建议使用你最熟悉的编程语言。写得好的Java代码比写得差的C代码运行速度更快。
我会在这样的项目中使用Common Lisp。如果您不了解Lisp,我会为了这个项目学习它。这将是一个很好的学习经验,而且由于您是计算机科学专业的学生,它只会对您有所帮助。Lisp是一种可以真正开阔眼界的语言。
我几年前做过类似的AI项目。我不知道你将要实现什么解决方案,但是AI程序通常会占用较多资源,并可能需要很长时间才能运行,但另一方面,你需要使用你熟悉的语言来完成它。
因此,我的建议是,如果你感觉你了解 C++(或C),就选择其中之一。如果你不了解它们,请在选择之前仔细考虑需要投入的学习时间。
如果你从零开始,就用你最擅长的。如果你想使用已经建立的库来加速开发,你可能需要先调查一下 - 但是 Java 肯定有一些。
如果我是你,我肯定会选择 Java。
我会选择Clojure,原因如下:
我的建议是首先设计你需要的一切,每个ADT,每个算法类,层次结构,所有东西。这种项目/编程可能在C/C++语言族中设计起来非常困难,也许你可以选择其他具有较少字符串类型哲学的语言。因此,我鼓励您使用专为此类问题设计的语言,更适合您的应用程序,例如函数式范式
,如LISP,逻辑范式
,如PROLOG或类似的东西。
我的第三年论文项目是实现用于蜂窝网络无线电频率分配的启发式算法。我选择了Java而不是C++,因为它使我比使用C++更容易地可视化结果。我不认为在C++中性能会有显着不同 - 你的算法的复杂度因素可能是最大的因素。