大数据开发语言用Scala还是Go好

发布时间:2021-07-20 18:11:12 作者:chen
来源:亿速云 阅读:723

本篇内容介绍了“大数据开发语言用Scala还是Go好”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

Scala是一种较旧且更成熟的编程语言,已在并发编程和大数据处理等领域找到了自己的定位。 另一方面,Go是Google为克服C  ++的批评而创建的一种更新,更简单的语言。 设计考虑多核处理器的语言。

两者都是出色的语言,可以为并发应用程序和流处理实现出色的性能,但是它们的设计却大不相同。在本文中,我将尝试为您简要介绍这两种语言,它们的优缺点,并回顾一些实际的用词情况,在这些情况下,我们将推荐一种语言而不是另一种语言。

简而言之Scala

Scala是一种由学者创建的编程语言,它是在JVM上运行的Java的第一种替代方法。 它定义为:

Scala是一种现代的多范式编程语言,旨在以简洁,优雅且类型安全的方式表达常见的编程模式。[1]

Scala既面向功能又面向对象,提供了两全其美的优势。 它具有定义程序的灵活方式,并且由您决定如何描述它们:从纯函数式编程到纯面向对象的编程。

像Java一样,Scala是面向对象的:

从每个值都是对象的意义上讲,Scala是一种纯面向对象的语言。对象的类型和行为通过类和特征来描述。[1]

它还为功能编程和强大的静态类型系统提供支持。 与Java不同,Scala具有功能编程语言的许多功能,例如Scheme,Standard  ML和Haskell,包括currying,类型推断,不变性,惰性评估和模式匹配。  它还具有一个高级类型系统,该系统支持代数数据类型,协方差和对数,高阶类型(但不包括高阶类型)和匿名类型。

从每个功能都是一个值的意义上讲,Scala也是一种功能语言。  Scala提供了用于定义匿名函数的轻量级语法,它支持高阶函数,它允许嵌套函数,并支持currying。[1]

大数据开发语言用Scala还是Go好 

Java中不存在的Scala的其他功能包括运算符重载,可选参数,命名参数和原始字符串。  相反,Scala中没有的Java功能就是检查异常,事实证明这是有争议的。

在其他用例中,Scala在大数据中被大量使用。 诸如Twitter之类的公司转移到Scala,特别是因为更好的并发支持。  Scala功能强大,但很难学习,并且仍然存在与Java的兼容性问题。

Scala使用的两个关键驱动因素是基于用于并行编程的actor系统的Akka框架和用于大数据的Spark处理引擎。  由于其学术性质,与Akka或Spark以外的其他语言相比,Scala在实际单词中没有发现太多用法。 尽管它在金融机构中大量使用。

Scala 的优点

Scala 的缺点

用例

简而言之

Go是另一种野兽。与Scala相比,它不那么优雅,功能强大或简洁,但它是为特定目的而构建的,并且做得非常好。

Go由Google创建,并且在语法上与C类似。它的目标是通过添加内存安全性,垃圾回收,结构化类型来克服C  ++中存在的不安全操作。它非常容易学习和使用。它是为多核计算机而构建的,以最大程度地提高并发程序的并行性。它使用称为Go  Routines的非常轻量级的绿色线程进行并发编程。

Go可以快速编译为机器代码,但具有垃圾回收的便利性和运行时反射的功能。这是一种快速的,静态类型的编译语言,感觉就像是一种动态类型的解释语言。[2]

Go很小,但是它涵盖了许多用例,例如微服务,流处理,CLI等。 Golang为在不同平台上生成二进制文件提供了出色的支持,而无需在目标上安装Go。  由于二进制文件小而有效,因此非常适合使用Containers打包的云本机应用程序。  您的应用程序容器可以打包到一个很小的容器(〜5–10MB)中,只需几秒钟即可部署,这使其成为比JVM语言更好的微服务选择。  有关更多信息,请查看我有关在Kubernetes中部署Go Microservices的文章。

大数据开发语言用Scala还是Go好 

Go 的优点

Go 的缺点

用例

Scala vs Go

Scala 编程语言是强类型,具有垃圾回收器,它们安全,高度并发,并且每秒可以处理数百万条记录。

