然后,为了比Java更好的语言
Martin Odersky:现在,经过Pizza和GJ的经历,我有时会感到沮丧,因为Java是一个具有非常强的约束的语言。因此,很多事情都不能像我想象的那种方式那样去做——那种我原本确信是正确的方式。所以本来,本质上我的工作是集中于让Java变得更好,但在那之后,我决定,现在是时候应该后退一步看看了。我想要从零开始,看看我能否可以设计出一些比Java更好的东西。但与此同时,我知道我不能从零开始。我需要借助一个现有的基础架构,否则这只是不切实际地引导自己去无中生有,没有任何类库、工具等等。
所以我决定,即使我想要设计出一种不同于Java的语言,始终还是要借助Java的基础架构——JVM和它的类库。这就是我的想法。我认为在那个时候,这是一个很好的机会,那时候我正在洛桑联邦理工大学担任教授,这为我提供了一个极好的独立研究的环境。我可以组建一个小型研究组。
开始的时候,我们非常激进。我们想要在一个现有的非常好的模型上创建一些东西,该模型为join calculus(连接演算)。我们创建了一个连接演算的面向对象版本Functional Nets,以及一种新语言Funnel。但是,又过了一段时间,我们发现,Funnel是一个非常纯粹的语言,并不一定很实用。Funnel是建立在一个非常小的内核之上。很多人们通常认为理所当然的事情(如类,或模式匹配)都只能通过编码到内核才能实现。从学术的角度来看这是一项非常优雅的技术。但运用于实际它就并不那么好。初学者觉得这种必要的编码相当困难,而高手们却觉得不得不一次又一次地编码非常无聊。
因此,我们决定再次从头开始,并做一些介于Funnel(非常纯粹的学术语言)和GJ(非常实用但却存在一些限制的语言)中间的技术。我们希望创造一些能够实用和有价值,同时又比Java高级的东西。在大约2002年时,我们开始着手进行这种语言,称之为Scala。首次公开发布是在2003年。相对比较大规模的一次重新设计是在2006年初。从此,它开始稳步成长。