Google数据大牛:R,Python,Java,Scala谁更好用?(优秀译文)

注:本译文,原文出自medium。
数据科学,一个想想就令人激动的领域,通过不一样的智慧将最优美的统计知识与编程能力结合起来,一个1+1>2 的领域,并且今年来所有的发展都预示着数据科学的辉煌之日已经来临,不管是大数据,人工智能,深度学习还是数据分析,都离不开数据科学。数据科学广泛的应用于各个领域,所有的编程语言也都在接纳数据科学,那么最好的数据科学是什么呢?
虽然没有绝对的答案,但是有几件事需要考虑,毕竟成为一名数据科学家取决于很多的方面:
1.适用性
在我们谈到的数据科学中,如果你想要走的更远,每次都造新的轮子显然是走不通的。学习掌握所选语言中提供的各种软件包和工具是很有必要的,而一款适用性广,拥有很多包的语言会是一个不错的选择。
2.速度
在通常快节奏的商业数据科学领域,迅速的完成一项工作是很有必要的,因此,对于技术的速度就在考虑之内了,不仅仅是指运行的速度,还有学习的速度。
3.性能
在某种情况下,优化代码的性能非常的重要,特别是在出来大量关键任务数据的时候,编译语言通常比解释语言快的多,同样,静态语言比动态语言出问题的概率也要打的多,一次平衡好速度和性能之间的关系很重要。
下面会介绍目前被广泛应用的语言,r,python,java,scala,我们会在考虑核心原则的同事,结合自己,同事和朋友的经验和研究,对每一种语言进行合理详细的分析。
r
r是统计领域广泛使用的诞生于1980年左右的s语言的一个分支。可以认为r是s语言的一种实现。而s语言是由at&t贝尔实验室开发的一种用来进行数据探索、统计分析和作图的解释型语言。
优点
1.优秀的高质量、特定领域的,并且开源的软件开发包。r语言有一个包括神经网络、非线性回归模型、系统、绘图和几乎所有数量和统计应用功能的开发包。
2. r语言的基础安装版就具有非常全面的、内置的统计功能和方法,同时r语言特别擅长处理矩阵代数。
3.r语言拥有优秀的数据可视化功能。
缺点
1.r语言不是一种快速语言,并且没有很好的通用性,虽然对于统计和数据科学而言r语言是一个很好的选择,但是对于通用编程而言,这样的语言并不友好。
2.r语言的一些不寻常的特点和大多数的语言相比显得有些古怪,譬如:从1开始索引,使用多个赋值操作符,非常规的数据结构。
总结
r是一种功能强大的语言,它擅长统计和数据可视化应用程序的大量应用,而开源则允许非常活跃的贡献者社区。最近人气的增长证明了它的有效性。
python
guido van 1991年将python带给我们,它后来成为一种非常流行的通用语言,在数据科学界得到了广泛的应用。目前主要版本为3.6和2.7。
优点
1. python是一种非常流行的主流通用编程语言。它有广泛的目标模块和社区支持。许多在线服务提供了一个python api。
2.python是一门容易学的语言。低进入门槛使它成为新编程者理想的第一语言。
3.pandas, scikit-learn and tensorflow的第三包的存在使的python为先进的机器学习应用提供了很好的应用支持。
缺点
1. python是一种动态类型语言,这意味着类型错误经常是不可预料的。
2.对于特定的统计和数据分析目的,r的大量包使它比python更具优势。对于通用语言,更快更安全的python稍有优势。
总结
python是数据科学的一个很好的选择,而不仅仅是入门级的。大部分的数据科学过程围绕着etl过程(提取转换加载)。另外python的通用性非常好,譬如:google的tensorflow使python在机器学习领域成为了一个非常激动人心的语言。
java
java是一个非常受欢迎的通用语言,可以在平台之间实现无缝移植。目前由甲骨文公司支持。
优点
1. 无处不在。许多现代的系统和应用程序是建立在java后台之上。
2.强类型。java确保类型安全,这对于关键任务的大数据应用程序来说是非常宝贵的。
3.java是一种高性能,通用的语言 。这使得它适合于编写高效的etl生产代码和计算密集型的机器学习算法。
缺点
1. 对于特殊的分析和更专门的统计方案而言,java的冗长使得它不太可能首选。动态类型的脚本语言(如r和python)可以获得更高的生产率。
2.java相比于专精于数据领域的语言而言,没有大量的统计方法库。
总结
学习java作为第一选择的数据科学语言。许多公司都会希望=数据科学的生产代码能够直接集成到他们现有的代码库上,另外,你会发现java的性能和类型安全是真正的优势。但是,如果把需求特定于统计和数据科学范围。那么,拥有全面统计和数据科学包的python和r绝对是不能忽视的选择。
scala
scala由martin odersky在2004发布,是一种能够运行在jvm上的语言。它是一种多范型语言,支持面向对象和函数式编程。
优点
1. 高性能集群计算。对于那些使用高容量数据集的人来说,scala是一种理想的语言选择。
2.scala能够编译成java字节码运行在jvm上。这使的scala成为了一种强大的通用语言,同时也非常适合数据科学。
缺点
1. 如果你刚开始的话,scala并不是一种可以直接启动和运行的语言。
2.语法和类型系统通常被描述的过为复杂,对于学习python这样的动态语言的人来说不是一种容易学习的语言。
总结
当使用集群计算来处理大数据时,scala + spark是极好的解决方案。如果你有java和其他静态类型语言的经验,你会喜欢上scala的功能。然而,如果您的应用程序没有那么多的数据需要处理时,您可能会发现使用其他语言(如r或python)会是一个更好的选择。
以上就是这些语言的分析,我经常使用的是r,python和sql,这是因为我的工作集中在开发数据管道和etl,并不是这是绝对的选择,根据自己的情况,如果你已经有了java的学习经验,那么使用scala触摸大数据是一个不错的选择。
感谢阅读!