Python、R、Java、 C++ 等:从业界反馈看机器学习语言趋势

简介:

Python、R、Java、 C++ 等:从业界反馈看机器学习语言趋势

对于开发者来说,掌握什么编程语言能更容易找到机器学习或者数据科学的工作?

这是个许多人关心的问题,非常实际,也在许多论坛被翻来覆去地讨论过。非常显著的是 “Python 是大趋势”这一论调,似乎它即将在机器学习领域一统天下。那么这种说法到底有几分事实?

首先要指出的是,大多数对编程语言的讨论都比较主观。比如说,有的开发者(尤其是初学者)会因为一门语言的某个特性很契合自己的使用习惯、用着最顺手,就狂赞这门语言,而对其他语言的优点选择性失明。而这篇雷锋网编译自 IBM 开发者论坛的文章,则尽量避免了主观判断,用数据来展示各门开发语言在工业界的实际使用情况,可以说是十分难得。毕竟,统计学习的核心就是用数据说话。AI 开发者应该更明白可靠数据相比主观臆测的价值。

闲话少说,我们来看看 2016 年开发语言使用情况统计,到底哪门语言的使用人数上升最快?居前几位的都是哪些?

Python、R、Java、 C++ 等:从业界反馈看机器学习语言趋势

图1:机器学习与数据科学领域各语言的雇主招聘指数对比

如图所示,这是利用美国职位搜索引擎 indeed.com 得出的机器学习、数据科学招聘趋势:对这些领域内开发职位所列出的编程语言要求进行了统计。它展示出公司、雇主们都在寻找哪些语言技能。但注意:

  • 这并不能精确体现各公司开发人员正在使用哪些语言。

  • 这是美国的机器学习业界趋势,与中国、学界关系不是那么紧密。

  • 没有包涵在搜索结果内的语言,不代表它们的招聘职位比上述语言要少。

我们可以清楚看出,美国雇主最需要的前四大语言排名是 Python,Java,R,C++。其中,Python 在 2015 年中超过 Java 跃升至第一。

然后,把搜索结果限制在机器学习领域(去掉数据科学),数据其实差不多:

Python、R、Java、 C++ 等:从业界反馈看机器学习语言趋势

图2:机器学习领域各语言的雇主招聘指数对比

这张折线图中包含了 Lua,但由于它的招聘职位实在太少,代表 Lua 的线与坐标轴重合。

我们能从这两组数据中推断出什么?

  1. Python 是市场的领先者,作为最受欢迎的机器学习语言当之无愧。 另外,Python 与 Java 之间的差距正在被拉开。但是 Java 与 R 之间的差距正在被缩小。雷锋网获知,有业内人士对居第二位的语言是 Java 而不是 R 感到惊讶。通常,大家的主观感受是除了 Python,使用 R 语言开发机器学习应用最普遍。

  2. Python 并没有成为霸主。各主流语言的招聘需求都很多。对小众语言如 Lua 和 Julia ,目前业界的需求确实小些,但其他语言都占有了相当的比例。

  3. 进入 2016 年后,市场对所有语言的需求都大幅上涨。Python 并没有与其他语言拉开明显差距。这表现出,最近一年里业界对机器学习和数据科学整体的兴趣和重视。

  4. Scala 在 2014 年之后的增长十分惊人。2014 年之前,对它几乎没有招聘需求。但那年之后一直在稳定增长。2016 年,它赶上了 Javacript,达到主流语言阵营的水平。

  5. 作为一门口碑不错的新兴语言,Julia 的普及程度还很低。但在 2016 下半年有了巨幅增长。现在还看不出来它是否会成为主流语言。

关于 Scala 和 Julia 的增长趋势,在它们的增长率折线图中,我们可以很明显的看出来:

Python、R、Java、 C++ 等:从业界反馈看机器学习语言趋势

图3:Scala,Julia,Lua 在机器学习、数据科学领域的雇主招聘指数增长率

然后,当我们省略掉 Scala、Julia 和 Lua,统计主流语言的增长率,可以明白无误看出 Python 和 R 的增长速度远超其他主流语言:

Python、R、Java、 C++ 等:从业界反馈看机器学习语言趋势

图4:机器学习与数据科学领域,主流语言的雇主招聘增长率

R 的增长率始终高于 Python,位居第一,更是远超 Java。以此来看,在可预测的将来,R 不但不会消失,还会成为更受欢迎的主流机器学习语言。因此,说“Python 是未来大趋势”肯定是不对的。

但是,当我们聚焦于细分领域“深度学习”,数据就变得很不一样:

Python、R、Java、 C++ 等:从业界反馈看机器学习语言趋势

图4:深度学习领域各语言的雇主招聘指数对比

在深度学习市场,对 Python 的招聘需求仍然最高。但前五大语言的排序变成了Python,C++,Java,C,R。这里有很明显的对高性能计算语言的侧重。 而且,Java 的增长速度惊人,它可能很快成为深度学习市场的第二位。在可预期的将来,R 还不会成为最受欢迎的深度学习语言。令人惊讶的是 Lua 的存在感之低。要知道,开源框架巨头之一的 Torch 便是基于 Lua,许多开发者因此会认为它在深度学习市场占有特殊地位。

对于文章开头提出的问题——雇主需要掌握什么语言的开发者,答案已经很明确了:

  • 在机器学习和数据科学市场,Python, Java, 和 R 的招聘需求最大;

  • 在深度学习领域, Python, Java, C++ 以及 C 更被公司欢迎。

但雷锋网的读者们请注意,这只是私营公司的招聘需求。学界研究人员的偏好会有很大出入。另外,自学 AI 的业余爱好者、暂时没打算在这行谋生的,也不需要对这些数据太过在意。

