知乎有一个问答:如果对方是一个 Scala 爱好者,有什么办法说服他使用 Go?
有朋友表示,你不被他说服用 Scala 就很不错了。
也有不少朋友十分有原则:请打钱,谢谢,双倍工资也可以,不挑。反正只要钱到位,你让我写汇编都行。
还有一位 PHP/C 程序员趁机发问,假设你是 Go 的爱好者,我该如何说服你用 PHP?另一位回:杀了我吧,宁死不屈。
直钩钓鱼,又是一场语言之战,但从这个问题底下的回答来看,Scala 爱好者的心并不是那么容易动摇。
但在比较 Scala 与 Go 时,国外的垂直化产品推荐社区 Slant 却为大多数人推荐 Go。
在“首先学习的最佳编程语言是什么?”这一问题中, Go 排名第 13,Scala 排名第 17。在“什么是最好的服务器端编程语言”和“后端开发人员学习的最佳编程语言是什么?”以及“并发编程的最佳语言是什么”等问题中,Go 的排名都高于 Scala。
程序员们还分别就 Scala 和 Go 的优缺点展开了小范围的讨论,从支持者的气势来看,Go 语言无疑是赢家——关于 Scala 的评论数量远小于 Go 语言。
一些 Scala 的拥护者表示——
Go 语言的优势也很明显——简单,快速,有爸爸。
瞧瞧这世道,不仅人要拼爹,语言也得拼爹。
如果是你来做选择,你会选择选 Scala 还是 Go?
这是一道很现实的问题。国内用 Scala 写后端的公司并不多,大部分都是用来做数据开发,如果你想找一个不做 Spark 的 Scala 工作,还真挺难……
究其原因,可能有以下几点:Scala 为新开发人员带来了较为陡峭的学习曲线,那么团队新血液的加入注定是一份不小的花销,所以一般的公司还真有点拿不下Scala。设想一下,假如Scala项目的核心人员离职了……Scala还有一些难点,比如 SBT、IDE 环境、构建缓慢、JAR 文件较大,等等。
这些问题也是令 Scala 采用先驱之一的 Twitter 头痛的原因,Raffi Krikorian曾任 Twitter 平台工程副总裁,他负责 Twitter 的后端基础架构,也是负责在推特上引入 Scala 的人之一。当他被问到如果必须再次选择是否还会选择 Scala 的问题时,他的答案是,不确定。
因为 Scala 的诸多痛点,曾把 Scala 当成技术栈重要组成部分的网络安全服务提供商 CrowdStrike,在工程师团队由早期的 5 人扩大到 200 多人的时候,决定迁移到 Go 语言技术栈。在引入 Go 之后,他们发现,原来 Scala 可能会遇到的问题,比如构建速度、SBT 等,对 Go 语言来说,都不是问题。Code Base 好维护了,代码容易看懂了,新人可以快速上岗了,工程师可以跨项目交流了。CrowdStrike 的云工程高级总监 Jim Plush 不由感叹,如果是小团队,使用 Scala 会非常高效,但当团队规模扩大到 50 人以上,你就会面临很大的挑战。
2017 年,Vista Group International Ltd 旗下的电影行业营销数据分析和活动管理解决方案公司 Movio 曾发布一篇文章,Making The Move From Scala To Go, And Why We’re Not Going Back,用中文说就是从 Scala 迁移到 Go,永不回头。这篇文章发布后受到了很多关注,一些读者认为这是对 Scala 的 diss。面对诸多质疑,Movio 解释了他们从 Scala 迁移到 Go 的原因,列举了 Scala 的部分问题和 Go 的优点,并表示,虽然他们选择从 Scala 迁移到 Go,并逐步将 Scala 代码库的一部分重写为 Go,但 Scala 仍然是 Movio 的一些小队的主要语言,也就是说,在 Movio ,Scala 和 Go 共存。
文章的最后有一句话,技术栈需要根据自身情况去选择,所以他们选择了 Go。确实如此,虽然语言爱好者会为自己使用的语言进行辩护,但其实大家都知道,每一种语言都有自己的适用场景,想用一种语言干完所有的事情绝无可能。所以现在公司很多都是多语言公司,他们会把对的语言用在对的产品上,就像 Go 语言适合做网络并发的服务,那它就会被用于推送监控等项目,而 Scala 适合大型工程项目,写起来很爽,可以替代 Java 做应用级开发。
编程语言是程序员的第一工具,启动一个新项目,少不了编程语言的选型问题。QCon 上海 2019 设置“编程语言”专题,和你从冷门但有趣的Pony、不那么主流但实用的Scala、JavaScript 的新特性,聊到老而弥坚的Java、冉冉升起的新星Go,你会发现自己从来没有真正认识过SQL,还将知道为何使用 .NET 的公司很少 996,点此了解详情。
领取专属 10元无门槛券
私享最新 技术干货