写点什么

当开创性特性已经普及,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:009532

评论 1 条评论

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

Java 8 中的函数式接口

陈皮

LeetCode题解: 206. 反转链表,JavaScript,容易理解的递归解释,详细注释

Lee Chen

大前端 LeetCode

MySQL 百万级数据量分页查询方法及其优化

xcbeyond

SQL优化 数据库优化

读完《云原生架构白皮书》,我们来谈谈开放应用模型(OAM)

郭旭东

Kubernetes 云原生 OMA

Flink 使用大状态时的一点优化

Apache Flink

flink RocksDB

从零开始写一个迷你版的Tomcat

简爱W

第8周-作业1

seng man

5万字长文:Stream和Lambda表达式最佳实践-附PDF下载

程序那些事

Java jdk Lambda stream

门面效应 - 拒绝别人会产生愧疚吗?

石云升

心理学 门面效应 留面子效应

MySQL主从复制详解

Simon

MySQL 主从复制

百万并发「零拷贝」技术系列之Linux实现

码农神说

Java 架构 零拷贝

初识进程coredump(以中间件为例)异常宕机

清康

作业1

武鹏

第8周-作业2

seng man

计算机的时钟(二):Lamport逻辑时钟

ElvinYang

ARTS 06 - Jenkins 多分支项目过滤及 when 的高级用法

jerry.mei

学习 算法 ARTS 打卡计划 CI/CD ARTS活动

封装element-ui表格,我是这样做的

前端有的玩

Java Vue Element 封装

简易web性能工具

鲁米

程序的机器级表示-访问数据

引花眠

ARTS打卡 第9周

引花眠

ARTS 打卡计划

云图说|“真人?机器?傻傻分不清!” WAF Bot管理,带你慧眼辨“精”!

华为云开发者联盟

bootstrap 搜索引擎 安全 防火墙 华为云

耦合层:撮合物联网的理论与实践牵手的“月老”

华为云开发者联盟

AI 物联网 IoT 低耦合 华为云

C++编译过程 宏 内联和静态变量

正向成长

JDK1.8新特性(六):Stream的终极操作,轻松解决集合分组、汇总等复杂操作

xcbeyond

stream 集合 JDK1.8 Collections JDK1.8新特性

架构师训练营第八周课后总结

Cloud.

Jenkins 多分支项目过滤及 when 的高级用法

jerry.mei

DevOps 运维 自动化 jenkins CI/CD

应用程序研发之网络-网络编程模型

superman

轻松应对并发问题,Newbe.Claptrap 框架中 State 和 Event 应该如何理解?

newbe36524

分布式 微服务 架构设计 .net core ASP.NET Core

应用程序研发之网络-分层模型

superman

第8周作业

小胖子

应用程序研发之网络 - Http

superman

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