本書倡導在計算機迅速發(fā)展、技術不斷革新的今天,回歸到計算機的基礎知識上。通過探究計算機的本質(zhì),工程師將提升對計算機的興趣,在面對復雜的新技術時,能夠迅速掌握其要點并靈活運用。本書以圖配文,以計算機的三大原則為開端,相繼介紹了計算機的結構、手工匯編、程序流程、算法、數(shù)據(jù)結構、面向?qū)ο缶幊獭?shù)據(jù)庫、TCP/IP網(wǎng)絡、數(shù)據(jù)加密、XML、計算機系統(tǒng)開發(fā)以及SE的相關知識。第2版的部分程序改用Python來呈現(xiàn),數(shù)據(jù)庫改用MySQL,并對加密部分做了升級。
※ 在紙上體驗計算機模型的制作過程,排除對硬件的恐懼
※ 體驗匯編語言,加深對計算機的理解
※ 理解程序的流程、面向?qū)ο蟮木幊、?shù)據(jù)庫以及XML
※ 抓住7個要點,與算法和數(shù)據(jù)結構成為好朋友
※ 通過7個實驗,理解TCP/IP網(wǎng)絡協(xié)議
原來,計算機并不難!
★ 以圖配文,深入講解硬件&軟件基礎知識
★ 語言通俗,即使是文科生也能看得懂
★ 特設“來自企業(yè)培訓現(xiàn)場”專欄,生動有趣
[日]矢澤久雄,YAZAWA股份有限公司董事長兼總經(jīng)理。GrapeCity信息技術集團顧問。曾在某大型電子公司從事過電腦生產(chǎn),在Software House做過程序員,現(xiàn)主要從事軟件開發(fā)工作。工作之余筆耕不輟,從電路到編程語言均有涉及。代表作有《程序是怎樣跑起來的》等。自稱軟件藝人。
【譯者介紹】
Web后端工程師,技術圖書譯者。譯有《圖解量子計算機》《自制搜索引擎》和《圖解云計算架構:基礎設施和API》。
第 1章 計算機的三大原則 1
1.1 計算機的三大原則 3
1.2 輸入、運算和輸出是硬件的基礎 4
1.3 軟件是指令和數(shù)據(jù)的集合 6
1.4 對計算機來說一切都是數(shù)字 8
1.5 為了貼近人類,計算機在不斷進化 9
1.6 預習一下第 2章 12
第 2章 制作一臺計算機 15
2.1 計算機的組成元件 17
2.2 CPU、內(nèi)存和I/O內(nèi)部的存儲單元 19
2.3 電路圖的讀法 22
2.4 連接電源電路 23
2.5 連接數(shù)據(jù)總線 24
2.6 連接地址總線 26
2.7 連接控制總線 29
2.8 連接剩余的電路 30
2.9 大功告成 32
第3章 體驗匯編語言 35
3.1 高級語言和低級語言 37
3.2 用匯編語言編程時需要了解的硬件知識 39
3.3 Intel CPU的寄存器 40
3.4 匯編語言的語法只有一條 42
3.5 逐行分析“計算1+2”的代碼 44
3.6 安裝匯編語言編程工具SASM 46
3.7 使用SASM編寫并運行“計算1+2”的程序 52
3.8 查看匯編語言對應的機器語言 54
3.9 查看CPU和內(nèi)存之間的數(shù)據(jù)傳輸方式 56
3.10 指令順序執(zhí)行的機制 62
第4章 程序像河水一樣流動 67
4.1 程序的流程分為3種 69
4.2 用流程圖表示程序的流程 73
4.3 表示循環(huán)程序塊的“帽子”和“短褲” 75
4.4 結構化程序設計 80
4.5 邊畫流程圖邊設計算法 81
4.6 特殊的程序流程——事件驅(qū)動 83
COLUMN 來自企業(yè)培訓現(xiàn)場
拆解計算機的練習 87
第5章 與算法成為好朋友的7個要點 89
5.1 算法是編程語言中的“常用語” 91
5.2 要點 1:解決問題的步驟必須明確且有限 92
5.3 要點 2:計算機不靠直覺,只會機械地解決問題 93
5.4 要點 3:掌握經(jīng)典算法 95
5.5 要點 4:利用計算機的處理速度 96
5.6 要點 5:使用編程技巧提升程序執(zhí)行速度 98
5.7 要點 6:找出數(shù)字間的規(guī)律 102
5.8 要點 7:先在紙上設計算法 104
第6章 與數(shù)據(jù)結構成為好朋友的7個要點 107
6.1 要點 1:了解內(nèi)存和變量的關系 109
6.2 要點 2:了解作為數(shù)據(jù)結構基礎的數(shù)組 112
6.3 要點 3:了解數(shù)組在經(jīng)典算法中的應用 113
6.4 要點 4:了解經(jīng)典數(shù)據(jù)結構的特點 115
6.5 要點 5:了解棧和隊列的實現(xiàn)方法 118
6.6 要點 6:了解結構體的構成 122
6.7 要點 7:了解鏈表和二叉樹的實現(xiàn)方法 123
第7章 做一個面向?qū)ο缶幊痰某绦騿T 129
7.1 面向?qū)ο缶幊?131
7.2 面向?qū)ο缶幊逃卸喾N理解方法 132
7.3 觀點1:面向?qū)ο缶幊掏ㄟ^將組件拼裝到一起構建程序 133
7.4 觀點2:面向?qū)ο缶幊棠軌蛱嵘绦虻拈_發(fā)效率和可維護性 135
7.5 觀點3:面向?qū)ο缶幊踢m用于大型程序的開發(fā) 137
7.6 觀點4:面向?qū)ο缶幊叹褪窃谀M現(xiàn)實世界 137
7.7 觀點5:面向?qū)ο缶幊炭梢越柚鶸ML設計程序 138
7.8 觀點6:面向?qū)ο缶幊掏ㄟ^在對象間傳遞消息驅(qū)動程序 140
7.9 觀點7:面向?qū)ο缶幊痰娜筇匦?143
7.10 類和對象的區(qū)別 144
7.11 類的3種使用方法 145
COLUMN 來自企業(yè)培訓現(xiàn)場
新手程序員適合學習哪些編程語言? 149
第8章 一用就會的數(shù)據(jù)庫 151
8.1 數(shù)據(jù)庫是數(shù)據(jù)的基地 153
8.2 數(shù)據(jù)文件、DBMS和數(shù)據(jù)庫應用程序 155
8.3 設計數(shù)據(jù)庫 158
8.4 數(shù)據(jù)庫規(guī)范化 160
8.5 用主鍵和外鍵將表連接在一起 162
8.6 索引能夠提升數(shù)據(jù)的檢索速度 165
8.7 在MySQL中創(chuàng)建酒鋪數(shù)據(jù)庫 166
8.8 向MySQL發(fā)送增刪改查的SQL語句 169
8.9 事務控制也可以交給DBMS處理 171
第9章 使用網(wǎng)絡命令來探索網(wǎng)絡的機制 175
9.1 什么是網(wǎng)絡命令 177
9.2 實驗 1:查看MAC地址 179
9.3 實驗 2:查看IP地址和子網(wǎng)掩碼 180
9.4 實驗 3:了解DHCP服務器的作用 182
9.5 實驗 4:PING默認網(wǎng)關 184
9.6 實驗 5:了解TTL的作用 185
9.7 實驗 6:了解DNS服務器的作用 187
9.8 實驗 7:查看IP地址和MAC地址的對應關系 188
9.9 TCP的作用及TCP/IP網(wǎng)絡的層級模型 190
第 10章 加密與解密 193
10.1 什么是加密 195
10.2 通過平移字符編碼加密 197
10.3 密鑰越長,破解越困難 200
10.4 使用“公開密鑰加密”方式加密和解密 202
10.5 基于公開密鑰加密的數(shù)字簽名 205
第 11章 XML究竟是什么 209
11.1 XML是標記語言 211
11.2 XML是可擴展的標記語言 213
11.3 XML是元語言 214
11.4 XML可以為數(shù)據(jù)賦予意義 217
11.5 XML是通用的數(shù)據(jù)格式 219
11.6 為XML標簽設定命名空間 222
11.7 嚴格定義XML實例的結構 223
11.8 用于解析XML的程序組件 225
11.9 XML適用于各種領域 226
第 12章 SE負責監(jiān)管計算機系統(tǒng)的開發(fā) 229
12.1 SE是自始至終參與系統(tǒng)開發(fā)過程的工程師 231
12.2 SE未必是程序員出身 233
12.3 系統(tǒng)開發(fā)過程的規(guī)范 233
12.4 各個階段的工作內(nèi)容及文檔 235
12.5 所謂設計,就是拆解 237
12.6 技術能力和溝通能力 239
12.7 IT不等于引進計算機 240
12.8 計算機系統(tǒng)的成功與失敗 241
12.9 大幅提升可用性的多機備份 243