当前技术发展那么快,作为一个搞技术的,一年学习一门编程语言(当然啦,这里是学会,应用框架,并不是需要十分精通),多睁开眼睛看看,培养自身学习兴趣,人们对新鲜事物总是有浓厚的兴趣的,所以前段时间就开始接触scala这门新兴语种了。顺便读了读这本《快学Scala》,感觉不错,很明快的一本书。
大学时开始搞校园开发,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在开发语言排行榜中还比较靠后,看起来现阶段确实不怎么流行。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也支持得可以很到位。试读章节也通过简单例子介绍了scala与java的不同之处。
怎么样,Scala还是很有前途的吧!Come on,快学Scala,就读《快学Scala》!