感謝僅僅只是個(gè)人學(xué)習(xí)得筆記,不代表一定就是對得,僅供參考。
1、計(jì)算機(jī)語言可以分為兩大類:編譯型,解釋型。
(1)編譯型得代表是C語言。
(2)解釋型得代表為Python語言。
(3)java是一個(gè)“混血兒”,既是編譯型,也是解釋型。
java需要編譯,編譯成字節(jié)碼之后可以解釋執(zhí)行,或者預(yù)編譯成機(jī)械碼直接執(zhí)行。
很多時(shí)候期望代碼在啟動(dòng)得時(shí)候慢一些,執(zhí)行得時(shí)候快一些,就像idea與tomcat,啟動(dòng)得時(shí)候有些慢,但執(zhí)行起來要快。
(4)C語言具有可移植性,書寫一次代碼,然后面對不同得平臺(tái)使用不同得編譯器編譯執(zhí)行。
java語言具有可移動(dòng)性:一次編譯,到處運(yùn)行。java編譯之后得字節(jié)碼是和平臺(tái)無關(guān)得,java得可移動(dòng)性得特點(diǎn)(好處)與JVM有關(guān)。JVM才是核心。
(5)編譯器。編譯型得語言與解釋型得語言根本區(qū)別在哪里?
是否是強(qiáng)類型。類型得本義就是寬度或者說是字節(jié)大小,比如在java中,int是4個(gè)字節(jié),long是8個(gè)字節(jié)等等。C語言中有類型,java中也有類型,但是很多解釋型語言都沒有類型。
編譯型得語言需要類型,因?yàn)樽罱K要將代碼中得邏輯編譯成機(jī)械碼,運(yùn)行得時(shí)候需要使用內(nèi)存開辟足夠得空間,這樣才能按照業(yè)務(wù)邏輯放置數(shù)據(jù)不溢出。
解釋型得語言在運(yùn)行得時(shí)候去解釋,一般按照文本字符串去處理這些東西,解釋型語言沒有類型得概念,沒有提前決定空間大小,所以這也是為什么解釋型語言要比編譯型語言慢。
2、Scala可以運(yùn)行在JVM之上。JVM雖然是java得虛擬機(jī),但是它和java沒什么太大得聯(lián)系,JVM并不是只能運(yùn)行java語言,JVM和java并不是一對一得關(guān)系,JVM與字節(jié)碼是一對一得關(guān)系。
3、從編程風(fēng)格上,語言可以分為:面向過程得,面向?qū)ο蟮?,函?shù)式得。
面向過程得:C語言(其實(shí)C語言三種模式都可以支持,但一般認(rèn)為C是面向過程得)
第壹類值:基本類型+指針
面向?qū)ο蟮茫簀ava語言
第壹類值:基本類型+對象類型
函數(shù)式得:scala語言
第壹類值:基本類型+對象類型+函數(shù)(一個(gè)變量可以存函數(shù)(是能夠存下整個(gè)函數(shù),不是函數(shù)得返回值))
4、Scala是一個(gè)面向?qū)ο蟮煤瘮?shù)式編程語言。
5、Scala得特點(diǎn)
(1)Scala可以與java無縫銜接,在scala代碼中可以導(dǎo)入java得jar包。
(2)類型推斷,scala可以推斷出定義得變量得類型,并且推斷不代表糊弄。scala一定是可以推斷出一個(gè)確定得類型,并且這個(gè)變量得類型推斷出來后就不能再改變。傳參得時(shí)候需要開發(fā)者明文寫出類型,函數(shù)得參數(shù)scala無法推斷類型。無法推斷類型得一定會(huì)報(bào)錯(cuò)。
(3)并發(fā)和分布式。
(4)特質(zhì)。scala中有一個(gè)trait,它可以讓scala多繼承與多實(shí)現(xiàn)。
(5)模式匹配。
(6)高階函數(shù)。
6、Scala使用
作為開發(fā)者使用Scala得時(shí)候,需要jdk以及scala得sdk(編譯器)。
作為使用者運(yùn)行Scala得時(shí)候,需要jdk以及jre。
參考文獻(xiàn):
[1] Scala自己:感謝分享特別scala-lang.org/
[2] 馬士兵教育:感謝分享特別mashibing感謝原創(chuàng)分享者/subject/1
[3] CSDN博客:感謝分享blog.csdn感謝原創(chuàng)分享者/qq_36383623/article/details/99288638