Scala Beginner

开始学习Scala,下面的内容大部分从Scala官网翻译过来,有几个地方翻译的不是很好,表述不清楚的地方大家可以浏览Scala官网,多指教。

 

Scala offical website is http://scala-lang.org

I think scala-lang means scalable language.

 

What is Scala?

1A Scalable Language(可扩展语言)

Scala is an acronym for "Scalable Language".

Scala"Scalable Language"的缩写。

 

对于名称的理解,Scalable Language意味着既可以书写一行语句并输出结果,也可以完成大型、复杂的任务(比如TwitterLinkedInIntel等)。

 

2Object-Oriented(面向对象)

Scala是存粹的面向对象语言。

从概念上说,每个值(value)都是对象,每个操作都是函数调用。

Scala以类和接口的方式支持高级的组件架构(component architectures )。

 

许多其他语言中的设计模式,在Scala中得到原生态的支持。

比如,通过object定义支持单例模式,通过模式匹配支持访问者模式。利用隐式类,Scala甚至允许对已经存在的类增加新的操作,无论这些已经存在的类是Scala中的还是Java中的。

 

3Functional(函数式)

尽管Scala语法相当传统,但是Scala是成熟的(full-blown)函数式语言。

Scala有你期望的所有(函数式语言特征),包括一等函数(first-class functions,高效且数据结构固定的库,以及基于变化的不变性偏好(a general preference of immutability over mutation.)。

 

与其他函数式语言不同,Scala允许(开发者)以一种渐进的、容易的方式迁移到函数式风格。开始时,你可以将Scala认为是没有分号的Java语言。逐渐的可以利用安全的函数模式替代程序中易变的状态。作为Scala程序员,我们认为这种进阶方式是个好主意。同时Scala不是死板的语言,你可以以你喜欢的任何方式使用它。

 

4Seamless Java Interop(Java的无缝交互)

Scala运行在JVM上。Java的类和Scala的类可以自由混合使用,不论他们是在一个项目(project)中还是在不同项目中。二者之间甚至可以相互引用,Scala编译器包含Java编译器的一个子集(subset),所以Scala编译器可以理解这种循环依赖。

 

Scala来说,Java类库,框架,工具都是可以使用的。Build工具,比如maven,集成开发环境,比如EclipseIntelliJNetbeans,框架,比如Spring或者Hibernate,都可以无缝的应用于ScalaScala可以运行在所有的通用JVM上以及Android上。

 

5Functions are Objects(函数是对象)

Scala的方式是开发一个小系列的构造,并可以灵活的结合。这也暗示了Scala面向对象和函数式的性质。面向对象与函数式二者高度统一,所以可以将二者认为是硬币的正反面。

 

例子:Scala中的函数是对象,函数的类型是正规的类。在HaskellF#或者ML语言中的数据类型,在Scala中以类继承方式实现。任意类都可以实现模式匹配。

 

6Future-Proof(与时俱进)

对于提供一致性和同步处理的可扩展服务软件,多核并行效率,云的分布式处理,Scala很有优势。

 

函数式特征使得Scala可以编写安全高效的多线程代码。Scala对于易变状态的较少依赖,以及Scala的特征和actors,这些为在高层次抽象组织一致性系统提供了强大工具。

 

7Fun(乐趣)

最重要的是,Scala乐趣无穷!

posted @ 2015-05-24 20:24  超仔  阅读(232)  评论(0编辑  收藏  举报