写点什么

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

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

关注

评论

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

挖矿矿池系统开发详情丨挖矿矿池源码案例

系统开发咨询1357O98O718

挖矿矿池系统开发案例 旷工系统开发功能

SGY奇点交易所系统软件开发|SGY奇点交易所APP开发

系统开发

区块链信息共享应用落地搭建解决方案

t13823115967

区块链+ 区块链应用 信息共享

DeFi借贷质押系统APP开发|DeFi借贷质押软件开发

系统开发

区块链BaaS应用平台开发

13828808769

新思科技最新报告显示开源安全是首要考虑因素

InfoQ_434670063458

iOS面试基础知识 (一)

iOSer

ios 面试 runtime 编程开发 iOS Developer

区分Protobuf 3中缺失值和默认值

Gopher指北

protobuf Go 语言

滴滴开源小桔棱镜:一款专注移动端操作行为的利器

滴滴技术

开源 滴滴 移动端

《数据结构与抽象:Java语言描述》.pdf

田维常

数据结构

Scala中String和Int隐式转换的问题分析

木子李G

scala 大数据 编程 隐式转换

还有谁比阿里人更懂SpringCloud Alibaba 呢?P8大牛纯手打笔记免费分享!

Java架构之路

Java 程序员 架构 面试 编程语言

20分钟带你掌握JavaScript Promise和 Async/Await

葡萄城技术团队

Java

超详细讲解!Android面试真题解析火爆全网,搞懂这些直接来阿里入职

欢喜学安卓

android 编程 程序员 面试 移动开发

EPBC环保生态链系统开发案例丨环保生态链EPBC源码平台

系统开发咨询1357O98O718

环保链APP系统开发案例

某美女的程序员老公半夜都还不回家,原来是偷偷在公司看Redis+JVM+Spring cloud+MySQL技术文档

Java架构之路

Java 程序员 架构 面试 编程语言

四面腾讯pcg后端开发岗,一个星期面完成功拿到20K的offer。分享面经

Java架构之路

Java 程序员 架构 面试 编程语言

刚入职,就被各种 Code Review,真的有必要吗?

xcbeyond

方法论 研发管理 编程习惯

DeFi流动性挖矿系统开发详解方案

系统开发咨询1357O98O718

defi流动性挖矿系统开发

四币连发平台系统开发详解丨四币连发源码(案例)

系统开发咨询1357O98O718

四币连发系统开发案例详解

智慧警务开发,二维码定位报警系统搭建

t13823115967

智慧公安 智慧公安扫码

恕我直言!有了这份MySQL学习文档,你收藏夹里的其他MySQL学习资料都可以扔了

Java架构之路

Java 程序员 架构 面试 编程语言

架构师训练营第三周作业

Geek_xq

架构师训练营第八周作业

李日盛

算法

阿里架构师经验分享!啃完999页Android面试高频宝典,面试心得体会

欢喜学安卓

android 程序员 面试 移动开发

Github 2020 年度报告:你以为新冠击溃了开发者?不!他们创造了更多代码...

阿里巴巴云原生

开源 Serverless 程序员 代码

Mybatis动态映射,so easy啦

田维常

用60行代码实现一个高性能的圣诞抽抽乐H5小游戏(含源码)

徐小夕

Java 大前端 H5游戏 H5

服务于阿里、滴滴、华为等一线互联网公司的分布式消息中间件RocketMQ核心笔记

Java架构追梦

Java 架构 面试 RocketMQ 消息中间件

DeFi流动性挖矿系统开发(案例源码开发)

系统开发咨询1357O98O718

defi流动性挖矿系统开发

仅凭这份Java大纲笔记,我如愿拿到了阿里offer。

Java架构之路

Java 程序员 架构 面试 编程语言

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