Martin Odersky一直领导着Dotty的工作。 Dotty是一种创新的,基于Dependent Object Types(DOT)演算(基本上是Scala的简化版本)和函数式编程(FP)数据库社区的研究编译器。
从事Dotty开发的团队已经对现有技术进行了一些显着改进,特别是在编译时间方面。我问Odersky关于Dotty架构的创新和并如何帮助最终用户。这是他说的话:
有两件想法:第一,它与正式基础密切相关,可以给我们更好地指导如何设计一个声音类型系统。 这将为最终用户带来更少的惊喜。 第二,它具有基本上功能架构。 这使得它更容易扩展,更容易正确,并将带来更强大的API,其中编译器有作为IDE和元编程的服务的功能。
虽然Dotty开辟了许多有趣的语言可能性(特别是全光谱依赖类型,la Agda和Idris),Odersky仍然选择优先使它对社区有立即的作用。 语言差异相当小,并且大多数是为了简化语言(如删除过程语法)或修复错误(不健全的模式匹配)或两者(早期初始化器)。
有趣的是,Odersky实际上具有建立人们使用的编译器的悠久历史。在他完成博士学位之前,他把一个Pascal编译器卖给了Borland。他之后完成了博士学位。在Niklaus Wirth
(Pascal的创建者)下,他在IBM(E语言,后来被商业化)完成了一些博士后的工作,然后捕获了功能编程(FP)的错误。他继续写Pizza(用Philip Wadler的Haskell和Java Generics fame )和Funnel。那个时候没有人使用那些,但他和Wadler 发明了GJ编译器,当然,也引到了Java的广泛使用。他也写多个Scala编译器(Dotty是第五或第六)。我这里可能说漏了一些事,但重点是,他是一个相当可靠的人。
然而,我不能拒绝询问他是否有任何机会,在某个时候全谱依赖类型会结束在Scala 。 这里是他的回答:
“永远不要说不 :-), 事实上,我们目前正在与Viktor Kuncak合作,将Leon程序与Scala集成,它需要比我们现在更丰富的依赖类型。 但它目前在严格的研究阶段,并会有一个完全开放的结果。”
Scala和Dotty团队正在密切合作以实现Scala 2.x和Dotty的融合,他们表示他们非常重视连续性。Scala 2.12和2.13具有解锁在Dotty中出现的特性的语言标记(例如,存在类型),而Dotty编译器具有Scala 2兼容模式。 我们有理由相信甚至会有一个迁移工具。