文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

大数据开发语言怎么选?Scala还是Go

2024-12-03 16:49

关注

自从我参与DevOps和大数据以来,我一直在使用两种出色的但完全不同的编程语言:Go和Scala。

[[353823]]

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] 

 

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的文章。 

 

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是更好的选择。 

 

> 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往往更适合。

 

来源:今日头条内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