管理进化

用于AI开发的编程语言有哪些


摘要:本文介绍了包括Python、C++、Java 和其他 JVM 语言、JavaScript、Swift和R语言在内的六种AI编程语言。

一、Python

排名第一的AI编程语言仍然是 Python。虽然 Python 有一些令人抓狂的方面,但如果你在做 AI 工作,你几乎肯定会在某个时候使用 Python。而且Python语言里的一些不完善之处已经得到改进。

虽然 Python 的打包噩梦——即每个不同的解决方案都会以不同的方式被破坏——仍然存在,但您可以在大约 95% 的时间使用 Anaconda,而不必担心太多。尽管如此,如果 Python 语言能够一劳永逸地解决这个长期存在的问题就更好了。

也就是说,Python 中可用的数学和统计库在其他语言中几乎是无与伦比的。NumPy已经变得如此普遍,它几乎是张量运算的标准 API,而Pandas将 R 语言的强大而灵活的数据帧带入了 Python。对于自然语言处理 (NLP),您拥有古老的NLTK和速度极快的SpaCy。对于机器学习,有久经考验的Scikit-learn。而且,当涉及到深度学习,目前所有的库(TensorFlow,PyTorch,Chainer,Apache MXNet,Theano等)都是Python优先的项目。

二、C++

在开发 AI 应用程序时,C++ 不太可能是您的首选,但是当您需要从系统中榨取最后一点性能时——随着深度学习的发展,这种情况变得越来越普遍,即您需要资源受限的系统上运行模型——这时就再次回到最初的计算机时代了。

值得庆幸的是,现代 C++ 编写起来很愉快。您可以选择不同的方法。您可以深入到堆栈的底部,使用 Nvidia 的CUDA库来编写您自己的代码,直接在您的 GPU 上运行,或者您可以使用 TensorFlow 或 PyTorch 来访问灵活的高级 API。PyTorch 和 TensorFlow 都允许您加载在 Python(或 PyTorch 里的的 Python TorchScript 子集)中生成的模型,并直接在 C++ 运行时中运行它们,让您更接近生产环境的裸机,同时保持开发的灵活性。

简而言之,随着人工智能应用程序从最小的嵌入式系统发展到庞大的集群,C++ 成为重要的工具。前沿的人工智能仅有精确度是不够的,还需要更好的和更快速的编程语言。

三、Java 和其他 JVM 语言

JVM 系列语言(Java、Scala、Kotlin、Clojure 等)仍然是 AI 应用程序开发的绝佳选择。无论是自然语言处理 ( CoreNLP )、张量运算 ( ND4J ) 还是完整的 GPU 加速深度学习堆栈 ( DL4J ),您都拥有大量可用的库。此外,您还可以轻松访问Apache Spark和Apache Hadoop等大数据平台。

Java 是大多数企业的通用语,并且随着 Java 8 及更高版本中提供的新语言结构,编写 Java 代码不再是我们许多人记忆中的讨厌经历。用 Java 编写 AI 应用程序可能会让人觉得有点无聊,但它可以顺利完成工作——您可以使用所有现有的 Java 基础设施进行开发、部署和监控。

四、JavaScript

您不太可能仅仅为了编写 AI 应用程序而学习JavaScript,但 Google 的TensorFlow通过持续改进提供了一种有趣的方式来将您的 Keras 和 TensorFlow 模型部署到您的浏览器或通过 Node使用 WebGL 进行 GPU 加速计算。

然而,自 TensorFlow推出以来我们还没有看到大量 JavaScript 开发人员涌入 AI 领域。我认为这可能是由于与 Python 等语言相比, JavaScript 生态系统没有达到其他可用库的深度。

此外,在服务器端,与使用其中一种 Python 选项相比,使用 Node部署模型并没有太大优势,因此我们可能会看到基于 JavaScript 的 AI 应用程序在不久的将来仍主要基于浏览器。但这仍然创造了许多有趣的机会,比如Emoji Scavenger Hunt。

五、Swift

Swift实现了和TensorFlow最新和最强大功能的完全类型化、无繁琐的绑定,以及允许您导入 Python 库,就像您最初使用 Python 一样。

Fastai团队正在对他们的受欢迎库的Swift版本进行优化,现在可以使用了吗?并没有,但它可能确实为下一代深度学习开发指明了方向,所以你绝对应该了解并关注一下 Swift 的最新动态。

六、R语言

R语言排在这个列表的底部,并且呈下降趋势。R语言是数据科学家喜爱的语言。然而,其他程序员觉得R语言以数据框为中心的方法有点令人困惑。如果您有一组专门的R语言开发人员,那么将其与TensorFlow、Keras或H2O的集成用于研究、原型设计和实验是有意义的,但因为R语言的性能和操作问题,我不愿推荐 R语言用于生产用途或用于从0开始的开发。虽然您可以编写可部署在生产服务器上的高性能R语言代码,但使用该 R语言原型并用 Java 或 Python 重新编写代码肯定会更容易。

推荐阅读:

1.图像识别是什么

2.机器学习和编程最大区别是什么

智齿客服