2019-02-26 10:27:56分类:行业资讯4718
AI(人工智能)为应用程序开发人员打开了一个充满可能性的世界。 通过利用机器学习或深度学习,您可以生成更好的用户画像、个性特征和适当推荐,或者包含更智能的搜索、语音接口或智能辅助,或者以其他方式改进您的应用程序。 您甚至可以构建能看、会听并响应的应用程序。
你应该学习哪种编程语言来探究AI的深度? 当然,您需要一种具有许多良好机器学习和深度学习库的语言。 它还应具有良好的运行时性能、良好的工具支持、大型程序员社区以及健康的支持包生态系统。 这仍然能留下很多好的选择。
以下是我对人工智能开发的五种最佳编程语言的选择,以及三项荣誉提及。 其中一些语言正在崛起,而其他语言似乎正在下滑。 几个月后回来,没准你可能会发现这些排名发生了变化。
那么,应该选择哪种编程语言进行机器学习或深度学习项目? 给你推荐五种最佳的编程语言选择。
一、AI编程首选
1.Python
排名第一的是Python。 怎么可能是别的,真的吗? 虽然有一些关于Python的令人抓狂的事情 ——空格、Python 2.x和Python 3.x之间的重大分裂、五种不同的打包系统,它们都将不是问题——如果你正在进行AI工作,你几乎肯定会 在某些时候使用Python。
Python中提供的库在其他语言中几乎是无与伦比的。 NumPy已经变得如此普遍,它几乎是张量操作的标准API,而Pandas将R强大而灵活的数据帧带入Python。 对于自然语言处理(NLP),您拥有令人尊敬的NLTK和极其快速的SpaCy。 对于机器学习,有经过实战考验的Scikit-learn。 当涉及到深度学习时,所有当前的库(TensorFlow,PyTorch,Chainer,Apache MXNet,Theano等)都是有效的Python优先项目。
如果您正在阅读关于arXiv的尖端深度学习研究,那么几乎可以肯定您会在Python中找到源代码。 然后是Python生态系统的其他部分。虽然IPython已成为Jupyter Notebook,而不是以Python为中心,但您仍会发现大多数Jupyter Notebook用户以及大多数在线共享的笔记本都使用Python。
没法绕过它。 Python是人工智能研究的最前沿语言,是你能找到最多的机器学习和深度学习框架的语言,也是AI世界中几乎所有人都会说的。 出于这些原因,Python是人工智能编程语言中的第一个,尽管你的编码作者每天至少会诅咒一次空白问题。
2.Java和他的朋友
JVM家族系列语言(Java,Scala,Kotlin,Clojure等)也是AI应用程序开发的绝佳选择。 无论是自然语言处理(CoreNLP)、张量操作(ND4J)还是完整的GPU加速深度学习堆栈(DL4J),您都可以使用丰富的库来管理所有部分。此外,您还可以轻松访问Apache Spark和Apache Hadoop等大数据平台。
Java是大多数企业的通用语言,Java 8和Java 9中提供了新的语言结构,编写Java代码并不是我们许多人记忆中的可憎体验。 用Java编写AI应用程序可能会让人觉得无聊,但它可以完成工作 - 您可以使用所有现有的Java基础架构进行开发、部署和监视。
3.C/C++
在开发AI应用程序时,C/C++不太可能是您的首选,但如果您在嵌入式环境中工作,并且无法负担Java虚拟机或Python解释器的开销,那么C/C++就是解决之道。当你需要从系统中获取最后一点性能时,你需要回到可怕的指针世界。
值得庆幸的是,现代的C/C++写起来还是很愉快的(诚实之言!)。 具体方法你是有的选择的——您可以深入了解堆栈底部,使用CUDA等库来编写直接在GPU上运行的代码,也可以使用TensorFlow或Caffe来访问灵活的高级API。 后者还允许您导入数据科学家可能使用Python构建的模型,然后以C/C++提供的所有速度在生产中运行它们。
请留意Rust在未来一年中在这个领域所做的事情。 结合C/C++的速度与类型和数据安全性,Rust是实现生产性能的绝佳选择,而不会产生安全问题。 并且对Rust来说,TensorFlow绑定已经可用了。
4.JavaScript
JavaScript? 到底几个意思? 淡定,听我说说——Google最近发布了TensorFlow.js,这是一个WebGL加速库,允许您在Web浏览器中训练和运行机器学习模型。 它还包括Keras API以及加载和使用在常规TensorFlow中训练的模型的能力。 这可能会吸引大量开发人员涌入AI领域。 虽然JavaScript目前没有与此处列出的其他语言相同的机器学习库访问权限,但很快开发人员将在他们的网页中添加神经网络,与添加React组件或CSS属性几乎相同。真是即赋予权力有让人震恐。
TensorFlow.js仍处于早期阶段。 目前它在浏览器中有用,但在Node.js中不起作用。 它还没有实现完整的TensorFlow API。 但是,我预计这两个问题将在2018年底之前得到解决,此后不久JavaScript将对人工智能进行入侵。
5.R
R进入前五名的底部,并且趋势向下。 R是数据科学家喜爱的语言。 但是,由于其以数据帧为中心的方法,其他程序员在第一次遇到R时会发现R有点混乱。 如果你有一个专门的R开发人员小组,那么使用与TensorFlow,Keras或H2O的集成进行研究,原型设计和实验是有意义的,但由于性能和操作问题,我不愿意推荐R用于生产用途 。 虽然您可以编写可以部署在生产服务器上的高性能R代码,但是使用该R原型并使用Java或Python重新编写它几乎肯定会更容易。
二、其它AI编程
当然,Python,Java,C/C++,JavaScript和R并不是唯一可用于AI编程的语言。 让我们来看看其它三种编程语言,这些语言并没有完全进入我们的前五——二上升,一下降。
1.Lua
几年前,Lua在人工智能领域处于领先地位。 使用Torch框架,Lua是最流行的深度学习开发语言之一,你仍然会在GitHub上遇到很多历史深度学习工作,用Lua/Torch定义模型。 我认为,为了研究和查看人们以前的工作,熟悉Lua是个好主意。 但随着TensorFlow和PyTorch这样的框架的到来,Lua的使用已大幅减少。
2.Julia
Julia是一种高性能的编程语言,专注于数值计算,这使得它非常适合“数学繁重”的AI世界。 虽然现在不是那种流行的语言选择,但像TensorFlow.jl和Mocha(受Caffe影响很大)这样的包装器提供了良好的深度学习支持。 如果你不介意那里还没有一个庞大的生态系统,但是希望从其专注于使高性能计算变得容易和迅速的过程中获益,这是个不错的选择。
3.Swift
正如我们要推出的那样,LLVM编译器和Swift编程语言的创建者Chris Lattner宣布推出Swift for TensorFlow,该项目承诺将Python提供的易用性与速度和静态类型检查相结合的编译型语言。 作为奖励,Swift for TensorFlow还允许您导入Python库(如NumPy)并在Swift代码中使用它们,就像使用任何其他库一样。
现在,Swift for Tensorflow目前处于开发的早期阶段,但是能够编写现代编程结构并获得速度和安全性的编译时保证,确实是一个诱人的前景。 即使你还没出去学习Swift,我也建议你留意这个项目。