微信号:infoqchina

介绍:有内容的技术社区媒体

Scala的未来

2014-09-01 19:55 InfoQ

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字面量进行包裹。


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


 
InfoQ 更多文章 Facebook如何实现PB级别数据库自动化备份 学术派Google软件工程师Matt Welsh谈移动开发趋势 Spotify为什么要使用一些“无聊”的技术? 妹纸们放假了,汉纸们做啥? 大多数重构可以避免
猜您喜欢 揭秘:传智播客报名如此火爆的内幕 私人隐私数据,该怎么存 App架构设计经验谈:展示层的设计 “风险”、“威胁”和“漏洞利用”,其实差别很大 API 调用次数限制实现