Scala之旅:前言

Scala之旅

A Tour of Scala

Scala是一个现代的多范式编程语言,可将通用的编程模式以一种简明、简练并且类型安全的方式表达。Scala语言平滑的继承了面向对象以及函数式语言的特性。

Scala是面向对象的

Scala是纯粹的面向对象语言,因为Scala中的每一个值(value)都是一个对象(object)。对象的类型(type)与行为(behaviour)通过类(classes)与特征(traits)来描述。类借由子类(subclassing)以及通过灵活的基于混入的类合成(mixin-based composition)机制代替多重继承(multiple inheritance)而实现了扩展。

Scala是函数式的

Scala同时也是函数式语言,因为每一个函数(function)都是一个值(value)。Scala提供了一个轻量级语法用于定义匿名函数(anonymous function)。它支持高阶函数(higher-order function),允许内嵌函数(nested function),并支持柯里化(currying)。Scala的case类以及其内置的模式匹配(pattern matching)相当于在很多函数式语言中使用的代数类型(algebraic type)。

更进一步,程序员可以利用Scala模式匹配的概念,在右侧忽略序列模式(right-ignoring sequence pattern)(译者注:此为Scala的正则表达式)的帮助下处理XML数据。从这个角度而言,序列推导式(sequence comprehensions)对于编写公式化查询非常有用。这些特性使得Scala成为开发诸如Web服务等应用的一个理想选择。

Scala是静态类型的

Scala具备表达类型系统(expressive type system),该系统以静态方式强制抽象化的使用以一种安全并且一致的形式进行。这个类型系统具体支持:

  • 泛型类(generic classes)
  • 型变注释(variance annotations)
  • 类型继承结构的上限和下限
  • 把内置类和抽象类型作为对象成员
  • 复合类型(compound types)
  • 指定类型的自我引用
  • 视图
  • 多态方法(polymorphic methods)

本地类型推断(local type interence)机制令程序员无需使用过剩的类型信息为程序做注解。综合而言,这些特性为编程抽象化的安全重用以及软件的类型安全扩展提供了强大的基础。

Scala是可扩展的

实际开发中,特定领域(domain-specific)应用的开发往往需要特定领域语言(DSL)的扩展。Scala将语言机制独特的融合到一起,使得增添新的语言构成可以通过库的形式简单而平滑的实现:

  • 任意方法都可以被当做infix或postfix操作符来使用
  • 闭包(closure)被自动创建,视期待类型(expected type,又做目标类型target typing)而定

将两种特性一起使用有助于在不扩展语法并不使用类似宏的元编程功能的情况下定义新的声明。

Scala可在Java与.NET平台上互操作

Scala与当下流行的JRE有着良好的互操作性。具体来说,Scala与主流的面向对象的Java编程语言有着平滑的交互。Scala的编译模型与Java一样(分离编译,动态类加载),并可以访问上千现成的高质量类库。对.NET框架(CLR)也同样支持。

Advertisements
This entry was posted in developer and tagged . Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s