写点什么

机器学习最流行的语言是哪门?

2017 年 4 月 11 日

Jean-Fran?ois Puget 博士居住在法国 Saint Raphael,是 IBM 的杰出工程师,从事机器学习和优化。

Jean-Fran?ois Puget 博士写了一篇《机器学习最流行的语言是哪门?》文章,经作者授权,InfoQ 翻译并分享。以下是正文。

应该掌握哪门编程语言,才能获得机器学习或数据科学的工作机会呢?这是一个银弹的问题。许多论坛都在辩论这个问题。我会在本文中提供自己的答案,并解释原因,但是我们要先来查看一些数据。毕竟,机器学习和数据科学的从业者应该记住这一点:没有调查就没有发言权。

现在,让我们来看一些数据。我们用indeed.com 网站提供的趋势搜索来提取统计数据。这些数据是从招聘信息中搜索出特定工作岗位随时间变化的出现频率,表明了雇主正在寻求哪些掌握什么技能的人才。但请注意,这并不是对哪些技能最有用的民间调查,而是体现了岗位技能流行度如何演变的一种趋势(更确切地说,它可能接近岗位技能流行度的一阶导数,因为后者是招聘信息所列技能加上就业再培训技能减去退休和离职技能的结果。)

好了,让我们看数据吧。我搜索了与“机器学习”和“数据科学”结合使用的技能,其中比较显眼的编程语言是 Java、C、C++ 和 JavaScript。我还加上了就像 Scala 之于 Spark 那样的机器学习和数据科学的流行语言 Python 和 R——以及被认为是下一代热门语言的 Julia。经查询之后,我们得到结果如下图。

当我们只关注机器学习时,得到类似的数据如下图。

我们可以从这些数据中得出什么结论呢?

首先,我们可以从图表中看出,众口难调。在这种情况下,许多语言都相当受欢迎。

其次,所有这些语言的人气都在暴涨,这表明了人们在过去几年里对机器学习和数据科学的兴趣正在增加。

第三,Python 明显领先,紧随其后的依次是 Java、R、C++。Python 超越 Java 并逐渐拉开差距,与此同时,Java 与 R 之间的差距逐渐减小。我必须承认,我看到 Java 位居第二其实很惊讶,我本来以为 R 是第二位呢。

第四,Scala 的增长令人印象深刻。三年前几乎没有人使用Scala,而现在却能与其他成熟语言同场竞技了。

我们在indeed.com 从趋势示意图切换到实际数据视图时,会发现这点尤为明显。

第五,Julia 的人气比较差,但最近几个月肯定有所增长。Julia 会成为机器学习和数据科学的流行语言之一吗?这得由时间来做出回答。

如果我们隐藏 Scala 和 Julia,以便放大其他语言增长的视图,那么可以确定的是,Python 和 R 的增长速度超过了其他语言。

从这条曲线来看,也许 R 的流行度将会很快超过 Java。当我们换成“深度学习”来进行查询时,得到的数据就大为不同。

在这个查询中,Python 依旧领先,但紧随其后的依次是 C++、Java、C。R 只排在第五名。这里显然强调这些是高性能计算语言。作为一个通用的机器学习语言,Java 很快能占据第二的位置,R 语言在短时间内不会登顶。令我惊讶的是作为深度学习框架Torch 的主要语言,Lua 竟然不在榜上,并且Julia 也缺席。

最初那个问题的答案现在应该很清楚了吧?在机器学习和数据科学的工作中,Python、Java 和 R 是最流行的语言。如果你的精力集中在深度学习而非一般的机器学习,那么应该多学习 C++,其次 C 也是需要关注和学习的。然而要记住,这只是看问题的一个途径。如果你想寻找学术界的工作,或者只是想在业余时间学习机器学习和数据科学,那么你可能会得到不同的答案。

