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的企圖心與挑戰」,那裡有比較詳細的說明。
沒有留言:
張貼留言