Scala簡(jiǎn)介
Scala是一門多范式的編程語(yǔ)言,一種類似java的編程語(yǔ)言,設(shè)計(jì)初衷是實(shí)現(xiàn)可伸縮的語(yǔ)言、并集成面向?qū)ο缶幊毯秃瘮?shù)式編程的各種特性。
scala是純粹的面向?qū)ο蟮恼Z(yǔ)言。java雖然是面向?qū)ο蟮恼Z(yǔ)言,但是它不是純粹的,因?yàn)閖ava的基本數(shù)據(jù)類型不是類,并且在java中還有靜態(tài)成員變量和靜態(tài)方法。相反,scala是純粹面向?qū)ο蟮模總€(gè)值都是對(duì)象,每個(gè)操作都是方法調(diào)用。
Scala的特性
1.面向?qū)ο筇匦?/h3>
Scala是一種純面向?qū)ο蟮恼Z(yǔ)言,每一個(gè)值都是對(duì)象。對(duì)象的數(shù)據(jù)類型以及行為由類和特征(Trait)描述。類抽象機(jī)制的擴(kuò)展有兩種途徑。一種途徑是子類繼承,另一種途徑是靈活的混入(Mixin)機(jī)制。這兩種途徑能避免多重繼承的種種問題。
2.函數(shù)式編程
Scala也是一種函數(shù)式語(yǔ)言,其函數(shù)也能當(dāng)成值來使用。Scala提供了輕量級(jí)的語(yǔ)法用以定義匿名函數(shù),支持高階函數(shù),允許嵌套多層函數(shù),并支持柯里化。Scala的CaseClass及其內(nèi)置的模式匹配相當(dāng)于函數(shù)式編程語(yǔ)言中常用的代數(shù)類型(AlgebraicType)。
更進(jìn)一步,程序員可以利用Scala的模式匹配,編寫類似正則表達(dá)式的代碼處理XML數(shù)據(jù)。在這些情形中,順序容器的推導(dǎo)式(comprehension)功能對(duì)編寫公式化查詢非常有用。
由于JVM不支持尾部遞歸,Scala也不能完全支持尾部遞歸優(yōu)化。不過,在簡(jiǎn)單的情況下,Scala編譯器可以把尾部遞歸優(yōu)化成循環(huán)。
4.靜態(tài)類型
Scala是具備類型系統(tǒng),通過編譯時(shí)的檢查,保證代碼的安全性和一致性。類型系統(tǒng)具體支持以下特性:
泛型類,型變注釋(VarianceAnnotation),類型繼承結(jié)構(gòu)的上限和下限,把類別和抽象類型作為對(duì)象成員,復(fù)合類型,引用自己時(shí)顯式指定類型,視圖,多態(tài)方法。
5.擴(kuò)展性
Scala的設(shè)計(jì)承認(rèn)一個(gè)事實(shí),即在實(shí)踐中,某個(gè)領(lǐng)域特定的應(yīng)用程序開發(fā)往往需要特定于該領(lǐng)域的語(yǔ)言擴(kuò)展。Scala提供了許多獨(dú)特的語(yǔ)言機(jī)制,可以以庫(kù)的形式輕易無縫添加新的語(yǔ)言結(jié)構(gòu):
任何方法可用作前綴或后綴操作符,可以根據(jù)預(yù)期類型自動(dòng)構(gòu)造閉包。聯(lián)合使用以上兩個(gè)特性,使你可以定義新的語(yǔ)句而無須擴(kuò)展語(yǔ)法也無須使用宏之類的元編程特性。
5.使用Scala的框架
Lift是一個(gè)開源的Web應(yīng)用框架,旨在提供類似RubyonRails的東西。因?yàn)長(zhǎng)ift使用了Scala,所以Lift應(yīng)用程序可以使用所有的Java庫(kù)和Web容器。
scala語(yǔ)言主要應(yīng)用領(lǐng)域
cala運(yùn)行于JVM之上,并且它可以訪問任何的java類庫(kù)并且與java框架進(jìn)行互操作,scala也大量重用了java類型和類庫(kù)。
大數(shù)據(jù)的開發(fā)語(yǔ)言是Scala的原因:
1:大數(shù)據(jù)的本身是計(jì)算數(shù)據(jù),而Scala即有面向?qū)ο蠼M織項(xiàng)目工程的能力,又有計(jì)算數(shù)據(jù)的功能。
2:現(xiàn)在大數(shù)據(jù)事實(shí)上的計(jì)算標(biāo)準(zhǔn)框架Spark,它是用Scala開發(fā)的,因?yàn)橛?jì)算數(shù)據(jù),Scala它是函數(shù)式編程,它實(shí)現(xiàn)算法非常簡(jiǎn)潔優(yōu)雅。
例:kafka,它是一個(gè)消息中間件,如果外部數(shù)據(jù)要流進(jìn)大數(shù)據(jù)中心,我們一般都要用kafka作適配器,那如果大數(shù)據(jù)中心的數(shù)據(jù)流到外部,也是用kafka(如Spark計(jì)算的數(shù)據(jù)要交給HBASE或MySql,期間我們都會(huì)用kafka),很多的大數(shù)據(jù)組件都是用的Scala編寫的,所以,如果你想成為一個(gè)較高級(jí)的大數(shù)據(jù)開發(fā)高手,你一定要掌握Scala。
-
scala
+關(guān)注
關(guān)注
0文章
42瀏覽量
6398
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論