至于我个人的答案,我今年早些时候在博客上做出了回答。除了能够支持许多主流机器学习框架,Python 对我而言很适合,只是因为我有计算机科学背景而已。我也喜欢使用 C++ 开发新的算法,因为我的大部分职业生涯中都用 C++ 编程。但这只是我个人情况,不同专业背景的人可能会觉得另一门语言更好些。编程技能有限的统计学家会更青睐 R。有实力的 Java 开发者可以继续使用他钟爱的 Java,因为 Java 有数量可观的开源 Java API。同理,其他语言也如此。

因此,我的建议是阅读讨论同一个问题的其他博客,然后投入大量的时间去学习一门语言。

原文作者: Jean-Fran?ois Puget

原文链接: The Most Popular Language For Machine Learning Is …

2016 年 12 月 23 日更新,本文已在 HackerNews 上讨论。

2017 年 1 月 11 日更新,本文由 KDnuggets 转载。

2017 年 2 月 12 日更新,本文由 Silicon Republic 转载。

2017 年 2 月 15 日更新,法文版发布,译者为 Francisco Martínez Carre?o。


感谢魏星对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2017 年 4 月 11 日 17:586174
用户头像

发布了 325 篇内容, 共 120.5 次阅读, 收获喜欢 802 次。

关注

评论

发布
暂无评论
发现更多内容

SpringBoot+Tess4j实现牛逼的OCR识别工具

小隐乐乐

程序的机器级表示-控制

引花眠

计算机基础

Ray 分布式计算框架详解

lipi

分布式 数据湖 pandas Apache Arrow

Flink-有状态算子的扩缩容-12

小知识点

scala 大数据 flink

算法导论

华宇法律科技

算法

【持续更新~】常遗忘却可以变更好的心态

CoderJ

个人成长

LeetCode 5. Longest Palindromic Substring

liu_liu

算法 LeetCode

Go: ElasticSearch客户端学习

陈思敏捷

go golang elasticsearch elastic go-elasticsearch

巧用HashMap一行代码统计单词出现次数

程序那些事

jdk hashmap 统计字数

二叉树深度和大文件排序

escray

学习 面试 面试题 面试现场

打通微信和钉钉服务是一种怎样的体验?

Ceelog

go 微信 钉钉 微信公众号

更新丢失、写偏、幻读:数据库事务从快照隔离到可序列化

青菜年糕汤

数据库 数据库事务 分布式数据库 数据库设计 分布式系统

架构师训练营第十二周作业

张明森

基于Apache Doris的小米增长分析平台实践

DorisDB

数据分析 用户增长 apache doris 分析型数据库 用户行为分析

Python作业留底--《菜鸟教程》Python 练习和习题

Geek_f6bfca

比特币挖矿到底挖的是什么?

CECBC区块链专委会

比特币 区块链 数字货币

央行数字货币钱包上线后又秒关 兑换了的 DCEP 别担心

CECBC区块链专委会

数字货币 央行

什么是分散式金融(DeFi)?

志学Python

去中心化金融 defi

Android | dagger细枝篇

哈利迪

android

图解Node(上)——直击灵魂的十条拷问

执鸢者

前端 原理 Node

你真的懂 Java 的 main 方法吗

Rayjun

Java

ARTS Week14

时之虫

ARTS 打卡计划

小小的分页引发的加班血案

架构师修行之路

架构

oeasy教您玩转linux010108到底哪个which

o

JVM的早期优化与晚期优化

Edison

JVM JVM虚拟机原理

架构师第十二周学习总结

傻傻的帅

搬家,又一次和过往告别

王磊

程序人生

架构师第十二周作业

傻傻的帅

基于区块链的社会治理探索

CECBC区块链专委会

区块链 大数据 信息技术

ARTS打卡 第14周

引花眠

微服务 ARTS 打卡计划

ARTS Week9

丽子

ARTS 打卡计划

InfoQ 极客传媒开发者生态共创计划线上发布会

InfoQ 极客传媒开发者生态共创计划线上发布会

机器学习最流行的语言是哪门?-InfoQ