Scala的未来

Posted InfoQ

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Scala的未来相关的知识,希望对你有一定的参考价值。

Scala团队最近发表了一篇题为《Scala的下一步计划》的文章,这篇文章对Scala这门语言的未来进行了描述,并对Scala后续的三个主要版本的特性和目标进行了细化:改善语言和它的类库,从而让它变得更容易理解、更加健壮,并且性能更好。


Scala 2.12是下一个主要版本,在最近的InfoQ文章《Scala 2.12将只支持Java 8》中已有所介绍。而再接下去的两个版本将以代号的方式命名,分别是Aida和Don Giovanni。2.12版的主要目标是与Java 8的互操作性,而Aida则专注于简化集合框架,Don Giovanni将会对语言进行改进,并会提升编译器的速度。Don Giovanni版还计划与项目Valhalla合作,因为这两个项目具有相似的愿景。


项目Valhalla是一个实验性的OpenJDK项目,该项目旨在开发那些同时需要更改语言语法和虚拟机级别支持的主要的Java新特性。其中Scala想要利用的两个Valhalla特性是实现泛型的新方式和值类型。


虽然向后的兼容性并不能得到保证,但是将会构建一个源代码的迁移工具来支持跨不同版本的构建。普通的Scala代码将可以很容易地进行移植,但是例如像宏(macros)这样的实验性的特性将无法得到支持。


Julian Gamble是Clojure Recipes的作者,他为Hacker News的文章添加了一些上下文信息。他提到Scala编译器的首席开发Paul Philips在去年曾进行过一次标题为“我们做的一切都错了”的分享。你可以观看他分享内容的视频,或者下载他分享的幻灯片。Gamble认为《下一步计划》这篇文章是Martin Odersky对这一现状的回应,而Gamble对他的实际行动表示了赞赏。


根据 Scala 2.12 路线图,这一版本在2016年1月之前都不会计划发布。Hacker News上的一些人表达了对向后兼容性的关注。Scala的首席设计师Martin Odersky对此作出了回应:


我们将会尝试尽可能灵活地划清新老版本的边界,而它们两者的lint工具和语言导入将会是这一工作的重要部分。


同样也要注意那些我们所考虑的重写,数量多且相当琐碎。例如在你每次使用过程调用语法的时候会插入一句": Unit = ",或者会对xml"""..."""中每一个XML字面量进行包裹。


唯一让我感到有一些不放心的事就是那些试验性的特性。它们将无法干净地进行移植,而我现在的建议会是:如果你想你的代码不经过大量重写就能通过转换,那么请不要使用实验性特性。它们也许很吸引人,但是它们将会给你埋下一个个坑。


以上是关于Scala的未来的主要内容,如果未能解决你的问题,请参考以下文章

Scala - 如何在 http 请求中不使用未来

具有未知循环数的 Scala 未来

Scala:地图的未来清单

斯柯达掀背车 SCALA将引领未来设计趋势

在scala播放框架异步操作中组合/链接未来

如何根据Scala中以前的未来响应发出多个HTTP GET请求?