《程序是怎樣跑起來(lái)的》一書(shū)從計(jì)算機(jī)的內(nèi)部結(jié)構(gòu)開(kāi)始講起,以圖配文的形式詳細(xì)講解了二進(jìn)制、內(nèi)存、數(shù)據(jù)壓縮、源文件和可執(zhí)行文件、操作系統(tǒng)和應(yīng)用程序的關(guān)系、匯編語(yǔ)言、硬件控制方法等內(nèi)容,目的是讓讀者了解從用戶(hù)雙擊程序圖標(biāo)到程序開(kāi)始運(yùn)行之間到底發(fā)生了什么。
程序是怎樣跑起來(lái)的電子書(shū)預(yù)覽
程序相關(guān)知識(shí)
我們知道,Go 程序文件在機(jī)器看來(lái)不過(guò)是一堆二進(jìn)制位。我們能讀懂,是因?yàn)?Goland 按照 ASCII 碼(實(shí)際上是 UTF-8)把這堆二進(jìn)制位進(jìn)行了編碼。例如,把 8個(gè) bit 位分成一組,對(duì)應(yīng)一個(gè)字符,通過(guò)對(duì)照 ASCII 碼表就可以查出來(lái)。
當(dāng)把所有的二進(jìn)制位都對(duì)應(yīng)成了 ASCII 碼字符后,我們就能看到有意義的字符串。它可能是關(guān)鍵字,例如:package;可能是字符串,例如:“Hello World”。
詞法分析其實(shí)干的就是這個(gè)。輸入是原始的 Go 程序文件,在詞法分析器看來(lái),就是一堆二進(jìn)制位,根本不知道是什么東西,經(jīng)過(guò)它的分析后,變成有意義的記號(hào)。簡(jiǎn)單來(lái)說(shuō),詞法分析是計(jì)算機(jī)科學(xué)中將字符序列轉(zhuǎn)換為標(biāo)記(token)序列的過(guò)程。
我們來(lái)看一下維基百科上給出的定義:
詞法分析(lexical analysis)是計(jì)算機(jī)科學(xué)中將字符序列轉(zhuǎn)換為標(biāo)記(token)序列的過(guò)程。進(jìn)行詞法分析的程序或者函數(shù)叫作詞法分析器(lexical analyzer,簡(jiǎn)稱(chēng)lexer),也叫掃描器(scanner)。詞法分析器一般以函數(shù)的形式存在,供語(yǔ)法分析器調(diào)用。
.go 文件被輸入到掃描器(Scanner),它使用一種類(lèi)似于 有限狀態(tài)機(jī)的算法,將源代碼的字符系列分割成一系列的記號(hào)(Token)。
- PC官方版
- 安卓官方手機(jī)版
- IOS官方手機(jī)版