Scala初探
2010-12-28 22:29 RayLee 阅读(358) 评论(0) 编辑 收藏 举报如果你平时不关心编程语言的发展,可能就不知道还有其它语言的存在以及语言的发展方向。当前,社区正热衷于函数式编程,它或许是下一代编程语言的趋势。Scala正是函数式编程的一种语言,与之相应的还有微软的F#。
有了C,C++,Java,为什么要学习Scala? 作为一个以Java为主要工具的程序员,我想谈一下自己的感受。
学习一种新的语言使我更深刻的理解旧的语言
Java语言的一些概念是不是仍然很抽象,不很清晰?也许你已经能够熟练的使用Java,但藏在Java背后的一些设计思想你是否明白? 当你了解了Scala,并把它与Java比较后,一些较模糊的问题渐渐就清楚了。
Java是一种面向对象的语言,但不是纯粹的面对对象语言。Java语言中包含primitive type和静态类方法,这些都不是面向对象的思想。在学习Java的过程,你很可能就忽略了这些细节,因为文档中都强调Java是面向对象的。
Java中的String是immutable的,String类型的对象在多线程环境中是不需要互斥访问的,因为它是immutable的。
还有更多这样的细小问题,或关于使用优劣,或关于设计思想,总之,有了比较才会明白的更多,才能更好的选择。
Scala表达精简
语言是思想的体现,在准确的表达思想时,力求简单的表示方法。Scala在这方面有很大的进步。来看看几个例子。
编写一个Student类,包含两个私有成员变量,name和age。
Java实现:
class Student { private String name; private int age; public Student(String name, int age) { this.name = name; this.age = age; } }
Scala实现:
class Student(name: String, age: Int)
查找一个字符串中是否包含大写字母
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)
Scala的这种精简大大提高了程序编写的速度,很有吸引力。
一种语言的出现,必定是要解决之前语言中存在的某些问题。从这样一个更高的层面来掌握你所使用的工具,将大大提高理解的深度。Scala现在还不会作为我项目的主要工具,但我认为学习它仍然很有意义。