一份语言选择指南带你玩数据科学,选出你心中支持的语言-阿里云开发者社区

开发者社区> 开发与运维> 正文

一份语言选择指南带你玩数据科学,选出你心中支持的语言

简介: 数据科学是一个热门的领域,本文介绍数据科学家目前使用的一些热门编程语言,主要是从通用性、性能等方面分析,想入门的或行业研究者可以参考并发表一下自己的观点哦。

更多深度文章,请关注:https://yq.aliyun.com/cloud

ef1442b57c5bbb99f0210d176241ca27996af3af

随着大数据时代的到来,网络每天会产生大量的数据,一些行业会对这些数据进行分析并协助企业不断地发展新业务、创建运营模式等,比如电子商务、推荐系统等。那么谁对这些大数据进行分析呢?对应的工作领域是数据科学Data Science),该领域需要结合先进的统计知识、定量分析能力和编程能力。涉及到编程,大家都会面临一个问题,有太多的编程语言可供选择,那么哪些编程语言适合数据科学领域呢?虽然没有正确答案,但想成为一名成功数据科学家将考虑以下几点

特异

当涉及到先进的数据科学时,你将不仅仅是老瓶装新酒了,需要学习掌握你选择的编程语言提供的特定领域的各种软件包和模块。

一般

顶尖数据科学家将具有全面良好的编程技巧以及处理大量数据的能力。科学数据的日常工作多是围绕原始数据进行一些处理或数据清洗。

效率

快节奏的商业数据科学世界里,一般要尽快完成这项工作同时,这也使得技术债务蔓延——只有明智的做法可以最小化

性能

在某些情况下,优化代码的性能显得至关重要,尤其是在处理大量的关键任务数据。编译语言通常比解释语言快得多;同样,静态类型语言比动态类型的故障要多得多显而易见,权衡这些会下降生产力。在某种程度上,这被看作是一个双刃剑(一般性-特异性,性能-效率)。每一种语言都会面临这个问题考虑到这些核心原则,让我们看一下数据科学中使用的一些较流行的编程语言。以下是结合自己的个人经验和研究,仅供参考

R

需要知道2cd2cfdea434c4379eab9d86c615172cd61ba856

R语言诞生于1980年左右的S语言的一个分支,目前该项目是R语言统计计算基金会支持

许可证

免费

赞成的理由

  • 开放源码软件包R语言有一个几乎涵盖所有的定量和统计应用程序的数据包,包括神经网络、非线性回归模型等;
  • 基础设施是非常全面的内置一些统计功能和方法处理矩阵代数效果好
  • 数据可视化的能力很强,比如ggplot2

反对的理由

  • 性能方面R语言不是一个快速的语言
  • 领域特殊性R语言对于统计和数据科学是很好的,不适合通用程序设计;
  • 孤僻,R语言有一些不同于其他编程语言的特点例如:索引1开始等;

裁决—— “为它的设计而精彩”

R语言是一个功能强大的语言,擅长各种统计和数据可视化应用并开放源代码。

Python

a26627f33f4b19736673936e1413b174e9d21c80

需要知道

它由Guido van Rossum1991年发明,已经成为一个非常流行的通用语言,并在数据科学界广泛使用的。目前主要版本是目前3.62.7

许可证

免费

赞成的理由

  • Python是一个受欢迎的主流通用程序设计语言它有广泛的目标模块和社区支持及一些 API
  • Python是一种易学的语言
  • 一些软件包如pandas、scikit-learn、tensorflow使得Python成为机器学习应用的不二选择;

反对的理由

  • 类型安全性:Python是动态类型语言,类型错误是预料的;
  • 对于具体的数据统计和分析的目的,有更快和更安全的通用语言替代Python

裁决——“优秀的全才”

Python语言对数据科学而言是一个很好的选择。很多数据科学过程围绕ETL过程(提取、转换和加载)这使得Python的通用性非常适合。还有一些库比如tensorflow使Python在机器学习领域表现优异

SQL

0f0018cd704b137188e3d93191b4b5ab645cc7ce

需要知道

SQL结构性查询查询语言)定义、管理和查询关系数据库1974以来发生了许多的改变,但核心原则保持不变。