对于流处理,Go更易于使用,但依赖于发布/订阅系统(例如Kafka)和NoSQL数据库(例如Cassandra)。  Akka本身就是一头野兽,可以自己管理大量请求而没有任何依赖关系,它还提供了更多这样的背压。

对于Web应用程序,Play框架更适合有状态的Web应用程序或寿命长的应用程序,在这些应用程序中,JVM有足够的时间来优化应用程序。  Scala非常适合迷你服务或整体应用。 如果您需要与Akka集成,这也是一个不错的选择。 另一方面,GO更适合微服务,云本机应用程序和无服务器功能。  对于云中的无状态API,我会使用GO,因为它更便宜,更容易。

Go提供了强大的支持gRPC为内部微服务提供了绝佳的选择,这些微服务可以以流的方式快速使用。

对于大数据,Scala或Python是最佳选择。 GO在大数据世界中仍处于起步阶段。

通常,Go的运行和租赁成本较低。 因此,如果成本是一个问题,请研究GO。 另一方面,Scala开发人员往往是非常好的工程师,这也为组织带来了价值。

随着应用程序的增长,GO源代码将变得越来越难以维护,因此我不建议将其作为整体使用,对于更稳定,规模更大的项目,Scala是更好的选择,尤其是对于更传统的企业。

性能

这是一个棘手的问题,如果您在Google vs GO的性能方面会找到几篇文章,并且根据测试结果会有所不同。  刚开始,GO似乎在简单的用例上表现更好,但在实际情况下,Scala以及特别是Play Framework确实赶上了JIT  JVM优化,该优化在运行时会调整字节码添加优化。

对于微服务,无状态应用程序和容器化应用程序,GO将更快,更轻量,这是一个巨大的优势。 通常,如果成本对您来说很重要,那么GO将占上风。  对于复杂的应用程序,整体式状态处理,Scala是更好的选择。

大数据开发语言用Scala还是Go好 

> GO vs Play REST Get Performance, source:  https://medium.com/ymedialabs-innovation/rest-api-performance-comparison-between-golang-and-play-991a8f4040de

对于流处理,这是相同的故事。 Akka功能强大且优雅,具有庞大的生态系统并具有更多功能,但使用,开发和优化都很复杂。  如果您有一支由Akka开发人员组成的优秀团队,他们可以编写一个单例文件,比GO更快地处理事件。 但是,GO扩展非常简单。

推荐建议

如果您是开发人员…

简而言之,GO既有趣又酷,易于学习且简单。在3个月内,您可以编写可用于实际用途的生产就绪应用程序。Scala既有趣,复杂又具有挑战性,但回报颇丰,它的薪酬很高,而且声望更高,特别是在大数据世界中。

如果您是技术主管…

总而言之,GO是一种消耗很少且易于采用的二进制语言,对于您的工具带来说它是一个不错的工具,但是我不会将它用作大型组织的唯一编程语言,因为它不那么通用和其他语言一样。Scala更加困难,但是如果您已经在使用Java,那么这是一个很好的下一步。

如果您是经理…

总而言之,GO的运行和雇用人才便宜。 它易于使用,可以在广泛的用例中采用。 当您仍然是核心应用程序的另一种语言时,它也可以用作补充语言。  Scala非常适合大型项目和大数据。 如果您在JVM上投入了大量资金,则Scala是常见的下一步。

结论

在过去的几年中,我一直在使用Go和Scala,两者都有其优点和缺点。作为开发人员,我喜欢在Scala中解决问题,它非常优雅,简洁,强大。和使用的喜悦;但是在现实世界中,我倾向于更频繁地使用GO,因为我可以更快,更便宜地完成工作。当您在需要赚钱的公司工作时,这就是这种方式。由于快速的编译时间和部署时间以及极低的资源使用率,GO是用于云原生应用程序的最具成本效益的语言。尽管如此,对于大数据和高度并发的关键系统来说,Scala是最佳选择,它也比GO更成熟。对于更大,更传统的企业,Scala往往更适合。

“大数据开发语言用Scala还是Go好”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

推荐阅读:
  1. 好程序员大数据教程Scala系列之类
  2. 好程序员大数据教程Scala系列之高阶函数

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

scala go

上一篇:Linux中如何创建用户和组

下一篇:怎么修改gazebo物理参数

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》