可扩展的编程语言——Scala
一、Scala是什么
Scala是一種多范式的編程語(yǔ)言,其設(shè)計(jì)的初衷是要集成面向?qū)ο缶幊毯秃瘮?shù)式編程的各種特性。Scala運(yùn)行于Java平臺(tái)(Java虛擬機(jī)),并兼容現(xiàn)有的Java程序。
? Scala語(yǔ)言的名稱(chēng)來(lái)自于"可伸展的語(yǔ)言"。之所以這樣命名,是因?yàn)樗辉O(shè)計(jì)成可以隨著使用者的需求而擴(kuò)展。Scala的應(yīng)用范圍很廣,從編寫(xiě)簡(jiǎn)單腳本,到建立大型系統(tǒng)。
? 它在許多方面體現(xiàn)了面向?qū)ο蠛秃瘮?shù)式編程的熔合;或許這種熔合比其他那些廣泛使用的語(yǔ)言體現(xiàn)得還要深入。在可伸展性方面,這兩種編程風(fēng)格具有互補(bǔ)的力量。SCala 的函數(shù)式編程簡(jiǎn)化了用簡(jiǎn)單部件搭建實(shí)際應(yīng)用的過(guò)程。它的面向?qū)ο筇匦杂质顾阌跇?gòu)造大型系統(tǒng)并使它們適應(yīng)新的需求。Scala中這兩種風(fēng)格的組合使得表達(dá)新的編程模式和新的組件抽象成為可能。同樣也讓這種易讀、簡(jiǎn)潔的編程風(fēng)格成為順理成章的事。而且由于 SCala 良好的延展性,因此用它來(lái)編程也充滿(mǎn)樂(lè)趣。
二、Scala能做什么
從技術(shù)層面上講,Scala是一種把面向?qū)ο蠛秃瘮?shù)式編程理念加入靜態(tài)類(lèi)型語(yǔ)言的混合體,它可以
- 運(yùn)行在標(biāo)準(zhǔn)的Java平臺(tái)上,可以與所有的Java庫(kù)無(wú)縫交互;
- 可以編寫(xiě)腳本,把Java組建組合起來(lái);
- 更能發(fā)揮它力量的地方,在于用它來(lái)建立大型系統(tǒng)或可重用控件的架構(gòu)。
三、Scala的優(yōu)點(diǎn)
1.優(yōu)雅:這是框架設(shè)計(jì)師第一個(gè)要考慮的問(wèn)題,框架的用戶(hù)是應(yīng)用開(kāi)發(fā)程序員,API是否優(yōu)雅直接影響用戶(hù)體驗(yàn)。
2.速度快:Scala語(yǔ)言表達(dá)能力強(qiáng),一行代碼抵得上Java多行,開(kāi)發(fā)速度快;Scala是靜態(tài)編譯的,所以和JRuby,Groovy比起來(lái)速度會(huì)快很多。
3.能融合到Hadoop生態(tài)圈:Hadoop現(xiàn)在是大數(shù)據(jù)事實(shí)標(biāo)準(zhǔn),Spark并不是要取代Hadoop,而是要完善Hadoop生態(tài)。JVM語(yǔ)言大部分可能會(huì)想到Java,但Java做出來(lái)的API太丑,或者想實(shí)現(xiàn)一個(gè)優(yōu)雅的API太費(fèi)勁。
四、Scala的特征
- 一致性: 盡管Scala融合了靜態(tài)類(lèi)型系統(tǒng)、面向?qū)ο蟆⒑瘮?shù)式編程等語(yǔ)言特性,但卻很少能看出融合的痕跡。Scala是我見(jiàn)到融合最多語(yǔ)言特性而又不顯得雜亂的編程語(yǔ)言之一。
- 類(lèi)型安全:Scala創(chuàng)始人是教授,他先帶領(lǐng)創(chuàng)建了Java 5編譯器,而后覺(jué)得Java有太多羈絆而發(fā)明了Scala。 Scala編譯器和類(lèi)型系統(tǒng)非常強(qiáng)大,它的目標(biāo)是盡量把軟件錯(cuò)誤消滅在編寫(xiě)過(guò)程中。 Scala類(lèi)型系統(tǒng)是圖靈完備的,甚至可以在編譯期間解決問(wèn)題。
- 面向?qū)ο? Scala是面向?qū)ο蟮木幊陶Z(yǔ)言,所有的變量和方法都封裝在對(duì)象中,可以把信息封裝起來(lái)供外部使用。
- 函數(shù)式編程:Scala同時(shí)又是函數(shù)式編程語(yǔ)言,函數(shù)可以獨(dú)立存在,可以定義一個(gè)函數(shù)作為另一個(gè)函數(shù)的返回值,也可以接受函數(shù)作為函數(shù)的參數(shù)。這給組合函數(shù)帶來(lái)了很大的便利。如何把面向?qū)ο缶幊绦稳莩纱罘e木的話(huà),函數(shù)式編程就像拼線(xiàn)條,更靈活和更有創(chuàng)意。
- 異步編程: 由于函數(shù)式編程提倡變量不可變,使異步編程變得非常容易。同時(shí)Scala提供的Future, 和akka類(lèi)庫(kù),使得異步編程變得非常容易。
- 基于JVM: Scala會(huì)被編譯成為jvm bytecode,所以Scala能無(wú)縫集成已有的Java類(lèi)庫(kù)。你可以非常自然的使用已經(jīng)存在的非常龐大且穩(wěn)定的Java類(lèi)庫(kù),比如小巧好用的apache.common.*, 或者Java上的各種工具類(lèi)庫(kù)。
五、總結(jié)
Scala的追求不在于Ruby的“好玩”,Python的“簡(jiǎn)單“,Scala的追求在于速度與性能的提升,怎樣有效率就怎樣弄。Scala不把程序員當(dāng)傻子,Scala "Don Giovanni"項(xiàng)目創(chuàng)始人馬丁·奧德斯基在視頻中說(shuō)的很清楚:“Scala現(xiàn)在是為聰明人創(chuàng)造的,以后也是為聰明人服務(wù)的。”所以不同于Python讓程序員用一種方法做所有事情,Scala提供一整套工具,讓程序員自由選擇,無(wú)論是mutable數(shù)據(jù)結(jié)構(gòu),immutable數(shù)據(jù)結(jié)構(gòu),并行(parallel)數(shù)據(jù)結(jié)構(gòu)。然后在這些選擇中,Scala再針對(duì)他們進(jìn)行算法層面的特殊優(yōu)化。Scala相信程序員的聰明才智,讓程序員自行選擇合適的結(jié)構(gòu),以針對(duì)變化萬(wàn)千的任務(wù)需求,這點(diǎn)是Scala做得極好的地方。
本文部分內(nèi)容參考
什么嗎是Scala?為什么要學(xué)Scala?
Scala 是一門(mén)怎樣的語(yǔ)言,具有哪些優(yōu)缺點(diǎn)?
編程語(yǔ)言scala有哪些特點(diǎn)
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的可扩展的编程语言——Scala的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Docker原理之UnionFS
- 下一篇: redis核心技术与实战(二)缓存应用篇