许可证

不同—— 某些是免费的,其他是收费的!

赞成的理由

  • 查询、更新和操纵数据库非常高效;
  • 声明性语法使得SQL语言非常,而且没有什么歧义
  • SQL具有非常广的应用范围,使其成为一个非常熟悉的有用语言

反对理由

  • SQL的分析能力是相当有限的——除了汇总计数和平均数据等操作外,你的选择是有限的
  • 对于来自命令式背景的程序员,SQL的声明性语法会呈现出一个学习遗忘曲线
  • 实现SQL有许多不同工具比如PostgreSQLSQLite等,操作起来难免会“头疼”;

裁决——“长期且高效”

SQL是有用的作为一个数据处理语言不是作为一种先进的分析工具。然而,大多数据科学过程依赖于ETL,SQL的长寿和效率证明了它对于现代数据科学家来说是一种非常有用的语言。

Java

f1b76d30b8f34ee06ade858111d3809ca9fb0a1b

需要知道

Java是一个非常受欢迎的通用语言运行在Java虚拟机(JVM)上,目前甲骨文公司支持。

许可证

8版——免费!旧版本是收费的

赞成的理由

  • 无处不在许多现代的系统和应用程序是建立在一个java后端;
  • 强类型Java语言确保类型安全
  • Java是一种高性能、通用的汇编语言,这使得它适合于编写高效的ETL生产代码和计算密集型机器学习算法;

反对理由

  • 对于特定的分析和更专门的统计程序而言Java冗长使得它不太可能成为首
  • 相比于特定领域语言R语言,没有大量的可供Java高级统计方法库

裁决——“数据科学的有力竞争者”

如果将Java作为第一选择的数据科学语言而言,你会发现Java的性能和类型安全优势。然而,你没有考虑用于其他语言比如R或Python范围具体软件包。

Scala

158a07d0bcf5dbfedb5d1b2c93b246ee522c9806

需要知道

由Martin Odersky2004年开发和发布,Scala运行在JVM的一种语言它是一个多范式语言,支持面向对象和函数方法。集群计算框架Apache Spark是用Scala写的。

许可证

免费

赞成的理由

  • ScalaSpark结合相当于高性能集群计算,对于使用高容量数据集的研究者来说,Scala是一种理想的选择;
  • 多范式:Scala程序员可以两全其美,因为Scala提供面向对象和函数式编程范式
  • Scala编译成Java字节码并运行在JVM上,使得它成为一个非常强大的通用型语言;

反对理由

  • Scala的建立和运行需要依赖于一些特定的集成开发环境,比如Eclipse、IntelliJ;
  • 语法和类型系统描述复杂。这使得那些学过动态语言如Python学者来说较困难;

裁决——“适合于大数据”

当它涉及到使用集群计算处理大数据,那么Scala结合Spark是极好的解决方案然而,如果你的应用程序不处理数据,Scala只会增加复杂度。

Julia

9ca9d0402beb9a04a85c4aa03666b59b69f86064

需要知道

Julia发布于5年前,在数值计算领域留下了深刻的印象几个主要的组织早期采用它带动了它的发展

许可证

免费

赞成的理由

  • Julia是一个JIT(即时)编译语言,这让它提供了良好的性能它还提供了Python这样的简单、动态类型和脚本功能
  • Julia专门设计用于数值分析,也能够进行通用编程

可读性

反对理由

  • 不成熟,作为一个新的语言,Julia的用户者使用一些数据包时会不稳定,但核心语言本身稳定;
  • 有限的软件包,小的社区发展;

裁决——“明日之星”

Julia作为一种新兴的语言,它不Python和R语言那样成熟,如果你愿意耐心,可以关注在未来几年的发展。

MATLAB

a6611059934bf1c79cd0f34240439204311927b5

需要知道

MATLAB是一个学术界和工业界应用的数值计算语言由MathWorks公司于1984开发并投入市场

许可证

专有——定价取决于你的使用情况

