真的很不錯(cuò),為初學(xué)編程者能更好理解編程語言打下基礎(chǔ)。好書!即便對(duì)電腦一無所知的人也可以很快普及很實(shí)用的電腦常識(shí),讀完這本書后按照各章線索一一去拓展堪比科班出身!寫的太簡單了,雖然簡單,但是確實(shí)一點(diǎn)能力也沒看出來!
程序是怎樣跑起來的介紹
《程序是怎樣跑起來的》一書從計(jì)算機(jī)的內(nèi)部結(jié)構(gòu)開始講起,以圖配文的形式詳細(xì)講解了二進(jìn)制、內(nèi)存、數(shù)據(jù)壓縮、源文件和可執(zhí)行文件、操作系統(tǒng)和應(yīng)用程序的關(guān)系、匯編語言、硬件控制方法等內(nèi)容,目的是讓讀者了解從用戶雙擊程序圖標(biāo)到程序開始運(yùn)行之間到底發(fā)生了什么。同時(shí)專設(shè)了“如果是你,你會(huì)怎樣介紹?”專欄,以小學(xué)生、老奶奶為對(duì)象講解程序的運(yùn)行原理,頗為有趣。本書圖文并茂,通俗易懂,非常適合計(jì)算機(jī)愛好者及相關(guān)從業(yè)人員閱讀。
程序是怎樣跑起來的目錄
第1章 對(duì)程序員來說CPU是什么
1.1 CPU的內(nèi)部結(jié)構(gòu)解析
1.2 CPU是寄存器的集合體
1.3 決定程序流程的程序計(jì)數(shù)器
1.4 條件分支和循環(huán)機(jī)制
1.5 函數(shù)的調(diào)用機(jī)制
1.6 通過地址和索引實(shí)現(xiàn)數(shù)組
1.7 CPU的處理其實(shí)很簡單
第2章 數(shù)據(jù)是用二進(jìn)制數(shù)表示的
2.1 用二進(jìn)制數(shù)表示計(jì)算機(jī)信息的原因
2.2 什么是二進(jìn)制數(shù)
2.3 移位運(yùn)算和乘除運(yùn)算的關(guān)系
2.4 便于計(jì)算機(jī)處理的“補(bǔ)數(shù)”
2.5 邏輯右移和算術(shù)右移的區(qū)別
2.6 掌握邏輯運(yùn)算的竅門
COLUMN 如果是你,你會(huì)怎樣介紹?——向小學(xué)生講解CPU和二進(jìn)制
第3章 計(jì)算機(jī)進(jìn)行小數(shù)運(yùn)算時(shí)出錯(cuò)的原因
3.1 將0.1累加100次也得不到10
3.2 用二進(jìn)制數(shù)表示小數(shù)
3.3 計(jì)算機(jī)運(yùn)算出錯(cuò)的原因
3.4 什么是浮點(diǎn)數(shù)
3.5 正則表達(dá)式和 EXCESS系統(tǒng)
3.6 在實(shí)際的程序中進(jìn)行確認(rèn)
3.7 如何避免計(jì)算機(jī)計(jì)算出錯(cuò)
3.8 二進(jìn)制數(shù)和十六進(jìn)制數(shù)
第4章 熟練使用有棱有角的內(nèi)存
4.1 內(nèi)存的物理機(jī)制很簡單
4.2 內(nèi)存的邏輯模型是樓房
4.3 簡單的指針
4.4 數(shù)組是高效使用內(nèi)存的基礎(chǔ)
4.5 棧、隊(duì)列以及環(huán)形緩沖區(qū)
4.6 鏈表使元素的追加和刪除更容易
4.7 二叉查找樹使數(shù)據(jù)搜索更有效
第5章 內(nèi)存和磁盤的親密關(guān)系
5.1 不讀入內(nèi)存就無法運(yùn)行
5.2 磁盤緩存加快了磁盤訪問速度
5.3 虛擬內(nèi)存把磁盤作為部分內(nèi)存來使用
5.4 節(jié)約內(nèi)存的編程方法
5.5 磁盤的物理結(jié)構(gòu)
第6章 親自嘗試壓縮數(shù)據(jù)
6.1 文件以字節(jié)為單位保存
6.2 RLE 算法的機(jī)制
6.3 RLE 算法的缺點(diǎn)
6.4 通過莫爾斯編碼來看哈夫曼算法的基礎(chǔ)
6.5 用二叉樹實(shí)現(xiàn)哈夫曼編碼
6.6 哈夫曼算法能夠大幅提升壓縮比率
6.7 可逆壓縮和非可逆壓縮
COLUMN 如果是你,你會(huì)怎樣介紹?——向沉迷游戲的中學(xué)生講解內(nèi)存和磁盤
第7章 程序是在何種環(huán)境中運(yùn)行的
7.1 運(yùn)行環(huán)境 = 操作系統(tǒng) + 硬件
7.2 Windows克服了CPU以外的硬件差異
7.3 不同操作系統(tǒng)的 API不同
7.4 FreeBSD Port 幫你輕松使用源代碼
7.5 利用虛擬機(jī)獲得其他操作系統(tǒng)環(huán)境
7.6 提供相同運(yùn)行環(huán)境的 Java虛擬機(jī)
7.7 BIOS 和引導(dǎo)
第8章 從源文件到可執(zhí)行文件
8.1 計(jì)算機(jī)只能運(yùn)行本地代碼
8.2 本地代碼的內(nèi)容
8.3 編譯器負(fù)責(zé)轉(zhuǎn)換源代碼
8.4 僅靠編譯是無法得到可執(zhí)行文件的
8.5 啟動(dòng)及庫文件
8.6 DLL 文件及導(dǎo)入庫
8.7 可執(zhí)行文件運(yùn)行時(shí)的必要條件
8.8 程序加載時(shí)會(huì)生成棧和堆
8.9 有點(diǎn)難度的Q&A
第9章 操作系統(tǒng)和應(yīng)用的關(guān)系
9.1 操作系統(tǒng)功能的歷史
9.2 要意識(shí)到操作系統(tǒng)的存在
9.3 系統(tǒng)調(diào)用和高級(jí)編程語言的移植性
9.4 操作系統(tǒng)和高級(jí)編程語言使硬件抽象化
9.5 Windows操作系統(tǒng)的特征
COLUMN 如果是你,你會(huì)怎樣介紹?——向超喜歡手機(jī)的女高中生講解操作系統(tǒng)的作用
第10章 通過匯編語言了解程序的實(shí)際構(gòu)成
10.1 匯編語言和本地代碼是一一對(duì)應(yīng)的
10.2 通過編譯器輸出匯編語言的源代碼
10.3 不會(huì)轉(zhuǎn)換成本地代碼的偽指令
10.4 匯編語言語法是“操作碼+操作數(shù)”
10.5 最常用的mov指令
10.6 對(duì)棧進(jìn)行push和pop
10.7 函數(shù)調(diào)用機(jī)制
10.8 函數(shù)內(nèi)部的處理
10.9 始終確保全局變量用的內(nèi)存空間
10.10 臨時(shí)確保局部變量用的內(nèi)存空間
10.11 循環(huán)處理的實(shí)現(xiàn)方法
10.12 條件分支的實(shí)現(xiàn)方法
10.13 了解程序運(yùn)行方式的必要性
第11章 硬件控制方法
11.1 應(yīng)用和硬件無關(guān)?
11.2 支撐硬件輸入輸出的 IN指令和OUT指令
11.3 編寫測試用的輸入輸出程序
11.4 外圍設(shè)備的中斷請(qǐng)求
11.5 用中斷來實(shí)現(xiàn)實(shí)時(shí)處理
11.6 DMA 可以實(shí)現(xiàn)短時(shí)間內(nèi)傳送大量數(shù)據(jù)
11.7 文字及圖片的顯示機(jī)制
COLUMN 如果是你,你會(huì)怎樣介紹?——向鄰居老奶奶說明顯示器和電視機(jī)的不同
第12章 讓計(jì)算機(jī)“思考”
12.1 作為“工具”的程序和為了“思考”的程序
12.2 用程序來表示人類的思考方式
12.3 用程序來表示人類的思考習(xí)慣
12.4 程序生成隨機(jī)數(shù)的方法
12.5 活用記憶功能以達(dá)到更接近人類的判斷
12.6 用程序來表示人類的思考方式
COLUMN 如果是你,你會(huì)怎樣介紹?——向常光臨的酒館老板講解計(jì)算機(jī)的思考機(jī)制
附錄 讓我們開始C語言之旅
C語言的特點(diǎn)
變量和函數(shù)
數(shù)據(jù)類型
標(biāo)準(zhǔn)函數(shù)庫
函數(shù)調(diào)用
局部變量和全局變量
數(shù)組和循環(huán)
其他語法結(jié)構(gòu)
- PC官方版
- 安卓官方手機(jī)版
- IOS官方手機(jī)版