9月7日-8日,相约 2023 腾讯全球数字生态大会!聚焦产业未来发展新趋势! 了解详情
写点什么

Scala 十岁了

  • 2014-01-22
  • 本文字数:1100 字

    阅读完需:约 4 分钟

十年之前的 1 月 20 日,Michel Schinz 宣布了 Scala 编程语言的第一个实现。在宣布之时,Scala 被描述为“一种平滑地集成了面向对象编程和函数式编程的语言”,而且“是为以简洁、优雅且类型安全的方式表达常见编程模式而设计的”。

当时是这么说的:

我们宣布,Scala 编程语言的第一个实现已经可用。Scala 平滑地集成了面向对象编程和函数式编程。它是为以简洁、优雅且类型安全的方式表达常见编程模式而设计的。Scala 引入了一些创新性的语言构件。例如:

  • 抽象类型和 mixin 统一了来自对象和模块系统的理念。
  • 类层次结构之上的模式匹配统一了函数式和面向对象的数据存取。它极大地简化了 XML 树的处理。
  • 灵活的语法和类型系统支持构造高层的库和新的领域特定语言。

与此同时,Scala 还兼容 Java。无需胶水代码和额外声明,Java 的类库和框架都可以使用。

Scala 当前的实现运行在 JVM 上。它需要 JDK 1.4,可以在 Windows、MacOS、Linux、Solaris 及其他多数操作系统上运行。Scala 的一个.net 版本正在开发之中。

尽管.net 版本已经不再维护,但当时之所以要开发这个版本,其目标是提供一种能够运行在这两种虚拟机之上的、可以在不同操作系统间移植的公共语言。然而,随着 JVM 的 JIT 的改进,以及对 Java 字节码的依赖不断的增加,到 Scala 2.10 发布时,.net 版本就中断了。

Scala 将函数式编程带入了主流 JVM 语言中,而且直接刺激了 Java 8 即将带来的 lambda 表达式(往往被不正确地称为闭包)和接口默认方法等特性。Scala 很早就通过函数和 Traits 提供了对这些特性的支持,它们为以更简洁、可测试性更好的方式编程提供了新方法。

在 Scala 取得成功的同时,复杂性也随之而来,因为这些特性是把双刃剑,代码的可读性可谓冰火两重天。Scala 允许将任何 Unicode 标识符用作方法名和函数(包括符号),标准 Scala 类库已经发展到包含 =:=、:+ 和:\等函数。Scala 的取舍是以潜在的可读性损失为代价,改进编写的灵活性。

最后,Scala 仍然把自己看作一门研究性语言,一直在尝试新特性并弃用较旧的功能(比如原始的 Actors 包,它为 Scala 带来了和 Go 语言的 coroutine 类似的声望)。在不同版本之间,生成的字节码也有所变化,这意味着为当前的 Scala 版本编译的开源项目数量很有限,而且尽管 2.10 已经发布一年有余了,但是主要 Scala 版本之间的过度往往还是非常痛苦。

将于今年发布的 Java 8 会把 Scala 的一个特性子集带向 JVM,那么看一下 Scala 下一步会添加什么特性,将会非常有趣。二进制兼容会给语言带来稳定,但是看上去现在离二进制兼容之遥远,几乎和十年前一样,不过时间会证明一切。

下一个十年,你认为 Scala 会走向何方呢?

查看英文原文: Scala Turns Ten Today

活动推荐:

2023年9月3-5日,「QCon全球软件开发大会·北京站」 将在北京•富力万丽酒店举办。此次大会以「启航·AIGC软件工程变革」为主题,策划了大前端融合提效、大模型应用落地、面向 AI 的存储、AIGC 浪潮下的研发效能提升、LLMOps、异构算力、微服务架构治理、业务安全技术、构建未来软件的编程语言、FinOps 等近30个精彩专题。咨询购票可联系票务经理 18514549229(微信同手机号)。

2014-01-22 00:072952
用户头像
臧秀涛 略懂技术的运营同学。

发布了 300 篇内容, 共 127.0 次阅读, 收获喜欢 33 次。

关注

评论

发布
暂无评论
发现更多内容

项目管理100问 | 为什么你的项目进度总是在延期?

万事ONES

项目管理 项目排期 ONES 项目开发

曝光一个网站,我周末就耗在上面了。

why技术

Java Arthas

联邦学习这件小事(二)

趣链科技

区块链 隐私保护 加密技术 联邦计算

利用 iOS 14 Vision 的手势估测功能 实作无接触即可滑动的 Tinder App

iOSer

ios ios开发 iOS 14 Vision Tinder App

美联储最新货币政策,将如何影响比特币市场?

CECBC

[译] R8 优化: 字符串操作

Antway

6月日更

英特尔谢晓清:开源是软件发展趋势

E科讯

数字人民币对地铁App的影响分析

CECBC

索信达控股:解析索信达模型管理利器

索信达控股

大数据 模型 风险管理 智能 数据管理平台

Mysql是如何选择主键的

架构精进之路

MySQL 6月日更 主键

我试了试用 SQL查 Linux日志,好用到飞起

程序员小富

Java Linux 日志

融云CTO任杰:强互动,RTC下一个“爆点”场景

融云 RongCloud

酱香型白酒怎么选?唐庄酒告诉你答案

Geek_50a546

BZZ云算力挖矿系统开发案例

掌握鸿蒙轻内核静态内存的使用,从源码分析开始

华为云开发者联盟

鸿蒙 操作系统 内存 静态内存 鸿蒙轻内核

react源码解析16.concurrent模式

全栈潇晨

react.js

并发王者课-铂金4:令行禁止-为何说信号量是线程间的同步利器

MetaThoughts

Java 多线程 并发

年份白酒推荐 商务聚会我选唐庄五星酒

Geek_50a546

Redis套路,一网打尽

Coder的技术之路

redis 缓存 面试

零售的私域「留量」时代,SaaS的「服务」未来

ToB行业头条

四川比特币矿机或全线关机,矿工跟矿机说:Bye,See you

CECBC

百度一款前端图片合成工具库MI开源啦!

百度开发者中心

百度 开源 图片

唐庄酒业的酒好喝吗?纯粮酿造好味道

Geek_50a546

1.5w字 + 24张图肝翻 TCP

cxuan

TCP 大前端 后端 计算机网络

蚂蚁金服内部的Spring Cloud Alibaba手册,面面俱到,太全了

Java 程序员 架构 面试 微服务

细节爆炸!阿里企业级Spring Security机密文档

Java 程序员 架构 面试 微服务

做项目管理,如何对复杂的项目工作进行分解

万事ONES

需求管理 ONES 项目管理工具

8种图数据库对 NULL 属性值支持情况

华为云开发者联盟

图数据库 null 逻辑 语义网 图模型

并发王者课-铂金3:一劳永逸-如何理解锁的多次可重入问题

MetaThoughts

Java 多线程 并发

ZGC 新特性

meacial

Java ZGC JVM 软件开发

融云发布语聊房SDK 1.0 & Demo 满足开发者开箱即用需求

融云 RongCloud

  • 扫码添加小助手
    领取最新资料包
Scala十岁了_Java_Alex Blewitt_InfoQ精选文章