写点什么

当开创性特性已经普及,Scala 未来将走向何方?

  • 2025-04-18
    北京
  • 本文字数:1161 字

    阅读完需:约 4 分钟

当开创性特性已经普及,Scala 未来将走向何方?

本文最初发布于 DEV CLASS。


Scala 的创建者 Martin Odersky 以及关键库的作者与维护者李浩毅描述了他们对 Scala 语言未来的规划,并希望 Scala 能在现代编程领域保有一席之地。


该开源语言于 2003 年首次发布,其最大特点是融合了函数式编程和面向对象编程。Scala 主要是编译成 Java 字节码,不过也可以使用 Scala.js 编译成 JavaScript 。流行的事件流平台 Apache Kafka 主要就是用 Scala 编写的,Scala 还是 Apache Spark 的核心语言,用于数据分析和机器学习。


李浩毅是 Databricks(一家广泛使用 Scala 的分析公司,由 Apache Spark 的初创者创建) 的软件工程师。


根据 Odersky 和李浩毅的观点,Scala “不再像 2010 年代中期那样风头正劲”,但在主流语言之外还是保有一席之地。尽管如此,从他们的文章中,我们还是能感受到一些对 Scala 未来的担忧,其中提到了 IDE 支持不佳和可学习性等问题,并将冻结所有特性开发的呼吁描述为 “共同的要求”,但这将注定 Scala 语言的 “停滞和失败”。


在语言作者看来,Scala 是一种边缘语言,它提供了更多的特性,但在完善性和稳定性方面不如 Java;但它的这种地位已经被 Java 和 Kotlin 等其他语言的进步所削弱。至少在 JVM(Java 虚拟机)生态系统中,Scala 首创了 lambdas 和模式匹配等特性,但他们也写道,“Scala 过去独有的很多功能现在都很常见了。”


Odersky 和李浩毅为 Scala 及其社区设定了一系列目标,其中包括:


  • 通过显式 null 等特性提高安全性,默认情况下类型不可为空;

  • 提供更多的便捷特性,如命名元组,允许通过名称引用类型元素;

  • 解决长期存在的问题;

  • 提高可学习性,例如优先考虑较简单库(包括 Scala 工具包)的代码和文档,并尽可能使 Scala 语法与其他语言保持一致;

  • 改进集成开发环境(IDE)支持,包括改进 VS Code 使用的 Scala 语言服务器 Metals ;

  • 改进构建工具,因为许多人认为,标准构建工具  sbt  过于复杂,尽管它的名字是 “简单构建工具” 的首字母缩写。


尽管这些目标看起来很合理,但可能还不足以改变 Scala 的地位并使其再度流行。


2021 年 5 月发布的 Scala 3 是一次重大更新,但与 Scala 2 并不完全兼容。2023 年的一项调查发现,只有 49% 的 Scala 开发人员在使用 Scala 3。当语言设计者发布经过改进但不兼容的版本时,就会出现这种典型的问题;尽管有好处,但也往往会破坏生态系统,和 Python 2 和 3 的情况一样。


一位仍在使用 Scala 2.13 的开发人员说,“Scala 的情况似乎比 Python 更糟糕。这门语言看起来完全不同,而且没有一个简单的迁移路径“。


另一位开发人员则反驳说,”Scala 3 才是 Scala 真正的样子。这门语言近乎完美,最重要、最流行的库和工具… 都已经支持新版本多年了“。


原文链接:

https://devclass.com/2025/03/25/the-future-of-scala-pioneering-features-are-now-commonplace-so-what-comes-next/

2025-04-18 08:008234

评论 1 条评论

发布
用户头像
未来就是有一个编译器可以单独编译成本地程序,不依赖JVM的。
2025-04-19 17:29 · 北京
回复
没有更多了

强引用、软引用、弱引用、幻象引用的区别

zarmnosaj

10月月更

这几款小程序插件可以让效率翻倍

Geek_99967b

小程序

vue的几个提效技巧

yyds2026

Vue

RocketMQ Streams在云安全及 IoT 场景下的大规模最佳实践

阿里巴巴云原生

阿里云 云原生 Apache RocketMQ

Python基础(十四) | Python之禅与时间复杂度分析

timerring

Python 时间复杂度 10月月更 python之禅

解读Vue3模板编译优化

yyds2026

Vue

展示出你的创意,知识库搭建也可以这样玩!

Baklib

详解webpack构建优化

Geek_02d948

webpack

企业级低代码开发平台有哪些?

优秀

企业级低代码平台 企业级低代码

实验精神终将胜利:量子纠缠的祛魅七十年

脑极体

KunlunBase功能体验范例

KunlunBase昆仑数据库

MySQL 数据库

外包学生管理系统

早安

架构

英国国民信托 CIO:如何讲好可持续发展故事

雨果

CIO

小程序容器技术,或许是提升智能设备安全等级的又一解决方案

Speedoooo

浏览器安全 小程序容器

一文了解 Python 中的对象比较方法 is 和 ==及其本质

宇宙之一粟

Python 10月月更

软件测试 | 测试开发 | 测试过程中遇到的那些奇葩bug

测吧(北京)科技有限公司

测试

如何制作企业在线产品手册?这里有一些简单的方法!

Baklib

如何搭建知识库网页?

Baklib

如何打造优秀的客户体验?

Baklib

客户体验 客户体验管理

【指针】有哪些类型?

Geek_65222d

10月月更

阳振坤:分布式技术引领关系数据库发展

OceanBase 数据库

量化自动套利分红机器人系统开发(成熟技术)

开发微hkkf5566

5分钟带您了解DSL、以太网线缆和光纤之间的区别,值得收藏!

wljslmz

dsl 光纤 以太网 10月月更

我奋斗了 18 年才和你坐在一起喝咖啡

宇宙之一粟

顶级理解!阿里这份Github星标63.7K的Redis高级笔记简直不要太细

程序知音

Java 数据库 redis 架构 后端技术

Apache SeaTunnel(Incubating) 2.2.0-beta 版本发布!API 重构,连接器与引擎解偶

Apache SeaTunnel

数据同步 Seatunnel 版本发布 数据集成平台 新版本/特性发布

全彩LED显示屏在单位形象的作用

Dylan

LED显示屏 全彩LED显示屏 led显示屏厂家

企业如何低成本快速搭建团队知识库,实现企业知识管理?

Baklib

【一Go到底】第十天---位运算and移位运算符

指剑

Go golang 10月月更

聊聊Vuex原理

yyds2026

Vue

Apache RocketMQ 5.0 在Stream场景的存储增强

阿里巴巴云原生

阿里云 云原生 Apache RocketMQ

当开创性特性已经普及,Scala 未来将走向何方?_编程语言_Tim Anderson_InfoQ精选文章