【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

Martin Odersky 在纽约 Scala Days 指出,继沉寂的 2015 之后 Scala 将有大动作

  • 2016-08-11
  • 本文字数:2458 字

    阅读完需:约 8 分钟

继相对沉寂的 2015 年之后,Scala 之父 Martin Odersky 在 2016 年 5 月 9 日纽约的 Scala Days 的主题发言中表示,Scala 在今年正在加速发展。Odersky 现在是洛桑联邦理工学院(EPFL:École Polytechnique Fédérale de Lausanne)的现任编程研究组教授, Lightbend 的联合创始人。他指出了“最近已经或将要发生的改变”:

  • Scala Center
  • Scala 2.12
  • 计划从新思考 Scala 库
  • 开发新的目标平台
  • DOT 与 Dotty

我们简要看一下以上这些主要变化

Scala Center

Odersky 介绍了新的 Scala Center 并将之描述为“承担造福整个 Scala 社区的项目”。据 2016 年 5 月 14 日 Scala Center官方博客所述,Scala Center 的创建是由于日益增加的 Scala 相关职位以及“ scala 教程”在 Google 的搜索量,这些都表明了 Scala 越来越被大家所接受。Scala Center 主要针对开源社区和相关教育培训。同时也为了能更近距离地和 Scala 社区进行协作,正如上述博文指出的:

Scala 巨大的用户基数以及多元化的项目意味着将有大量的对语言与其工具的需求。同时也有大量的有能力的活跃贡献者。Scala Center 的首要任务是询问用户社区,定义一个通用的目标,组织贡献者和所拥有的资源来共同实现这个目标。

Scala Center 建立在 EPFL 并由研究员 Heather Miller 作为常务董事来领导。Lightbend 的 Scala 首席技术 Adriaan Moors 也在 Scala Center 工作。在他就 Lightbend 与 Scala Center 的相互合作接受 InfoQ 采访时,当被问及 Lightbend 每日的工作是否受 Scala Center 的影响时,Moors 表示:

它正在影响我们的计划,但是要说它是否影响我们的日常工作还为时过早。Lightbend 的整个 Scala 团队正在尽全力保证在接下来几周的 2.12.0-RC1 发布,这是唯有我们应尽的职责(当然还有许多开源贡献者)

在许多采纳使用 Scala 的组织中,Lightbend 拥有其中的 62 个案例研究

Scala 2.12

Scala 2.12 已经经历了两年的开发旅程并计划在2016 年中发布( Scala 2.12.0 milestone 5 自 2016 年 6 月 29 日就已发布)。这将是第一个 Java 8 优化的版本,并将利用 Java 8 的 lambdas 表达式实现更短的代码,更快的执行速度。Scala 的 GitHub仓库记录了Scala 2.12 的 33 个新特征。Lightbend 将为运行在 Java 6/7 上的应用提供延伸的 Scala 2.11 的维护周期。

DOT 用时 8 年, DOT - 一种依赖对象类型 (dependent object types,原文疑误写为 document object types) 的演算 - 被证明在 Scala 中是一种可靠的基础。如 Odersky 在 2016 年 2 月 3 日的博客所述:

一个演算可以理解为微语言(mini-language),它足够小,小到可以真正地被研究。换用 Scala 的说法,DOT 包含的语言可以用下图的摘要语法来表述

正如 GitHub仓库中定义的 DOT 演算,以上的抽象语法是:

一个依赖对象类型的最小的完备版本。这个演算只通过交叉,嵌套绑定的组合来实现方法(functions),标签类型(labeled types)和术语(terms)。

选用这种演算可以使得正式的表达式可以在编译语言其他部分时一起被实现和证明。这为将来 Scala 的开发提供更大的信心。这种演算考虑到类型安全。_ 类型规则(Typing rules)_ 将类型分派给术语和 _ 运算规则 _ 来确保程序运算的正确,如下面的属性示例:
如果术语t拥有类型T,在t运算结束后,它的结果将是类型T的值v
Odersky 解释到,以上所说的重要性在于“它为我们提供了一个可以推出语言特性正确性的技术。”

Dotty

Dotty 是一个内部使用 DOT 数据结构的新编译器。它的代码量几乎是现有nsc编译器的一半,同时承诺两倍的速度。Dotty 将包含如下新特性:

  • 交叉类型(Intersection types)(修正了类型无交换性的问题)
  • 组合类型(Union types)(避免了大量过度构建)
  • 方法实参适配(Function arity adaption)(更高效的参数匹配)
  • Trait 参数(trait 类似于 java 中的接口)
  • @static 方法和字段
  • 恒等(Multiversal equality)(像 == 和!= 等操作符现在是类型安全的了)
  • 命名的类型参数

创建这些新特性的初衷包含希望建立一个更好的基础和一个更简单更安全的语言。目前 Dotty 的状态可以在网站查询。
为了保持语言的简单性,Odersky 宣布一些现有的 Scala 特性将被移除

  • 过程式语法(Procedure Syntax)(不是很高效)
  • 类延迟初始化(未被使用)
  • 宏(实验性特性,并不在长期计划中)
  • 预初始化(被 Trait 参数取代)
  • 存在性类型(Existential types)(与 Scala 基础不兼容)
  • 通用类型投影(General Type Projection)(被确定为类型不可靠的)

