scala学习(一)

来源:互联网 发布:java mysql数据库连接 编辑:程序博客网 时间:2024/05/18 03:09

    当前技术发展那么快,作为一个学技术的,一年学习一门编程语言(当然啦,这里是学会,应用框架,并不是需要十分精通),多睁开眼睛看看,培养自身学习兴趣,人们对新鲜事物总是有浓厚的兴趣的。

    大学时开始搞校园开发,java出身的,情感难割舍,总是选择都会和java沾边的,也曾经买了ruby/rails书籍,也是浏览完,没有深入学习,毕竟工作中难以应用到,抛不开java世界,就选择jvm上面能跑的,就看中了jruby和grovvy,打算学习grovvy的,也把gorvvy in action看的差不多了,感觉确实比java有不少进步。但看到了grovvy创始人James Strachan的博客《scala将取代java/javac?》中:

     从长久来看,谁能取代javac 呢?当然,像Ruby,Groovy,Python,还有JavaScript这些动态语言在过去几年里很受欢迎——很多人喜欢他们。 

我认为将来可能替代javac的就是Scala 。它实在太让我印象深刻了。我甚至可以诚实地说,如果有人在2003年把Martin Odersky,Lex Spoon以及Bill Venners写的那本《Programming in Scala》拿给我看了的话,那我根本就不会再去发明Groovy了。

 

     此篇文章对scala兴趣马上就上来了,业余时间就着手开始学习。目前scala的6月开发语言排行榜是第43名-_-! 看起来现阶段确实不怎么流行。scala是面向对象的又是函数式的编程语言,对于我这种面向对象教条比较深的人,学一下函数式编程方式确实也开了眼界。

     scala是兼容java的,能调用java现有的类库,也能编译成class在jvm上面跑(当然也有.net环境的变体啦)。

     scala更简洁,相比如下代码:

// 在Java里
class MyClass {
  private int index;
  private String name;
  public MyClass(int index, String name) {
    this.index = index;
    this.name = name;
  }
}
在 Scala 里,你会写成这样:
class MyClass(index: Int, name: String)

确实简洁了不少,但在我看来这个简洁并没有什么惊喜,为啥,因我我java就像初恋情人,情有独钟,scala最为后辈,有这样的简化是合情理的。

scala是比较高级的,看看下面的例子:

// 在Java里
boolean nameHasUpperCase = false;
for (int i = 0; i < name.length(); ++i) {
  if (Character.isUpperCase(name.charAt(i))) {
    nameHasUpperCase = true;
    break;
  }
}
在 Scala 里,你可以写成:
val nameHasUpperCase = name.exists(_.isUpperCase)

    看了这段比较,让我想起了写sql语句,我们只关心where条件需要匹配什么数据,不关心数据库底层是怎么过滤每一行数据的,更高层次的编程。

scala是静态类型的,这个我觉得很重要,比起动态语言,例如ruby、grovvy,静态语言在大规模团体开发等有明显优势,ide也支持得可以很到位。

原创粉丝点击