在开展数据分析项目或职业生涯规划时,应选哪一种编程语言?对此问题,不同职业背景的人给出的答案各不相同。让我们从数据角度来看看,人们在机器学习和数据科学方面所选的编程语言。
要想在机器学习或数据科学领域寻找一份工作,应该学习哪种编程语言?这是一个银弹问题,在许多论坛上引发了人们的热烈讨论。虽然我心中已有答案,也会解释其中的缘由,但是最好还是先来看一些数据。毕竟,机器学习和数据科学领域的工作者们研究的是数据,而非观点。 那么,我们先来看一些数据。我将使用 indeed.com 提供的趋势搜索工具。它可以查询到招聘信息中指定术语随着时间变化的出现频率,这能反映出雇主们正在寻求具备哪些技能的人才。但需要注意的是,它不是一份民意调查,不能说明哪些技能最为实用,而是衡量技术流行趋势的高级指标(更确切地讲,它可能更像是技术流行度的一阶导数,因为流行度就是入职时技能加上培训技能与退休和离职时技能的差额)。 话不多说,一起来看数据。我搜索与“机器学习”和“数据科学”连同使用的技能,其中的技能就是某种重要的编程语言,例如,Java、C、C++ 以及 Java。我还纳入了 Python 和 R 语言,众所周知,这两种语言在机器学习和数据科学领域非常流行,以及与 Spark相关的 Scala 和前景光明的 Julia。运行查询之后,我们得到了如下结果:
当我们针对机器学习进行搜索时,得到的数据十分类似:
从这些数据中可以看出什么? 首先,没有万金油。在此环境中,许多语言都非常受欢迎。 第二,所有这些语言的人气都在急剧上升,反映出过去几年人们对机器学习和数据科学的兴趣与日俱增。 第三,很显然,Python 位列榜首,紧随其后的是 Java,第三是 R,然后是 C++。Python 不断攀升的人气已经超过 Java,并且流行度还在,而 Java 与 R 之间的差距逐渐缩小。我必须承认,看到 Java 排在第二位我感到相当惊讶,因为我之前以为第二会是 R。 第四,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++ 进行编程,我也会使用这种语言开发新算法。但是这仅仅是我个人的观点,不同学科背景的人可能感觉另一种语言更适合。编程技能有限的统计学家无疑更喜欢 R 语言。实力强大的 Java 开发人员会继续使用自己喜欢的 Java,毕竟有大量的开源 Java API。同理,图中的其他语言也是如此。 因此,我的建议是去看看讨论同类问题的其他博客,然后投入大量时间学习一种语言吧。
本文作者:Jean-Francois Puget博士(JFP),是IBM机器学习CTO,他致力于机器学习和优化,拥有超过 25 年的计算机科学研究经验。目前,他正研究如何让机器学习为企业所用。4月11日晚上7:00,他将会在知乎参加知乎Live,跟大家解密机器学习的核心商业价值。阅读原文,立刻参加知乎Live,与JFP互动吧! |