写点什么

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:002713
用户头像

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

关注

评论

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

PDF超过6000页,2021最新Java面试题及答案

Java 程序员 后端

nginx路径匹配踩坑

hasWhere

过滤器、拦截器、监听器

hasWhere

架构实战营模块八作业

宁静志远

架构实战营

高可用延迟队列设计与实现

万俊峰Kevin

微服务 延迟队列 microservice Go 语言 定时队列

技术圈的【多肉小达人】,一篇文章你就能做到

梦想橡皮擦

9月日更

【LeetCode】最后一个单词的长度Java题解

Albert

算法 LeetCode 9月日更

JavaScript进阶(六)继承

Augus

JavaScript 9月日更

模块八作业

河马先生

架构实战营

《转》搭建websocket消息推送服务

hasWhere

JVM启动参数学习笔记三

风翱

JVM 9月日更

模块8作业

Geek_ywh40v

Vue进阶(幺贰肆):前端用户体验提升(一)

No Silver Bullet

用户体验 9月日更

Elasticsearch 源码学习(1)源码编译调试

Se7en

架构实战营-模块八作业

老实人Honey

产品分析:如何给出解决方案?

石云升

产品经理 产品思维 9月日更

手机测试岗位常见面试问题汇总(持续更新中)

IT蜗壳-Tango

9月日更

架构实战营模块8作业

zlz

Vue进阶(幺贰叁):v-for 实现一行展示 n 个元素

No Silver Bullet

Vue 9月日更

缓存系统设计与实现

hasWhere

架构训练营模块八作业

喻高咏        

架构训练营

Ember.js 项目开发之 Ember Data

devpoint

ember.js 9月日更

古董系统的并发安全改造

hasWhere

模块四作业

Geek_fc100d

「架构实战营」

架构训练营-模块八作业

hello

架构训练营

SpringMVC源码分析-HandlerAdapter(2)-RequestMappingHandlerAdapter的初始化

Brave

源码 springmvc 9月日更

RabbitMQ的高级特性和消息补偿机制,字节跳动面试真题

Java 程序员 后端

架构设计的一些思考

hasWhere

中秋晴朗夜,我们与星月相见

白洞计划

TCP/IP参考模型与标准协议

Regan Yue

TCP/IP 9月日更

【架构设计模块八】:设计消息队列存储消息数据的 MySQL 表格

Ryoma

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