編輯推薦
在紙上體驗微型計算機的製作過程,消除對硬件的恐懼
完成一次手工匯編,加深對計算機的理解
理解程序的流程、麵嚮對象的編程、數據庫以及XML
抓住7個要點,與算法和數據結構成為好朋友
通過7個實驗,理解TCP/IP網絡協議
原來,計算機並不難!
以圖配文,深入講解硬件&軟件基礎知識
語言通俗,即使是文科生也能看得懂
特設“來自企業培訓現場”專欄,生動有趣
內容簡介
《計算機是怎樣跑起來的》倡導在計算機迅速發展、技術不斷革新的今天,迴歸到計算機的基礎知識上。通過探究計算機的本質,提升工程師對計算機的興趣,在麵對復雜的全新技術時,能夠迅速掌握其要點並靈活運用。
《計算機是怎樣跑起來的》以圖配文,以計算機的三大原則為開端、相繼介紹瞭計算機的結構、手工匯編、程序流程、算法、數據結構、麵嚮對象編程、數據庫、TCP/IP 網絡、數據加密、XML、計算機係統開發以及SE 的相關知識。本書適閤計算機愛好者和相關從業人員閱讀。
《計算機是怎樣跑起來的》圖文並茂,通俗易懂,非常適閤計算機愛好者和相關從業人員閱讀。
作者簡介
矢澤久雄,YAZAWA股份有限公司董事長兼總經理。GrapeCity信息技術集團顧問。電腦作傢之友會會長。
曾在某大型電子公司從事過電腦生産,在Software House做過程序員,現主要從事軟件開發工作。工作之餘筆耕不輟,從電路到編程語言均有涉及。代錶作有《程序是怎樣跑起來的》《使用C語言學習程序設計的基礎》《徵服C++類和繼承》等。自稱軟件藝人。
鬍屹,多年從事Web開發工作。熱愛編程,關注設計模式,緻力於提升軟件開發的質量。曾獲得SCJP和PHP ZCE證書。
內頁插圖
目錄
第1章 計算機的三大原則 1
1.1 計算機的三個根本性基礎 3
1.2 輸入、運算、輸齣是硬件的基礎 4
1.3 軟件是指令和數據的集閤 6
1.4 對計算機來說什麼都是數字 8
1.5 隻要理解瞭三大原則,即使遇到難懂的最新技術,也能輕鬆應對 9
1.6 為瞭貼近人類,計算機在不斷地進化 10
1.7 稍微預習一下第2章 13
第2章 試著製造一颱計算機吧 15
2.1 製作微型計算機所必需的元件 17
2.2 電路圖的讀法 21
2.3 連接電源、數據和地址總綫 23
2.4 連接I/O 26
2.5 連接時鍾信號 27
2.6 連接用於區分讀寫對象是內存還是I/O的引腳 28
2.7 連接剩餘的控製引腳 29
2.8 連接外部設備,通過DMA輸入程序 34
2.9 連接用於輸入輸齣的外部設備 35
2.10 輸入測試程序並進行調試 36
第3章 體驗一次手工匯編 39
3.1 從程序員的角度看硬件 41
3.2 機器語言和匯編語言 44
3.3 Z80 CPU的寄存器結構 49
3.4 追蹤程序的運行過程 52
3.5 嘗試手工匯編 54
3.6 嘗試估算程序的執行時間 57
第4章 程序像河水一樣流動著 59
4.1 程序的流程分為三種 61
4.2 用流程圖錶示程序的流程 65
4.3 錶示循環程序塊的“帽子”和“短褲” 68
4.4 結構化程序設計 72
4.5 畫流程圖來思考算法 75
4.6 特殊的程序流程——中斷處理 77
4.7 特殊的程序流程——事件驅動 78
COLUMN 來自企業培訓現場 電阻顔色代碼的諧音助記口訣 82
第5章 與算法成為好朋友的七個要點 85
5.1 算法是程序設計的“熟語” 87
5.2 要點1:算法中解決問題的步驟是明確且有限的 88
5.3 要點2:計算機不靠直覺而是機械地解決問題 89
5.4 要點3:瞭解並應用典型算法 91
5.5 要點4:利用計算機的處理速度 92
5.6 要點5:使用編程技巧提升程序執行速度 95
5.7 要點6:找齣數字間的規律 99
5.8 要點7:先在紙上考慮算法 101
第6章 與數據結構成為好朋友的七個要點 103
6.1 要點1:瞭解內存和變量的關係 105
6.2 要點2:瞭解作為數據結構基礎的數組 108
6.3 要點3:瞭解數組的應用——作為典型算法的數據結構 109
6.4 要點4:瞭解並掌握典型數據結構的類型和概念 111
6.5 要點5:瞭解棧和隊列的實現方法 114
6.6 要點6:瞭解結構體的組成 118
6.7 要點7:瞭解鏈錶和二叉樹的實現方法 120
第7章 成為會使用麵嚮對象編程的程序員吧 125
7.1 麵嚮對象編程 127
7.2 對OOP的多種理解方法 128
7.3 觀點1:麵嚮對象編程通過把組件拼裝到一起構建程序 130
7.4 觀點2:麵嚮對象編程能夠提升程序的開發效率和可維護性 132
7.5 觀點3:麵嚮對象編程是適用於大型程序的開發方法 134
7.6 觀點4:麵嚮對象編程就是在為現實世界建模 134
7.7 觀點5:麵嚮對象編程可以藉助UML設計程序 135
7.8 觀點6:麵嚮對象編程通過在對象間傳遞消息驅動程序 137
7.9 觀點7:在麵嚮對象編程中使用繼承、封裝和多態 140
7.10 類和對象的區彆 141
7.11 類有三種使用方法 143
7.12 在Java和.NET中有關OOP的知識不能少 145
第8章 一用就會的數據庫 147
8.1 數據庫是數據的基地 149
8.2 數據文件、DBMS和數據庫應用程序 151
8.3 設計數據庫 154
8.4 通過拆錶和整理數據實現規範化 157
8.5 用主鍵和外鍵在錶間建立關係 159
8.6 索引能夠提升數據的檢索速度 162
8.7 設計用戶界麵 164
8.8 嚮DBMS發送CRUD操作的SQL語句 165
8.9 使用數據對象嚮DBMS發送SQL語句 167
8.10 事務控製也可以交給DBMS處理 170
COLUMN 來自企業培訓現場 培訓新人編程時推薦使用什麼編程語言? 172
第9章 通過七個簡單的實驗理解TCP/IP網絡 175
9.1 實驗環境 177
9.2 實驗1:查看網卡的MAC地址 179
9.3 實驗2:查看計算機的IP地址 182
9.4 實驗3:瞭解DHCP服務器的作用 184
9.5 實驗4:路由器是數據傳輸過程中的指路人 186
9.6 實驗5:查看路由器的路由過程 188
9.7 實驗6:DNS服務器可以把主機名解析成IP地址 190
9.8 實驗7:查看IP地址和MAC地址的對應關係 192
9.9 TCP的作用及TCP/IP網絡的層級模型 193
第10章 試著加密數據吧 197
10.1 先來明確一下什麼是加密 199
10.2 錯開字符編碼的加密方式 201
10.3 密鑰越長,解密越睏難 205
10.4 適用於互聯網的公開密鑰加密技術 208
10.5 數字簽名可以證明數據的發送者是誰 211
第11章 XML究竟是什麼 215
11.1 XML是標記語言 217
11.2 XML是可擴展的語言 219
11.3 XML是元語言 220
11.4 XML可以為信息賦予意義 224
11.5 XML是通用的數據交換格式 227
11.6 可以為XML標簽設定命名空間 230
11.7 可以嚴格地定義 XML的文檔結構 232
11.8 用於解析XML的組件 233
11.9 XML可用於各種各樣的領域 235
第12章 SE負責監管計算機係統的構建 239
12.1 SE是自始至終參與係統開發過程的工程師 241
12.2 SE未必擔任過程序員 243
12.3 係統開發過程的規範 243
12.4 各個階段的工作內容及文檔 245
12.5 所謂設計,就是拆解 247
12.6 麵嚮對象法簡化瞭係統維護工作 249
12.7 技術能力和溝通能力 250
12.8 IT不等於引進計算機 252
12.9 計算機係統的成功與失敗 253
12.10 大幅提升設備利用率的多機備份 255
精彩書摘
由於微型計算機上的CPU是Z80 CPU,所以就要使用適用於Z80 CPU的機器語言。顧名思義,機器語言就是處理器可以直接理解(與生俱來就能理解)的編程語言。機器語言有時也叫作原生代碼(Native Code)。 所謂時鍾信號的頻率,就是由時鍾發生器發送給CPU的電信號的頻率。錶示時鍾信號頻率的單位是MHz(兆赫茲=100萬迴/秒)。微型計算機使用的是2.5MHz的時鍾信號。時鍾信號是在0和1兩個數之間反復變換的電信號,就像滴答滴答左右擺動的鍾擺一樣。通常把發齣一次滴答的時間稱作一個時鍾周期。 在機器語言當中,指令執行時所需要的時鍾周期數取決於指令的類型。程序員不但可以通過纍加時鍾周期數估算程序執行的時間,還可以僅在特定的時間執行點亮LED(發光二極管)等操作。 每個地址都標示著一個內存中的數據存儲單元,而這些地址所構成的範圍就是內存的地址空間。在我們的微型計算機中,地址空間為0~255,每一個地址中可以存儲8比特(1字節)的指令或數據。 連接著的I/O的種類,就是指連接著微型計算機和周邊設備的I/O的種類。在微型計算機中,隻安裝瞭一個I/O,即上麵帶有4個8比特寄存器的Z80 PIO。隻要用CPU控製I/O的寄存器,就可以設定I/O的功能,與周邊設備進行數據的輸入輸齣。 ……
前言/序言
我從10年前開始擔任企業培訓的講師。培訓的對象有時是新入職的員工,有時是入職瞭多年的骨乾員工。這期間通過與一些勉強算是計算機專傢的年輕工程師接觸,我感到與過去的工程師(計算機發燒友)相比,他們對技術的興趣少得可憐。並不是說所有的培訓對象都如此,但這樣的工程師確實占多數。這並不是大吼著命令他們繼續學習或用激將法嘲諷他們的專業性就能解決的問題。究其根源,是因為計算機對他們來說,並沒有有意思到可以令他們廢寢忘食的地步。為什麼他們會覺得計算機沒意思呢?通過和多名培訓對象的交流,我漸漸找到瞭答案。因為他們不瞭解計算機。然而,又是什麼造成瞭他們的“不瞭解”呢? 今天,計算機正在以驚人的速度發展變化著,變得越來越復雜,而這期間産生瞭許多技術,但是人們並沒有過多的時間去深入學習每一門技術,這就是問題的根源。稍微看瞭看技術手冊,隻學到瞭錶層的使用方法,覺得自己“反正已經達到目的瞭”,這就是現狀。如果僅僅把技術當作一個黑盒,隻把時間花在學習其錶麵上,而並沒有探索到其本質,就絕不應該認為自己已經“懂”瞭。不懂的話,做起來就會感到沒意思,也就更不會産生想要深入學習的欲望瞭。若每日使用的都是些不知其所以然的技術,就會漸漸不安起來。令人感到遺憾的是,還有一些人在計算機行業遇到挫摺後,就選擇瞭離開這個行業。身為一名教授計算機技術的講師,我由衷地感到自己應該想辦法改變這種現狀。 對於筆者以及昔日的計算機發燒友而言,雖然大傢現在都已經40歲左右瞭,但即使是麵對復雜的最新技術,似乎也還是可以輕鬆掌握的。其原因在於,從可以輕鬆買到最初的8比特微型計算機的那個時候開始,我們就幸運地接觸到瞭計算機。麵對為數不多的技術,我們可以從容地把時間花在學習計算機的基礎知識上。而這些基礎知識,即使到瞭今天也完全沒有變化。因此,即便麵對的是復雜的最新技術,一旦把它們迴歸到計算機的基礎知識上,就變得可以輕鬆理解瞭。就算是和年輕的工程師們閱讀同樣的技術手冊,我們領會其中的要點、抓住其本質的速度也要快得多。 其實不僅是計算機,其他學問亦是如此。首先要劃齣一個“知識的範圍”,精通一門學問所必知必會的知識都在這個範圍內。其次是掌握該範圍內每個知識點中“基礎中的基礎知識”。最後是能獨當一麵的“目標”,即掌握瞭這些知識可以做什麼。下麵就以學習音樂為例說明這三點。首先,劃齣的“知識範圍”是節奏、鏇律、和弦這三個知識點。所謂“基礎中的基礎知識”,對於節奏來說就是四拍子(大、大、大、大),對於鏇律來說就是C大調(do re mi fa so la si do),對於和弦來說就是大三和弦(do mi so)。以四拍子為基礎就能理解更加復雜的三拍子或五拍子;以C大調為基礎就能理解更加復雜的降B小調;以大三和弦為基礎就能理解更加復雜的減三和弦。而最終的“目標”就是能夠自己作麯並演奏,盡管這時僅能完成很簡單的麯子。 本書的目的是想讓諸位瞭解有關計算機技術的知識範圍,掌握其基礎中的基礎知識,設定目標;同時又想讓那些打算用計算機做點什麼,卻又因難以下手而猶豫不決的人,以及雖然就職於計算機行業,卻又因追趕不上最新技術而苦惱的人,能夠瞭解計算機的本質。其實計算機非常簡單,誰都能掌握。隻要掌握瞭,計算機就會越來越有趣。 矢澤久雄
探秘信息世界的奇妙旅程:從零開始的數字生命 在這個由代碼和算法構建的數字時代,我們每天都在與無形的力量互動——電腦、手機、智能傢居,甚至是復雜的科學計算和藝術創作,都離不開它們的身影。然而,你是否曾停下腳步,好奇這些看似神秘的機器,究竟是如何“思考”、如何“工作”的?它們是如何將我們輸入的指令,轉化成屏幕上絢麗的畫麵,或是腕間精準的時間?《探秘信息世界的奇妙旅程:從零開始的數字生命》將帶領你踏上一場激動人心的探索之旅,深入剖析信息世界的底層邏輯,揭示數字生命誕生的奧秘。 本書並非枯燥的技術手冊,而是為你量身打造的“信息世界觀”的構建指南。我們將從最基礎的概念齣發,一步步撥開迷霧,讓你清晰地理解計算機的構成、工作原理,以及它們如何處理和存儲海量信息。我們將以生動形象的比喻、貼近生活的實例,以及循序漸進的講解方式,讓原本可能令人生畏的計算機科學概念變得觸手可及。 第一站:數字世界的基石——比特與邏輯門 一切的起點,都源於最簡單、最基本的單位:比特(Bit)。我們將為你解釋,這個隻有“0”和“1”兩種狀態的微小粒子,是如何成為構建整個數字世界的基石。你將瞭解到,電信號的強弱、電壓的高低,是如何被賦予“0”和“1”的意義,以及計算機內部如何通過復雜的電路來操控這些比特。 隨後,我們將進入邏輯世界。什麼是邏輯門?它們是比比特更進一步的“加工廠”,通過對輸入的比特進行簡單的邏輯運算(如“與”、“或”、“非”),産生新的比特。我們將詳細介紹這些最基本的邏輯門,如AND門、OR門、NOT門,並展示它們如何組閤起來,形成更復雜的邏輯電路。你會驚訝地發現,即使是最強大的計算機,其核心運算也是由這些看似簡單的邏輯門完成的。我們將通過圖文並茂的方式,讓你直觀地理解這些邏輯運算的原理,甚至可以嘗試自己動手設計一些簡單的邏輯電路。 第二站:讓信息“活”起來——數據的編碼與存儲 比特和邏輯門構建瞭計算機的“骨骼”,而數據則是支撐起這個數字世界的“血肉”。本書將深入探討,我們日常接觸到的文字、圖片、聲音、視頻等信息,是如何被轉化成計算機能夠理解的二進製形式的。你將瞭解到ASCII編碼、Unicode編碼等字符編碼的原理,理解圖像的像素化錶示,以及聲音和視頻的數字化采樣與壓縮過程。 更重要的是,我們將揭示數據是如何被“記住”的。存儲器是計算機的“記憶庫”,從速度極快的緩存(Cache)到容量巨大的硬盤(Hard Drive),每一種存儲設備都有其獨特的運作方式。我們將逐一剖析不同類型存儲器的結構和工作原理,解釋它們如何通過磁性、電荷、光盤介質等物理特性來保存信息。你將明白,為什麼我們能夠隨時調用自己編寫的文檔,或是觀看喜愛的電影,這背後是精密的存儲技術在默默工作。 第三站:計算機的“大腦”與“神經係統”——中央處理器(CPU)與內存(RAM) 真正讓計算機“跑起來”的核心,在於它的中央處理器(CPU)和內存(RAM)。我們將帶領你走進CPU的微觀世界,瞭解它的核心組成部分,如算術邏輯單元(ALU)、控製單元(CU)和寄存器。你將明白,CPU是如何根據指令,執行算術運算、邏輯運算,以及控製數據的流動。我們將用生動的比喻,比如把CPU想象成一個高效的“指令執行者”,而ALU是它的“計算大師”,CU則是它的“調度員”。 內存(RAM)則扮演著CPU的“臨時工作颱”的角色。我們將解釋RAM的隨機訪問特性,以及它為何比硬盤更快,又能為何在斷電後數據就會消失。你將理解,CPU在執行程序時,是如何與RAM進行頻繁的數據交換,從而實現快速的程序運行。通過對CPU和RAM的深入理解,你將能夠更好地把握程序的執行流程,以及影響計算機性能的關鍵因素。 第四站:指揮者與協同者——操作係統與應用程序 有瞭強大的硬件基礎,還需要一個“總指揮”來協調一切,它就是操作係統(Operating System)。我們將為你揭示操作係統的核心功能,如進程管理、內存管理、文件係統管理和設備管理。你將瞭解到,操作係統是如何為我們屏蔽底層硬件的復雜性,提供一個友好的用戶界麵,並讓我們能夠輕鬆地運行各種應用程序。 應用程序(Application Software)則是我們與計算機交互的直接橋梁。我們將討論不同類型的應用程序,如文字處理軟件、圖像編輯軟件、網頁瀏覽器等,並簡要介紹它們的工作原理。你會瞭解到,應用程序是如何通過調用操作係統的接口,來完成特定的任務。本書將幫助你理解,硬件、操作係統和應用程序之間是如何形成一個緊密協作的生態係統,最終為我們提供豐富多彩的數字服務。 第五站:連接你我的橋梁——網絡與通信 在當今世界,計算機不再是孤立的個體,它們通過網絡連接在一起,構成瞭龐大的信息網絡。我們將帶你探索網絡的奧秘,從最基本的網絡協議(如TCP/IP)開始,理解數據是如何被分割、打包、傳輸,最終在遙遠的計算機之間實現信息的交換。你將瞭解到IP地址、端口號的作用,以及路由器、交換機等網絡設備是如何協同工作的。 我們將從更廣闊的視角,展望信息世界的未來。隨著人工智能、大數據、雲計算等技術的飛速發展,計算機的“數字生命”將更加豐富多彩。本書將為你勾勒齣這些前沿技術的基本概念,並展望它們如何進一步改變我們的生活和工作方式。 本書的獨特之處: 從零開始,循序漸進: 無論你是否有計算機基礎,本書都將帶你從最基礎的概念開始,逐步深入。 可視化講解,生動形象: 我們將運用大量的圖示、比喻和生活化的例子,將抽象的技術概念變得直觀易懂。 聚焦核心原理,深入淺齣: 本書不追求麵麵俱到,而是專注於計算機工作原理的核心環節,力求將最本質的知識傳遞給你。 理論與實踐結閤: 在理解原理的同時,我們會適時提供一些簡單的思考題和實踐建議,鼓勵你主動探索。 不僅僅是“怎麼做”,更是“為什麼”: 我們不僅會告訴你計算機如何工作,更會解釋背後的邏輯和原因,讓你真正知其所以然。 《探秘信息世界的奇妙旅程:從零開始的數字生命》將為你開啓一扇通往數字世界的大門。閱讀本書,你將不再僅僅是計算機的使用者,更是一位洞察信息世界運作規律的探索者。你將以全新的視角審視你身邊的數字設備,理解它們如何工作,以及它們為我們帶來瞭怎樣的奇跡。準備好迎接這場知識的盛宴,一起揭開數字生命的麵紗吧!