一、Scala是什么
Scala是一種多范式的編程語言,其設計的初衷是要集成面向對象編程和函數式編程的各種特性。Scala運行于Java平臺(Java虛擬機),并兼容現有的Java程序。
? Scala語言的名稱來自于"可伸展的語言"。之所以這樣命名,是因為它被設計成可以隨著使用者的需求而擴展。Scala的應用范圍很廣,從編寫簡單腳本,到建立大型系統。
? 它在許多方面體現了面向對象和函數式編程的熔合;或許這種熔合比其他那些廣泛使用的語言體現得還要深入。在可伸展性方面,這兩種編程風格具有互補的力量。SCala 的函數式編程簡化了用簡單部件搭建實際應用的過程。它的面向對象特性又使它便于構造大型系統并使它們適應新的需求。Scala中這兩種風格的組合使得表達新的編程模式和新的組件抽象成為可能。同樣也讓這種易讀、簡潔的編程風格成為順理成章的事。而且由于 SCala 良好的延展性,因此用它來編程也充滿樂趣。
二、Scala能做什么
從技術層面上講,Scala是一種把面向對象和函數式編程理念加入靜態類型語言的混合體,它可以
- 運行在標準的Java平臺上,可以與所有的Java庫無縫交互;
- 可以編寫腳本,把Java組建組合起來;
- 更能發揮它力量的地方,在于用它來建立大型系統或可重用控件的架構。
三、Scala的優點
1.優雅:這是框架設計師第一個要考慮的問題,框架的用戶是應用開發程序員,API是否優雅直接影響用戶體驗。
2.速度快:Scala語言表達能力強,一行代碼抵得上Java多行,開發速度快;Scala是靜態編譯的,所以和JRuby,Groovy比起來速度會快很多。
3.能融合到Hadoop生態圈:Hadoop現在是大數據事實標準,Spark并不是要取代Hadoop,而是要完善Hadoop生態。JVM語言大部分可能會想到Java,但Java做出來的API太丑,或者想實現一個優雅的API太費勁。
四、Scala的特征
- 一致性: 盡管Scala融合了靜態類型系統、面向對象、函數式編程等語言特性,但卻很少能看出融合的痕跡。Scala是我見到融合最多語言特性而又不顯得雜亂的編程語言之一。
- 類型安全:Scala創始人是教授,他先帶領創建了Java 5編譯器,而后覺得Java有太多羈絆而發明了Scala。 Scala編譯器和類型系統非常強大,它的目標是盡量把軟件錯誤消滅在編寫過程中。 Scala類型系統是圖靈完備的,甚至可以在編譯期間解決問題。
- 面向對象: Scala是面向對象的編程語言,所有的變量和方法都封裝在對象中,可以把信息封裝起來供外部使用。
- 函數式編程:Scala同時又是函數式編程語言,函數可以獨立存在,可以定義一個函數作為另一個函數的返回值,也可以接受函數作為函數的參數。這給組合函數帶來了很大的便利。如何把面向對象編程形容成搭積木的話,函數式編程就像拼線條,更靈活和更有創意。
- 異步編程: 由于函數式編程提倡變量不可變,使異步編程變得非常容易。同時Scala提供的Future, 和akka類庫,使得異步編程變得非常容易。
- 基于JVM: Scala會被編譯成為jvm bytecode,所以Scala能無縫集成已有的Java類庫。你可以非常自然的使用已經存在的非常龐大且穩定的Java類庫,比如小巧好用的apache.common.*, 或者Java上的各種工具類庫。
五、總結
Scala的追求不在于Ruby的“好玩”,Python的“簡單“,Scala的追求在于速度與性能的提升,怎樣有效率就怎樣弄。Scala不把程序員當傻子,Scala "Don Giovanni"項目創始人馬丁·奧德斯基在視頻中說的很清楚:“Scala現在是為聰明人創造的,以后也是為聰明人服務的。”所以不同于Python讓程序員用一種方法做所有事情,Scala提供一整套工具,讓程序員自由選擇,無論是mutable數據結構,immutable數據結構,并行(parallel)數據結構。然后在這些選擇中,Scala再針對他們進行算法層面的特殊優化。Scala相信程序員的聰明才智,讓程序員自行選擇合適的結構,以針對變化萬千的任務需求,這點是Scala做得極好的地方。
本文部分內容參考
什么嗎是Scala?為什么要學Scala?
Scala 是一門怎樣的語言,具有哪些優缺點?
編程語言scala有哪些特點