本文僅僅只是個(gè)人學(xué)習(xí)的筆記,不代表一定就是對(duì)的,僅供參考。
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語言具有可移植性,書寫一次代碼,然后面對(duì)不同的平臺(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并不是一對(duì)一的關(guān)系,JVM與字節(jié)碼是一對(duì)一的關(guān)系。
3、從編程風(fēng)格上,語言可以分為:面向過程的,面向?qū)ο蟮模?span id="dcl50k4" class="wpcom_tag_link">函數(shù)式的。
面向過程的:C語言(其實(shí)C語言三種模式都可以支持,但一般認(rèn)為C是面向過程的)
第一類值:基本類型+指針
面向?qū)ο蟮模簀ava語言
第一類值:基本類型+對(duì)象類型
函數(shù)式的:scala語言
第一類值:基本類型+對(duì)象類型+函數(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官網(wǎng):https://www.scala-lang.org/
[2] 馬士兵教育:https://www.mashibing.com/subject/1
[3] CSDN博客:https://blog.csdn.net/qq_36383623/article/details/99288638