碎碎念:
紀錄一下自己看這本書,那因為我英文沒有很好(ಥ﹏ಥ)所以只能買翻譯的版本,那這本書是簡體中文所以有些用詞會跟我們平常用的不太一樣,反正不影響閱讀,這本書我大概看了一下,老實說真的很無聊,理論類的東西就是這樣,我不知道我可以看多久,就隨緣吧( ̄・ω・ ̄)。
第一章 引論
1-1
編譯器(compile)-將全部source code(程式碼)轉換成可執行碼。
解釋器/直譯器(interpreter)-輸入一行程式碼就執行一行。
java-結合編譯跟直譯,將source code 編譯成bytecode(字節碼),丟給虛擬機就可執行,因為這點所以才可以跨平台,那也有just in time(即時)編譯器把bytecode編譯成機器語言(0跟1所構成的低階語言)增加執行速度。
這個輸入就是cin、scanf、sc.nextINT。
*紅字為書上的內容。
預處理器(preprocessor)-把主程式跟副程式結合在一起,還會負責把那些稱為'宏'的縮寫形式轉換為程式語言的語句(我看不懂這句話的意思ఠ_ఠ)。
.cpp為主程式,.h為副檔
這張圖比上面分的還要細,首先程式碼會先經過預處理器之後才會進入編譯器,輸出匯編語言(容易輸出跟調式),在經過assembler(匯編器)輸出可重新定位的機器碼,大型的程式可能要分段編譯,那這時候可重新定位的機器碼就可以跟其他可重新定譯的機器碼連接在一起,經過鏈接器(linker)跟加載器(loader)後就會產生可執行的機器碼。
linker(鏈接器):解決外部內存問題。
loader(加載器):把所有可執行檔放內存中。
1-1練習
1.compiler跟interpreter的差別?
2.compiler相對於interpreter的優點是什麼?interpreter相對於compiler的優點是什麼?
3.在語言系統中,編譯器產生匯編語言而不是機器語言的好處是什麼?
4.把高級語言翻譯成高級語言稱為源到源(source-to-source)的翻譯器,編譯器使用C當作目標語言的好處?
5.描述assembler所做的事情。
.
.沒有標準答案,可以自己嘗試去做答。
.
.
1.compiler是全部一起編譯,interpreter是你輸入一行就編譯一行。
2.compiler相較於interpreter來說他的執行速度比較快,而interpreter相較於compiler來說他的錯誤診斷能力比較強。
3.容易輸出跟調式(詳細的細節我也沒有很清楚,說不定看到後面就知道了吧┐(´д`)┌)。
4.我覺得就是因為C可以處理底層的問題,所以可以很輕易的去調用、操弄底層的東西(我知道答案沒有這麼簡單,這只是我對C的認知(┛ಠДಠ)┛彡┻━┻)。
5.把編譯器所產生的匯編語言經過處立後產生可重新定位的機器碼。
英文單字:
compiler 編譯器
interpreter 直譯器/解釋器
source code 程式碼
just in time 即時
preprocessor 預處理器
assembler 匯編器
linker 鏈接器
loader 加載器
bytecode 字節碼
留言列表