设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客

Groovy创始人:Java面临终结Scala将取而代之

2009-8-7 09:05| 发布者: joejoe0332| 查看: 7522| 评论: 5

  Scala已有类型推理(type inference)功能,因此它和Ruby/Groovy一样简洁,但是它完全是静态类型的。这是很有好处的,它使得理解代码、阅读代码以及编写文档都简单多了。在任何片段(token)/方法/符号上点击,你都可以跳转到相应的代码或文档中去浏览。不需要打那些怪异的补丁,也不用操心谁什么时候新增了一个方法——这对于那些需要一个团队一起长期开发的大项目是很有好处的。Scala似乎已经实现了动态语言(dynamic language)的那种简洁,而实际上它是完全静态类型的。所以,我根本不需要去记哪些魔术方法可用——或是在shell里运行脚本来查看这些对象——IDE/编译器在你编辑代码时就已经知道这些了。  

  Scala已经提供了对高阶函数和闭包的支持,另外还支持序列解析(sequence comprehensions) ,这样你就可以很容易用Scala写出漂亮简洁的代码。Scala还把函数式和面向对象的编程思想很好地统一到了一种语言里,它比Java要明显简单一些(虽然它的类型体系(type system)和泛型(generics)需要花费差不同一个数量级的时间去理解,但是,它通常是框架开发者才需要考虑的问题,应用程序开发人员并不需要涉及)。它也使得从传统的面向对象/Java编程模式向函数式编程的转变变得更加容易——这对于编写并行或异步程序的开发人员尤其意义重大(这是因为现在芯片的主频已经达到了数个GHz,很难再有提升了;而芯片集成的核心数则在快速增长。)。你可以在最开始用面向对象的方法编程,然后当你需要它的好处时,就可以迁移到用不变状态(immutable state)函数式编程正变得越来越重要,因为我们总是希望能把问题变简单,并且在一个更高的层次上解决它(如闭包,高阶函数,模式匹配,单子(monad)等),同时我们还需要通过不变状态(immutable state)实现并发和异步。  

  Scala也有适当的混入(mixin)(特性(trait)) ,所以你不必去摆弄面向对象编程的缺陷来获得模块化的代码。如果你确实需要一些鸭子类型(duck typing),Scala甚至能为你提供构造类型(structural type)。  

  最让我印象深刻的一点就是它的核心语法极其精练简洁(它的语法手册只有大概Java的四分之一),但是其方式却更加强大和灵活,而且非常容易通过库来扩展,添加新的语义和功能。可以看看这个例子:Scala Actors。因此它非常适合用于创建嵌入式DSL或外部DSL 。有了它以后就真没必要再用Java,XPath ,XSLT,XQuery,JSP,JSTL,EL和SQL这些东西了——你可以在各种各样的场合使用DSL。  

  Scala确实需要花点时间去习惯——我承认第一次我看Scala时并不觉得顺眼——用了Java之后你就会习惯用一堆冗长的代码来做一点点事,刚开始时我们也都不会一看到几个符号就觉得有多惊讶。(我花了好长一段时间才习惯Scala里用_作“通配符”,因为在Scala里是用作标识符/方法)。  

  如果你一直在写Java,那么最开始确实会觉得Scala很不一样(如在声明方法/变量/参数时在类型或标识符上加上阶,虽然那样做的原因是为了能更方便地略去一多余的类型信息)。

  例如,在Java中的写法:
  1. List< String> list = new ArrayList< String>() 

  在Scala中的写法:

  1. val list = new List[String] 

  或者,如果你要指定确切的类型的话:

  1. val list : List[String] = new List[String]
  但是如果你坚持用上一段时间,Scala优美的一在很快就显现出来。它对Java里的许多地方进行了简化,让你可以用非常简洁的代码就描述出意图,而不用花上大段代码去实现细节——同时还为你提供了一条迁移到函数式编程的不错途径,这对于编写并发和分布式程序是非常有利的。

  我强烈建议你学习一下Scala:以开放的心态看看(当你的思维转过来后)你是否能发现它的美丽之处。


酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部