干货分享:五大最适合学习AI开发的编程语言
AI(人工智能)为应用开发者开创了一个全新的可能性。通过利用机器学习或深度学习,您可以生成更好的用户配置文件、个性化设置和推荐,或者整合更智能的搜索、语音界面或智能助手,或者以其他数种方式改进您的应用。你甚至可以构建看得懂、听得懂,并与人类互动的应用。准备学习AI的你,知不知道选择哪种编程语言合适呢?以下列举的五种编程语言,被认为是最适合用来学习AI。大家可以参考一下。
1. PYTHON
第一名毫无疑问是 Python。尽管 Python 有些特性令人不爽(whitespace、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 上首先实现的项目。

(在LiveEdu上,一位德国的AI开发者教大家如何使用Python开发两个简单的机器学习模型)
如果您正在阅读关于 arXiv 的顶尖深度学习研究,那么几乎可以肯定您会在 Python 中找到源代码。 此外,Python 生态系统中还有其他部分。虽然 IPython 已经改名为 Jupyter Notebook,看上去不再以 Python 为中心,但您仍然会发现绝大多数 Jupyter Notebook 用户以及大多数在线共享笔记本都使用 Python。
Python 是人工智能研究的前沿语言,这是拥有最多机器学习和深度学习框架的语言,也是 AI 研究者几乎都掌握的语言。由于这些原因,尽管笔者每天都要咒骂一次 whitespace 问题,Python 仍然是人工智能编程语言之王,您没法绕过它。
2. JAVA 和相关语言
JVM 系列语言(Java,Scala,Kotlin,Clojure 等)也是 AI 应用开发的绝佳选择。无论是自然语言处理(CoreNLP)、张量运算(ND4J)还是完整的 GPU 加速深度学习堆栈(DL4J),您都可以使用大量的库来管理流水线的各个部分。另外,您还可以轻松访问 Apache Spark 和 Apache Hadoop 等大数据平台。
Java 是大多数企业的通用语言,在 Java 8 和 Java 9 中提供了新的语言结构,这使得编写 Java 代码的体验不再像我们过去所记得的那样糟糕。使用 Java 编写人工智能应用可能会让人觉得无聊,但它确实能完成工作,并且您可以使用所有现成的 Java 基础架构来开发、部署和监视。
3. C/C++
在开发 AI 应用时,C / C ++ 不太可能成为您的首选,但如果您在嵌入式环境中工作,并且无法承受 Java 虚拟机或 Python 解释器的开销,那么 C / C ++ 就是最好的解决方案。当你需要榨干系统的每一滴性能时,你就得面对可怕的指针世界。
幸运的是,现代 C / C ++ 写起来体验还不错(实话实说!)。您可以从下列方法中选择一个最适合的:您可以一头扎进堆栈底部,使用 CUDA 等库来编写自己的代码,这些代码将直接在 GPU 上运行;您也可以使用 TensorFlow 或 Caffe 以访问灵活的高级 API。后者还允许您导入数据科学家用 Python 写的模型,然后以 C / C ++ 级别的速度在生产环境中运行它们。
在未来一年中,请密切留意 Rust 在 AI 领域的一些动作。结合 C / C ++ 级别的速度与类型和数据安全性,Rust 是实现产品级性能却不会造成安全问题的最佳选择。并且它现在已经可以与 TensorFlow 绑定了。
4. JAVASCRIPT
蛤?!JavaScript?我没听错吧?其实,谷歌最近发布了 TensorFlow.js,这是一个 WebGL 加速库,允许您在 Web 浏览器中训练和运行机器学习模型。它还包括 Keras API 以及加载和使用在常规 TensorFlow 中训练过的模型的功能。这可能会吸引大量的 JS 开发者涌入 AI 领域。虽然 JavaScript 目前能够访问的机器学习库与其他语言相比有所局限,但在不久的将来,开发者在网页中添加神经网络就和添加 React 组件或 CSS 属性一样简单。这听上去既强大又恐怖。
TensorFlow.js 仍处于早期阶段。目前它可在浏览器中运行,但不适用于 Node.js。它还没有实现完整的 TensorFlow API。不过,我预计到 2018 年底,这两个问题都将基本得到解决,并且JavaScript 将在不久之后大举进军 AI 界。
5. R
R 在这份榜单中排名最末,并且看上去将会越来越没落。R 是数据科学家喜欢的语言。但是,其他程序员在第一次接触 R 时会感到有些困惑,因为它采用了以数据帧为中心的方法。如果您有一组专门的 R 开发者,那么将 R 与 TensorFlow、Keras 或 H2O 搭配使用,进行研究、原型设计和实验是有意义的。但基于性能和操作方面的考虑,我不愿意推荐将 R 用于生产。虽然您可以写出能在生产服务器上部署的高性能 R 代码,但将这种用 R 语言编写的原型重新编码为 Java 或 Python 肯定会更容易。
本文为转载,原文出处:《AI 开发,究竟哪种语言强?》
干货分享:五大最适合学习AI开发的编程语言的更多相关文章
- 华为全栈AI技术干货深度解析,解锁企业AI开发“秘籍”
摘要:针对企业AI开发应用中面临的痛点和难点,为大家带来从实践出发帮助企业构建成熟高效的AI开发流程解决方案. 在数字化转型浪潮席卷全球的今天,AI技术已经成为行业公认的升级重点,正在越来越多的领域为 ...
- 干货分享:互联网运营 学习SEO从零开始 SEO深度解析学习笔记
最近在自学SEO,互联网运营,把做的笔记干货分享给大家啊! 希望能帮到大家,如有好的建议可以关注我[磨人的小妖精]或留言,大家一起探讨. 之前还写过一篇文章互联网运营+SEO:推荐必看的5本书籍,学习 ...
- [AI开发]将深度学习技术应用到实际项目
本文介绍如何将基于深度学习的目标检测算法应用到具体的项目开发中,体现深度学习技术在实际生产中的价值,算是AI算法的一个落地实现.本文算法部分可以参见前面几篇博客: [AI开发]Python+Tenso ...
- 最强最全干货分享:Android开发书籍、教程、工具等
最全干货分享,本文收集整理了Android开发所需的书籍.教程.工具.资讯和周刊各种资源,它们能让你在Android开发之旅的各个阶段都受益. 入门<Learning Android(中文版)& ...
- [AI开发]centOS7.5上基于keras/tensorflow深度学习环境搭建
这篇文章详细介绍在centOS7.5上搭建基于keras/tensorflow的深度学习环境,该环境可用于实际生产.本人现在非常熟练linux(Ubuntu/centOS/openSUSE).wind ...
- 干货100+ 最超全的web开发工具和资源大集合
干货100+ 最超全的web开发工具和资源大集合 作为Web开发者,这是好的时代,也是坏的时代.Web开发技术也在不断变化.虽然很令人兴奋,但是这也意味着Web开发人员需要要积极主动的学习新技术和 ...
- 【干货分享】Google 的设计准则,素材和资源
在谷歌,他们说, “专注于用户,所有其它的就会水到渠成 ”.他们遵循设计原则,寻求建立让用户惊喜的用户体验.谷歌一直挑战自己,为他们的用户创造一种视觉语言,综合优秀设计的经典原则和创新.谷歌设计规范是 ...
- 电脑小白学习软件开发-C#语言基础之循环重点讲解,习题
写代码也要读书,爱全栈,更爱生活.每日更新原创IT编程技术及日常实用视频. 我们的目标是:玩得转服务器Web开发,搞得懂移动端,电脑客户端更是不在话下. 本教程是基础教程,适合任何有志于学习软件开发的 ...
- [AI开发]Python+Tensorflow打造自己的计算机视觉API服务
"与其停留在概念理论层面,不如动手去实现一个简单demo ." ——鲁迅 没有源码都是耍流氓github 前言 目前提供AI开发相关API接口的公司有很多,国外如微软. ...
随机推荐
- centos7.4之zabbix4.0的fping监控
参考博文: https://www.cnblogs.com/lei0213/p/8859326.html 注释:他是额外安装fping的:因为我yum安装的zabbix,fping就已经自带了:安装步 ...
- [EffectiveC++]item26:尽可能延后变量定义式的出现时间
- 快速搭建一个Express工程骨架
下载express-generator 通过应用生成器,可以帮我们快速搭建项目需要的骨架.这就需要npm在全局下载express-generator(-g就是在全局安装) npm install ex ...
- ascii2native 转码 解码
//把十六进制的编码转为原码function asciiHex2native(strAscii) { var output = ""; var posFrom = 0; var p ...
- Azkaban时区问题导致调度差1天
设置了Azkaban调度是每日凌晨一次,如下: 但是调度历史上显示最近一次调度时间是 初步怀疑是因为时区问题导致,查看服务器时区如下 cat /etc/timezone 为Asia/Shanghai. ...
- Entity Framework连接MySQL时:由于出现以下异常,无法生成模型:“表“TableDetails”中列“IsPrimaryKey”的值为DBNull.
解决办法一: 1.cmd 2.c:\Users\Administrator>cd c:\Program Files\MySQL\MySQL Server 5.7\bin 3c:\Program ...
- 【node.js】GET/POST请求、Web 模块
获取GET请求内容 node.js 中 url 模块中的 parse 函数提供了这个功能. var http = require('http'); var url = require('url'); ...
- ethereumjs/ethereumjs-common-1-简介
为了了解ethereumjs/ethereumjs-block-3-代码的使用需要了解的一个模块 https://github.com/ethereumjs/ethereumjs-common Com ...
- 基于AppDomain的"插件式"开发
很多时候,我们都想使用(开发)USB式(热插拔)的应用,例如,开发一个WinForm应用,并且这个WinForm应用能允许开发人员定制扩展插件,又例如,我们可能维护着一个WinService管理系统, ...
- [转]TortoiseSVN客户端重新设置用户名和密码
在第一次使用TortoiseSVN从服务器CheckOut的时候,会要求输入用户名和密码,这时输入框下面有个选项是保存认证信息,如果选了这个选项,那么以后就不用每次都输入一遍用户名密码了. 不过,如果 ...