2011年4月20日 星期三

1-3. Scala的特性

Scala 包含許許多多的特性,這些特性來自於 Scala 的目的。Scala 的目的是想要解決很多很多的事,最好把所有關於程式設計相關的事,全部使用同一種程式語言來解決。

Scala 具有各種不同的面貌:

1.整合命令式(Imperative)與函數式(Functional)兩種語言模式。

2.使用強制型態,但維持大部分的動態型態的方便性:使用型態推論(Type Inference),允許在 Compiler 可自動推論的情況下,不需宣告變數的特性。

3.Scala主要是 Compiler 的運作模式,但它也可當成 interpreter 來使用。

4.Scala可以當成 script 語言,也具有一個直譯環境,讓你直接敲入 Scala 程式碼,馬上執行,就像久遠以前的 Basic 直譯環境。

5.Scala是一個純 OO的語言,每個東西都是 object,但為兼顧primitive data的效能優點,compiler會針對 Int / Float 等數值資料,compile 出來的 bytecode使用 primitive type。

6.Scala的效能與 Java 的效能相當,使用 Scala 撰寫程式並不會損壞效能。

7.Scala與Java可以完全混用。

8.Scala可以編譯出 JVM 的 bytecode,也可以編譯出.Net的程式碼。

9.Scala充分支援generic(泛型),並且導入更廣泛的type system。

10.Scala相當注重concurrency開發,除導入有名 Actor Model 外,並大量要求 programmer 盡量使用 concurrency 安全的寫作方式。

11.Scala在語言中直接支援 XML,讓XML的處理顯得更方便。

12.Scala的Pattern Match是很強大的功能,可以大幅簡化比較的工作。

13.DSL:使用Scala可以快速建立領域相關的語言(Domain Specific Language)。

以上,這些特性造成 Scala功能強大的原因,但也造成 Scala 學習起來比較艱難的原因。

關於Scala的設計目的請參閱 「Scala的企圖心與挑戰」,那裡有比較詳細的說明。

沒有留言:

張貼留言