51CTO专访Scala创始人:Scala拒绝学术化

原创
企业动态 后端
Scala 2.8发布已有一段时间,51CTO收集了网友关于Scala的一些反馈,就大家比较关心的热点问题再次专访Scala语言的创始人Martin Odersky。

【51CTO独家专访】Scala编程语言近来抓住了很多开发者的眼球。它看起来像是一种纯粹的面向对象编程语言,而又无缝地结合了命令式和函数式的编程风格;它融汇了许多前所未有的特性,而同时又运行于JVM之上。2010年7中旬,Scala 2.8正式发布,这个版本添加了大量的新特性。其中重新设计集合库、对数组的处理进行了简化和优化等设计尤为引人注目,51CTO经过近1个月的调查,在各个Scala开发论坛和Scala开发讨论组里搜集关于Scala 2.8使用的各种问题。带着这些问题对立志于创造比Java更好的语言的Scala创始人Martin Odersky进行了专访。

Scala创始人Martin
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已经被修复,例如:

  1. "abc".reverse  
  2.  

现在可以得到字符串"cba",而不像以前是一个RichString,这意味着:

  1. "abc" == "abc".reverse.reverse  
  2.  

这样的等式是成立的,而以前的版本会返回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编程语言专题

Scala创始人Martin

【51CTO.com独家特稿,非经授权谢绝转载,合作媒体转载请注明原文作者及出处!】

【编辑推荐】

  1. Scala 2.8最终发布 全新功能值得期待
  2. 编程思想碰撞 Scala不是改良的Java
  3. Scala vs F#:函数式编程特性大比拼(一)
  4. Scala vs F#:函数式编程特性大比拼(二)
  5. 对象函数式编程 Scala简史
  6. 用Java在各种框架下编译Scala项目
责任编辑:杨鹏飞 来源: 51CTO.com
相关推荐

2009-06-10 14:43:19

Scala泛型Scala编程语言

2009-05-20 09:41:10

2009-07-08 11:44:40

ScalaGroovyJVM

2010-08-14 23:28:06

2011-10-17 15:22:59

TechEd2011

2012-04-02 19:17:37

苹果

2011-04-29 14:30:05

2011-11-01 12:15:16

TechEd 2011

2023-06-19 16:44:05

数字化

2010-08-26 08:57:04

AndroidAndroid开发

2010-12-20 09:23:55

Flipboard用户体验

2012-07-13 09:58:06

WEBWEB前端性能优化

2010-09-14 13:22:17

Scala编程指南Scala

2014-08-07 03:19:54

Coding协作开发

2010-03-17 09:42:39

Twitter创始人

2010-04-06 18:19:00

51CTO技术周刊

2021-02-22 11:34:37

51CTO专访

2009-11-13 04:23:12

云计算Gartner专访

2011-01-04 15:29:30

开发技术

2011-12-23 16:13:25

点赞
收藏

51CTO技术栈公众号