【51CTO独家专访】Scala编程语言近来抓住了很多开发者的眼球。它看起来像是一种纯粹的面向对象编程语言,而又无缝地结合了命令式和函数式的编程风格;它融汇了许多前所未有的特性,而同时又运行于JVM之上。2010年7中旬,Scala 2.8正式发布,这个版本添加了大量的新特性。其中重新设计集合库、对数组的处理进行了简化和优化等设计尤为引人注目,51CTO经过近1个月的调查,在各个Scala开发论坛和Scala开发讨论组里搜集关于Scala 2.8使用的各种问题。带着这些问题对立志于创造比Java更好的语言的Scala创始人Martin Odersky进行了专访。
51CTO:Martin,你好,自从上次上次我们谈论Scala泛型的优点已经过去一年,Scala 2.8最终版发布也有一段时间,我们带着51CTO网友的问题再次向您请教。
Martin:当然,我很高兴接受51CTO的采访。
51CTO:Scala 2.8发布后,你从开发人员(包括社区的和项目组的)哪里获得了什么反馈?他们都对这个版本感到很满意吗?
Martin:是的,我们获得了非常积极的反应,大多数人迁移到2.8似乎都非常的顺利,我们在scala-lang.org上的一项调查结果就可以说明一切。
51CTO:在2.8版本中,对Scala集合库进行了重新设计,条理更清楚也更高效,你能举一个例子与2.7.x比较一下,新版本在集合方面为开发人员带来哪些便利?
Martin:首先,集合更统一,所有集合都支持相同的方法和相同的类型,上一个版本中存在的一些小Bug已经被修复,例如:
- "abc".reverse
现在可以得到字符串"cba",而不像以前是一个RichString,这意味着:
- "abc" == "abc".reverse.reverse
这样的等式是成立的,而以前的版本会返回False。
其次,新增了强大的持久化集合类型,如Vectors和HashTries,它们都提供了很好的效率。
51CTO:在过去的一年里,有很多项目都转向了Scala,在中国,有些公司也开始招聘Scala开发人员;中国也举办了一些类似“Scala Day”的技术活动,你是否满意Scala语言目前的使用率和普及率?2010年下半年有些什么计划?
Martin:是的,现在有很多公司都在认真考虑可以提高生产力的Scala。
51CTO:中国的Scala开发人员对2.8的期望很高,我们51CTO的一些读者在我们的文章后反应,他们认为Scala 2.8仍然过于学术化,它的语法比较难学,有类、抽象类、case类、密封类、traits(特征)、对象和其它函数式编程功能,这些给开发人员带来了许多困惑,你认为Scala应该如此吗?如果在某些方面进行简化,Scala还能正常运行吗?
Martin:我认为“学术化”是错误的理解,拿Java或C#比较,如果非要计算特征或语法的数量,它们显得更复杂,简单列一下和Java的对比:
抽象类 - 和Java一样
Case类 - 意味着你可以在匹配表达式中使用它
密封类 - 意味着你只能使用这里定义的子类,只需要关注当前文件的case类匹配的列举
特征(traits) - 和Java中的接口相似
对象 - 和Java中的static相似
另一方面,Scala抛弃了枚举和注解,它们和Java中的类很相似,但并不完全相似,如果看一看相关的语言规范,我觉得Java在这个领域是更复杂的。
Scala中存在的这些特征都有很好的存在理由,我想你们使用过后,也不想让它们从Scala中消失,这个问题更象是初学者提出的,他们可能发现与之前学习的语言存在差异就开始嚷嚷了,我们能做的是写更好的文档来帮助他们(我们目前正在开展这项工作)。
51CTO:最后一个问题,下一个版本中有什么令人激动的新特性?
Martin:透露一点,下一个版本在并发和并行编程方面将会有令人激动的新特性出现,多留意scala-lang.org上的公告吧。
51CTO:很高兴Martin能再次接受我们采访。
Martin:非常感谢51CTO,再会!
51CTO在未来将继续带来有关Scala编程语言的最新消息和技术教程。对于Java开发人员而言,Scala的学习曲线可以说是微乎其微,而且潜力也相当可观。如果对Scala语言感兴趣,欢迎继续关注51CTO的Scala编程语言专题。
【51CTO.com独家特稿,非经授权谢绝转载,合作媒体转载请注明原文作者及出处!】
【编辑推荐】