AI(人工智能)为应用程序开发人员带来了无限的可能性。通过利用机器学习或深度学习,您可以创建更精确的用户配置文件、个性化设置和推荐,或者实现更智能的搜索、语音界面或智能帮助,以多种方式改进您的应用程序。您甚至能构建出能够感知、理解和应对意外情况的应用程序。
那么,您应该学习哪种编程语言来深入了解AI呢?当然,您需要一门具备丰富的机器学习和深度学习库的语言。它还应具备出色的运行时性能、强大的工具支持、庞大的程序员社区以及完善的支持包生态系统。这是一系列的要求,但幸运的是,有许多出色的选择。
排名第一的无疑是Python。尽管Python有一些让人头疼的地方,但如果您从事AI工作,几乎可以肯定的是,您将在某个时候使用Python。而且一些粗糙的短板已经稍微被平滑了。
随着2020年的到来,Python 2.x和Python 3.x的争论变得愈发重要,因为几乎每个主要的库都支持Python 3.x,并且会尽可能放弃对Python 2.x的支持。这意味着您可以充分利用所有新的语言功能。
尽管Python的打包问题(其中每个解决方案都以略有不同的方式打破)仍然存在,但您可以在大约95%的时间内使用Anaconda,而不必担心太多事情。如果Python世界能够一劳永逸地解决这个长期存在的问题,那将是极好的。
也就是说,Python中可用的数学和统计信息库在其他语言中几乎是无与伦比的。NumPy已经变得无处不在,几乎成为张量操作的标准API,而Pandas将R强大而灵活的数据帧引入Python。对于自然语言处理(NLP),您有着名的NLTK和超快的SpaCy。对于机器学习,有经过实践检验的Scikit-learn。当涉及到深度学习时,目前所有的库(如TensorFlow、PyTorch、Chainer、阿帕奇MXNet、Theano等)都是基于Python的第一个项目。
如果您正在阅读关于arXiv的前沿深度学习研究,那么您会发现大多数提供源代码的研究都是使用Python进行的。然后是Python生态系统的其他部分。尽管IPython已成为Jupyter Notebook,但您仍然会发现大多数Jupyter Notebook用户和大多数在线共享的笔记本都使用Python。至于部署模型,诸如Seldon Core之类的微服务架构和技术的出现意味着如今在生产环境中部署Python模型变得非常轻松。
没有解决的办法。Python是AI研究的最前沿语言,是您会找到最多的机器学习和深度学习框架的语言,并且AI世界中几乎每个人都在谈论这种语言。由于这些原因,尽管您的作者每天至少处理一次空白问题,但Python还是AI编程语言中的第一名。
通过围绕机器学习和人工智能的炒作,我们的小组讨论了该技术的定义和含义。在开发AI应用程序时,C++不太可能是您的首选,但当您需要从系统中获取性能的最后每一点时——随着深度学习的发展,这种情况变得越来越普遍——您需要在模型上运行资源受限的系统——是时候再次回到可怕的指针世界了。
幸运的是,现代C++可以令人愉快地编写(诚实地说)。您可以选择一种方法:您可以使用Nvidia的CUDA之类的库来深入研究堆栈的底部,以编写直接在GPU上运行的自己的代码;也可以使用TensorFlow或PyTorch来访问灵活的高级API。PyTorch和TensorFlow都允许您加载以Python(或PyTorch的TorchScript的Python子集)生成的模型,并在C++运行时中直接运行它们,从而使您更接近裸机进行生产,同时保留了开发的灵活性。
简而言之,随着AI应用程序在从最小的嵌入式系统到庞大的集群的所有设备中激增,C++成为工具包的关键部分。边缘的AI意味着它已经不够精确了;你需要又好又快。
JVM语言家族(Java、Scala、Kotlin、Clojure等)仍然是AI应用程序开发的理想选择。无论是自然语言处理(CoreNLP)、张量运算(ND4J)还是完整的GPU加速的深度学习堆栈(DL4J),您都可以在管道的所有部分使用大量的库。另外,您可以轻松访问大数据平台,例如Apache Spark和Apache Hadoop。
Java是大多数企业的通用语言,并且在Java 8及更高版本中提供了新的语言构造,因此编写Java代码并不是我们许多人都记得的令人讨厌的经历。用Java编写AI应用程序可能会感到无聊,但可以完成工作——您可以将所有现有的Java基础结构用于开发、部署和监视。
您不太可能只为编写AI应用程序而学习JavaScript,但是Google的TensorFlow.js仍在不断改进并提供了一种有趣的方式可将您的Keras和TensorFlow模型部署到浏览器或通过使用WebGL进行GPU加速计算的Node.js部署。但是自TensorFlow.js推出以来我们还没有真正看到的一件事是大量JavaScript开发人员涌入AI领域。我认为这可能是由于与JavaScript之类的语言相比周围JavaScript生态系统没有可用库的深度。此外在服务器端使用Node.js部署模型与使用Python选项之一相比并没有太大优势因此我们可能会发现基于JavaScript的AI应用程序在不久的将来仍将主要基于浏览器。但这仍然创造了许多有趣的有趣机会例如Emoji Scavenger Hunt 。
在去年的这篇文章中我提到Swift是一种值得关注的语言。今年它进入了我的前六名发生了什么?Swift for TensorFlow 。TensorFlow的最新功能和最强大功能的完全类型化无残障的绑定以及使您可以像刚开始使用Python一样导入Python库的深色魔术都源于此。Fastai团队正在开发其流行库的Swift版本并且我们承诺通过将许多张量智能移至LLVM编译器在生成和运行模型方面进行许多进一步的优化。现在可以生产了吗?并非如此但这确实可以为下一代深度学习开发指明道路因此您绝对应该研究Swift的发展。
R排在我们列表的底部并且呈下降趋势。R是数据科学家喜欢的语言但是以数据框为中心的方法使其他程序员经常会发现R有点混乱。如果您有一组专门的R开发人员则可以将与TensorFlow 、Keras或H2O的集成用于研究、原型开发和实验但由于以下原因我不建议将R用于生产或绿地开发性能和运营问题:尽管您可以编写可以部署在生产服务器上的高性能R代码但是几乎可以肯定采用R原型并用Java或Python重新编码它会更加容易。
当然Python 、C++ 、Java 、JavaScript 、Swift和R不是唯一可用于AI编程的语言。尽管我不认为这是学习的重中之重但您可能会发现另外两种编程语言可能有趣或有帮助:几年前由于Torch框架Lua在人工智能领域处于很高的地位Torch框架是满足研究和生产需求的最受欢迎的机器学习库之一如果您深入研究深度学习模型的历史则经常会在旧的GitHub存储库中找到对Torch和大量Lua源代码的大量引用因此了解Torch API可能会很有用与PyTorch的基本API相距不远但是如果像我们大多数人一样您真的不需要为您的应用程序做大量的历史研究则可以不必绕着Lua的小怪癖就可以解决问题;Julia是一种专注于数值计算的高性能编程语言使其非常适合大量数学运算的AI尽管目前还不流行作为语言选择但TensorFlow.jl和Mocha(受Caffe影响很大)之类的包装器提供了良好的深度学习支持如果您不介意相对较小的生态系统并且想从Julia致力于简化和快速执行高性能计算中受益那么Julia可能值得一看;最后还有一种语言值得我们提及:Go语言以其高效的并发处理和快速编译时间而闻名使其成为处理大型AI数据集的理想选择虽然Go不是最常用的AI编程语言但它确实在一些特定场景中被广泛使用例如分布式计算和云服务;总之无论您选择哪种编程语言学习并实践这些工具都将有助于您在AI领域取得进步并跟上这个快速发展的技术领域的步伐;同时请注意以上内容仅供参考具体选择还需根据您的项目需求和个人兴趣来决定;最后希望以上信息对您有所帮助祝您在AI编程之路上取得优异成绩!