以上部分特性将被新特性取代,其他的将被移除。
Dotty 的高级工具包含:

  • 与 Scala 的构建工具 sbt 的集成
  • 带语法高亮的可交互式命令行(REPL:read-eval-print-loop)
  • 新的 Intellij 的 Dotty 插件
  • 文档生成(对跨库引用的动态超链接)
  • 一个高效并且更健壮的连接器

Dotty 的架构图如下

其中引入了一个新的序列化类型抽象语法树, TASTY ,它的设计目标为可靠,懒加载,可扩展,精确。Dotty 是在 EPFL 开发的,但 Lightbend 的 Scala 团队负责其基础建设,复审和指导建议。其源代码位于 Dotty 的 GitHub仓库

Scala 2.12 及之后

在 Scala 2.13 的先期计划中,Scala 将专注于找出方法来更新类库,在移除一些现有的极端案例的同时使它们用起来更方便。Odersky 表示这个灵感来源于 Spark 使用弹性分布式数据集 (RDD) 的延迟构建操作来实现集合。
为了更好地调节 Scala 类库。Odersky 提议拆分 Scala 的stdlib

Odersky 邀请开发人员参加现有或新的稻草人提案

小结

Moors 维护着 Scala 官方 GitHub仓库并提供了源码和开发者如何贡献代码的信息。
Lightbend 告诉 InfoQ 在这个夏末,他们正“计划着揭晓一个对数千 Java 和 Scala 开发者进行的调查结果,并分享他们对容器,微服务,原生云应用(cloud-native applications)和其他热点领域的经验。”

查看英文原文: After a Quiet 2015 Martin Odersky Outlined Significant Plans for Scala at Scala Days New York


感谢张龙对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2016-08-11 19:002412
用户头像

发布了 41 篇内容, 共 12.8 次阅读, 收获喜欢 3 次。

关注

评论

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

Hive学习笔记(二)

五分钟学大数据

hive 7月日更

数字货币这波热潮,各国都舍不得错过

CECBC

SQL巩固测试题

Flychen

怎么在linux系统下安装Nginx?一分钟学会!

小桃

Linux 网络安全 系统

367W字!京东商城Java架构师设计的亿级高并发秒杀手抄笔记

Java架构追梦

Java 架构 秒杀系统 亿级并发 京东商城

虚拟币合约交易平台搭建,永续合约交易系统源码

揭秘版权保护下的视频隐形水印算法(上篇)

拍乐云Pano

KeilC51基础 利用仿真测试代码的运行时间

万里无云万里天

IoT 嵌入式 KeilC51

架构实战营 -- 模块1作业

发酵的死神

5W1H聊开源之Why——为什么要参与开源?

禅道项目管理

开源 项目

一个成功的 Git 分支模型如何构建?

白亦杨

官宣!ElasticJob 3.0.0 版本正式发布

SphereEx

FIL币价值与未来, FIL币价值预估

万字长文,Spark 架构原理和RDD算子详解一网打进!

云祁

大数据 spark 7月日更

模块一作业

燕燕 yen yen

#架构实战营

成功收到美团、字节、蚂蚁Offer后!我把狂刷 5 遍的面试题整理出来了!

Java 程序员 架构 面试

视频云会议已成未来发展必然趋势

anyRTC开发者

音视频 WebRTC 视频会议 云视频

模块八作业

c

架构实战营

论文解读丨图神经网络应用于半结构化文档的命名实体识别和关系提取

华为云开发者联盟

文档 识别 图神经网络 半结构化文档 关系提取

CDH的安装(三)

大数据技术指南

CDH 7月日更

面试扣分点:什么是鸭子类型?

视频云峰会|“科技 X 艺术” 的颗粒度体验是什么?

阿里云视频云

阿里云 AR 艺术 摄影 vr

简单四步学会在数字孪生可视化场景中创建小地图!

ThingJS数字孪生引擎

大前端 地图 物联网 可视化 数字孪生

接下来的40年,碳中和对我们来说意味着什么?

CECBC

[架构实战营]模块一作业

xyu

#架构实战营

数据备份 定期整理与备份手机中的重要资料

万里无云万里天

信息安全 数据备份 手机管理

网络攻防学习笔记 Day67

穿过生命散发芬芳

网络攻防 7月日更

Apache ShardingSphere 邀您相约 Open Source Day

SphereEx

两者可兼得,在IDEA中使用Git!

Ayue、

git 学习

KeilC51基础 改变代码的字体大小

万里无云万里天

IoT 嵌入式 KeilC51

iOS工程师如何恍然大悟?

程序员 IT 编程之路 iOS 知识体系

Martin Odersky在纽约Scala Days指出,继沉寂的2015之后Scala将有大动作_Java_Michael Redlich_InfoQ精选文章