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