1. 程式人生 > >Scala入門-大資料雲端計算下的開發語言

Scala入門-大資料雲端計算下的開發語言

Scala程式語言抓住了很多開發者的眼球。如果你粗略瀏覽Scala的網站,你會覺得Scala是一種純粹的 面向物件程式語言,而又無縫地結合了指令式程式設計和 函數語言程式設計風格。Christopher Diggins認為:

不太久之前程式語言還可以毫無疑意地歸類成“命令式”或者“函式式”或者“面向物件”。Scala代表了一個新的語言品種,它抹平了這些人為劃分的界限。

根據David Rupp在部落格中的說法,Scala可能是下一代Java。這麼高的評價讓人不禁想看看它到底是什麼東西。

Scala有幾項關鍵特性表明了它的面向物件的本質。例如,Scala中的每個值都是一個物件,包括基本資料型別(即布林值、數字等)在內,連函式也是物件。另外,類可以被子類化,而且Scala還提供了基於mixin的組合(mixin-based composition)。

與只支援單繼承的語言相比,Scala具有更廣泛意義上的類重用。Scala允許定義新類的時候重用“一個類中新增的成員定義(即相較於其父類的差異之處)”。Scala稱之為mixin類組合。

Scala還包含了若干函式式語言的關鍵概念,包括高階函式(Higher-Order Function)、區域性套用(Currying)、 巢狀函式(Nested Function)、序列解讀(Sequence Comprehensions)等等。

Scala是靜態型別的,這就允許它提供 泛型類、 內部類、甚至 多型方法(Polymorphic Method)。另外值得一提的是,Scala被特意設計成能夠與 

Java和 .NET互操作。Scala當前版本還不能在.NET上執行(雖然上一版可以-_-b),但按照計劃將來可以在.NET上執行。

Scala可以與Java互操作。它用scalac這個 編譯器把 原始檔編譯成Java的 class檔案(即在JVM上執行的 位元組碼)。你可以從Scala中呼叫所有的Java類庫,也同樣可以從Java應用程式中呼叫Scala的程式碼。用David Rupp的話來說,

它也可以訪問現存的數之不盡的Java類庫,這讓(潛在地)遷移到Scala更加容易。

這讓Scala得以使用為Java1.4、5.0或者6.0編寫的巨量的Java類庫和框架,Scala會經常性地針對這幾個版本的Java進行測試。Scala可能也可以在更早版本的Java上執行,但沒有經過正式的測試。Scala以BSD許可釋出,並且數年前就已經被認為相當穩定了。

說了這麼多,我們還沒有回答一個問題:“為什麼我要使用Scala?”Scala的設計始終貫穿著一個理念:

創造一種更好地支援元件的語言。(《The Scala Programming Language》,Donna Malayeri)

也就是說軟體應該由可重用的部件構造而成。Scala旨在提供一種程式語言,能夠統一和一般化分別來自 面向物件和函式式兩種不同風格的關鍵概念。

藉著這個目標與設計,Scala得以提供一些出眾的特性,包括:

* 面向物件風格

* 函式式風格

* 更高層的併發模型

Scala把Erlang風格的基於actor的併發帶進了 JVM。開發者可以利用Scala的actor模型在JVM上設計具伸縮性的併發應用程式,它會自動獲得 多核心處理器帶來的優勢,而不必依照複雜的Java執行緒模型來編寫程式。

* 輕量級的函式語法

o 高階

o 巢狀

o 區域性套用(Currying)

o 匿名

* 與XML整合

o 可在Scala程式中直接書寫XML

o 可將XML轉換成Scala類

* 與Java無縫地互操作

Scala的風格和特性已經吸引了大量的開發者,比如Debasish Ghosh就覺得:

我已經把玩了Scala好一陣子,可以說我絕對享受這個語言的創新之處。

總而言之,Scala是一種函式式 面嚮物件語言,它融匯了許多前所未有的特性,而同時又運行於JVM之上。隨著開發者對Scala的興趣日增,以及越來越多的工具支援,無疑Scala語言將成為你手上一件必不可少的工具。

內容詳情:https://www.roncoo.com/course/view/bbd372aa876e4d7aa37e533a45bf7bf2