为了更好的Java而努力
Artima:Scala是如何出现的?Scala的发展史是什么样的?
Martin Odersky:在我的苏黎世生活快要结束的时候,大概是1988到1989年,我开始非常喜欢函数式程序设计。于是,我一直留在那里做研究,最终成为一名德国卡尔斯鲁厄的大学教授。我最初的工作偏向于编程的理论方面,比如call-by-need lambda(惰性λ)演算。这项工作是同Phil Wadler共同进行的,他当时在格拉斯哥大学。有一天,Phil告诉我,他的研究组里一个很勤奋的助教听说有一种新的语言要被推出,目前这种语言仍处于alpha版本阶段,语言的名字为Java。这个助教告诉Phil:“看看这个Java,它所具有的灵活性。它拥有字节码,它可以运行在网络上,它具有垃圾收集功能。这个Java将要毁灭你们。你们准备怎么应对?” Phil说,是的,也许他说的有些道理。
对此的回应就是,Phil Wadler和我决定从函数式程序设计中提取出一些想法,并把这些想法转移到Java空间。这一努力成就了一个新语言Pizza,它具有函数式程序设计的三个特点:泛型、高阶函数以及模式匹配。Pizza最初发布于1996年,是在Java发布的一年之后。Pizza是比较成功的,因为它表明,我们可以在JVM平台上实现函数式语言的特性。
然后,我们接触了来自Sun核心开发团队的Gilad Bracha和David Stoutamire。他们说:“我们对你们一直所研究的泛型非常感兴趣,让我们一起做一个关于泛型的项目吧。”那就是GJ(泛型Java)。因此,我们于1997/98年开发了GJ,6年后,对它进行一些补充,使之成为了Java 5中的泛型功能。特别是,补充了由Gilad Bracha和奥胡斯大学的人们一起独立开发的Java泛型通配符。
虽然我们的泛型扩展被搁置了6年,但Sun公司对于我为GJ所开发的编译器表现出了浓厚的兴趣。经证明,我所写的编译器比他们的第一个Java编译器更稳定、更易于维护。因此,他们决定从2000年推出的1.3版本开始,将GJ编译器作为其标准的Javac编译器。