赞成的理由

  • 数值计算而设计。MATLAB非常适合复杂的数学要求,如信号处理、傅里叶变换图像处理等;
  • 数据可视化MATLAB有一些强大的内置绘图功能
  • MATLAB经常作为工程数学与应用数学本科课程的一部分,因此,MATLAB在这些领域得到广泛应用

反对理由

  • 专利许可证根据使用情况(学术、个人或企业)可能要付昂贵的许可证,也有免费的替代品如Octave
  • MATLAB不是通用编程的一个选择;

裁决——“最好用的数学密集型应用程序”

MATLAB在工业界和学术界广泛应用于定量和数值计算领域,使它成为数据科学一个重要选择你的应用程序或日常的应用需要密集、高级的数学功能时,MATLAB是你的不二选择

其他语言

还有其他的主流语言,数据科学家对这些可能感兴趣,下面让我们快速的概述

C++

72636afad5cb653dc28dafd8e7d42f63ec5f2741

C++不是数据科学的共同选择,原因很简单,可能是一个生产力与效率的问题。

正如一个Quora用户提出

“如果你写的代码做一些是为了特定的分析可能只运行这么一次,你愿意花30分钟写一个程序,运行10秒,或10分钟写一个程序,运行1分钟吗?

这虽然有点道理,但是对于重要的生产级性能,C++是实现低级别优化的机器学习算法的极佳选择。

裁决——“不适合日常工作,但适合性能关键时的应用”

JavaScript

c014a22a43327146fc14dba0e9e8a8dcaa982d27

随着Node.js近年来的提升JavaScript已经成为一个越来越重要的服务器端语言。然而,它在数据科学和机器学习领域的使用却受到了限制,以下是其几个缺点

  • 起步得晚(Node.js只有8岁!)
  • 很少有一些相关的科学数据库和模块可用这意味着没有真正主流的兴趣或动力
  • 性能虽好,JavaScript也得到许多批评

Node的强项是在异步I/O,广泛使用编译JavaScript语言可以想象下这对数据科学和实时ETL处理结合是多么的方便,但关键问题是这是否会与已经存在的东西有所不同

裁决——“JavaScript可以被视为一个重要的数据科学语言还有许多工作要做

Perl

cb8f7b736fbdbda3b2225e103d63b960d8c0577c

Perl被称为“瑞士军刀的编程语言,由于作为一个通用脚本语言的通用性它与Python有很多相似之处。但还没有Python在数据科学领域那样流行

考虑它在生物信息学等定量领域中的应用,有点出人意料。当涉及到数据科学时,Perl有几个主要缺点:表现不是太优异、语法不友好,在开发数据科学专用库方面没有强的动力。在任何领域,动力都是关键。

裁决——“有用的通用脚本语言,但它没有为的数据科学的简历提供真正的优势

Ruby

3941c2dd8a0fca52808aa0c6f14b5e3edb5153c1

Ruby是一个通用的动态类型的解释型语言。然而,它没有像Python那样在数据科学上被广泛采用。

这似乎很奇怪,但这很有可能是由于Python在学术界的主导地位,以及正反馈效应,使用Python的人越多导致更多的模块和框架开发,同时会带来更多的人转向Python。虽然Sciruby项目带来的科学计算功能,如矩阵代数但随着时间的推移,Python仍将引领潮流

裁决——“对于数据科学而言,目前不是显而易见的选择,但不会伤害的简历

结论

通过以上内容,现在你有了一个关于考虑数据科学的语言的指南。关键是要一般性和特异性理解你的使用需求,以及个人针对性能和生产力而言谁优先的开发风格。

针对以上的内容,或许你有一个完全不同的建议如果是这样的话,请在下面留言 回复我期待听到你的回音

感谢你的阅读!

 

作者信息

Peter Glesson:数据科学、统计和编程方面的作家

个人主页:https://medium.freecodecamp.org/@petergleeson1

Linkedin:https://www.linkedin.com/in/peter-gleeson-874238140

本文由北邮@爱可可-爱生活老师推荐,阿里云云栖社区组织翻译。

文章原标题《Which Languages Should You Learn For Data Science?》,作者:Peter Glesson,译者:海棠,审阅

文章为简译,更为详细的内容,请查看原文

 

 

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章