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 )关注我们。
评论