至于文章原作者的个人观点(雷锋网再次提醒:请注意是“个人”观点,仅给大家做参考),他本人较倾向 Python。原因有二:1. 基于 Python 的顶级机器学习框架选择较多。2. 作者来自计算机专业背景,Python 的逻辑更适合。相比之下,R 语言就更适合统计学、数学背景的开发者。在 Python 之外,作者更倾向于使用 C++,这是因为他用 C++ 写代码写了半辈子,已经习惯了。其他人、新人可能更适合学习其他语言。比如说,写代码功底不深的统计学背景开发者通常用 R 语言更顺手。经验丰富的 Java 开发者可以接着用 Java,尤其有那么多开源 Java API 。

归纳起来,还是程序猿的个人学习、开发经历,以及知识背景影响了他的语言偏好。很少有人能够涉猎所有主流语言,即便只掌握几门语言,也未必在每一门上的开发经验都够深。因此,老司机对新入门开发者的语言推荐都带有强烈主观色彩。即使拿这篇以陈述数据为主的文章来说,也有它的主观局限:Matlab/Octave 和 Lisp,这两门重头语言并没有包括在内。这大约是由于作者并没有充分接触这三门语言。而 AI 大牛吴恩达对新手的建议就是选择 Octave 或者 Matlab 起步。

对于新入门、正犹豫选择哪门语言的技术宅,关键还是在投入大量时间之前多听、多看、多了解;比较不同人的观点,选择最适合自己的。雷锋网(公众号:雷锋网)与旗下 AI 科技评论频道常年更新针对新老开发者的技术文章,以及追踪 AI 界的重大新闻事件,感兴趣可关注公众号。

更多对机器学习编程语言的介绍请参考上期文章 入门必读 机器学习六大开发语言

via ibm developer


本文作者:三川


本文转自雷锋网禁止二次转载,原文链接

相关文章
|
12月前
|
jenkins Java Shell
Java、Python、C++支持jenkins和SonarQube(全集)
Jenkins 是一个开源的持续集成(CI)和持续交付(CD)工具,用于自动化构建、测试和部署软件项目。它基于 Java 开发,支持跨平台运行,并拥有丰富的插件生态系统,可以灵活地扩展功能
948 1
|
12月前
|
jenkins Shell 测试技术
|
12月前
|
jenkins Java 持续交付
Java、Python、C++支持Jenkins和SonarQube(三)
Python与Jenkins和SonarQube
548 1
|
12月前
|
jenkins Java 测试技术
|
12月前
|
安全 jenkins Java
Java、Python、C++支持jenkins和SonarQube(一)
Jenkins 是一个开源的 持续集成(CI)和持续交付(CD) 工具,用于自动化构建、测试和部署软件项目。它基于 Java 开发,支持跨平台运行,并拥有丰富的插件生态系统,可以灵活地扩展功能
626 5
|
JSON JavaScript 前端开发
Python+JAVA+PHP语言,苏宁商品详情API
调用苏宁商品详情API,可通过HTTP/HTTPS发送请求并解析响应数据,支持多种编程语言,如JavaScript、Java、PHP、C#、Ruby等。核心步骤包括构造请求URL、发送GET/POST请求及解析JSON/XML响应。不同语言示例展示了如何获取商品名称与价格等信息,实际使用时请参考苏宁开放平台最新文档以确保兼容性。
|
算法 Java 数据库连接
Java 与 C++ 区别深入剖析及应用实例详解
本文深入剖析了Java和C++两种编程语言的区别,从编译与执行机制、面向对象特性、数据类型与变量、内存管理、异常处理等方面进行对比,并结合游戏开发、企业级应用开发、操作系统与嵌入式开发等实际场景分析其特点。Java以跨平台性强、自动内存管理著称,适合企业级应用;C++则因高性能和对硬件的直接访问能力,在游戏引擎和嵌入式系统中占据优势。开发者可根据项目需求选择合适语言,提升开发效率与软件质量。附面试资料链接:[点此获取](https://pan.quark.cn/s/4459235fee85)。
1080 0
|
数据采集 自然语言处理 Java
Playwright 多语言一体化——Python/Java/.NET 全栈采集实战
本文以反面教材形式,剖析了在使用 Playwright 爬取懂车帝车友圈问答数据时常见的配置错误(如未设置代理、Cookie 和 User-Agent),并提供了 Python、Java 和 .NET 三种语言的修复代码示例。通过错误示例 → 问题剖析 → 修复过程 → 总结教训的完整流程,帮助读者掌握如何正确配置爬虫代理及其它必要参数,避免 IP 封禁和反爬检测,实现高效数据采集与分析。
947 3
Playwright 多语言一体化——Python/Java/.NET 全栈采集实战
|
数据采集 自然语言处理 JavaScript
Playwright多语言生态:跨Python/Java/.NET的统一采集方案
随着数据采集需求的增加,传统爬虫工具如Selenium、Jsoup等因语言割裂、JS渲染困难及代理兼容性差等问题,难以满足现代网站抓取需求。微软推出的Playwright框架,凭借多语言支持(Python/Java/.NET/Node.js)、统一API接口和优异的JS兼容性,解决了跨语言协作、动态页面解析和身份伪装等痛点。其性能优于Selenium与Puppeteer,在学术数据库(如Scopus)抓取中表现出色。行业应用广泛,涵盖高校科研、大型数据公司及AI初创团队,助力构建高效稳定的爬虫系统。
1012 2
Playwright多语言生态:跨Python/Java/.NET的统一采集方案
|
Java Android开发 C++
Java和C++
Java和C++
423 15

推荐镜像

更多