
矢澤久雄
日文版重印41次,“計算機組成原理”圖解趣味版,蹲馬桶就能看懂的編程基礎知識!本書適合:菜鳥程序員入門進階;中級程序員查漏補缺;高手程序員向家人(女友、老媽等)普及計算機知識。如何向小學生講解CPU和二進制?如何向中學生講解內存和磁盤?如何向女高中生講解操作系統的原理?如何向老奶奶說明顯示器和電視的不同?如果你完全沒有思路,就應該讀一讀這本書。以圖配文,深入講解編程基礎知識;語言通俗,即使是文科生也能看得懂。
一本計算機原理入門書籍,主要是給門外漢進行科普吧,初學者也可以稍作參考。簡單翻了翻,主要是用來懷舊了,計算機專業浸yin七載,可惜終究是錯付了。
自己嚇唬自己是最可怕的事情,謹以此話與未看本書前就對程序犯迷糊的你共勉。
大學生讀物,大學三年級的時候讀過同作者寫的《計算機是怎樣跑起來的》,當時驚爲天人,許多觀點對我理解計算機都有很大的幫助。最近在找計算機學習材料時,多次看到這兩本《程序/計算機是怎樣跑起來的》被提及,因爲自己是一箇中級開發工程師了,對計算機的理解更加深刻,這本書對我的幫助已經很少了。如果你不從事程序相關的工作,這本書有點難;如果從事程序相關工作,而且是一名初級開發,可以看一看。
作爲一個非專業人士,囫圇吞棗地把這本科普讀物看完了,作者把原理和概念描述的很清楚,通俗易懂,弄明白了之前有些沒搞明白的,還是有收穫的。談一下體會: 1.這本書把看似複雜的程序運行原理說得通俗易懂,這種站在讀者認知習慣角度的寫作方式值得太多的中國作者去學習,特別是教育方面的。寫書的目的是讓讀者看明白的,如果看不明白就有很大畏難情緒,不利於知識的傳播。基督教傳播那樣廣泛,是因爲聖經都是在敘述故事,通俗易懂,而佛經太難了,普通人很難讀懂,不利於佛教的傳播。 2.電腦和人腦有很多相似之處,處理信息的過程,內存和硬盤之間的關係。按照目前的發展趨勢AI肯定會在某一時間點上全面超過人類。但是他沒有感情和情緒,是個純粹理性的經濟型大腦,在某些方面可以很好地輔助人類決策。 3.人類對於電腦科學的開發,其他科學技術開發也一樣,都是朝着符合人類認知和使用習慣的方向發展,即使走了彎路也都要轉回來。任何產品的設計都要懂一點人機工程學,因爲這是人類的習慣。比如windows操作系統的成功就是人機界面友好。
這本書對專業人士來說可能太初級了對我來說還是有些深。但確實讓我學習到很多計算機知識!
程序是怎麼跑起來的 總結 一、CPU Cpu是寄存器的集合體,包括累加、標誌、程序計數器(決定程序流程)、基址、變址、通用、指令和棧寄存器。 二、數據 數據用二進制表示是因爲IC(集成電路)只有2個狀態。計算機處理數據基本單位是一個字節,即8位,處理的數據都是8的倍數;反碼補碼都是爲了方便計算機處理的數據形式;算數右移和邏輯右移是不同的右移方法,邏輯計算是計算機的基礎; 三、小數運算 和十進制10除於3除不盡一樣,二進制按照人類現有的設計表示方法也有無法表示的小數。爲了得到正確的運算結果,可以採用*倍數後化作整數去運算的方法。 四、內存 內存的邏輯模型就是樓房,佔有的樓層數就是佔用的內存的大小,例如聲明變量是整型就是4個字節。利用內存有幾種形式,數組、棧、隊列、鏈表、二叉樹。 五、磁盤 程序需要讀入內存才能運行,磁盤是存儲的一種便宜介質,還可以當作虛擬內存,在一定程度上協助程序運行。 六、壓縮數據 壓縮算法就是數據的另一種表示方式,通過各種壓縮算法簡單存儲後,可以再次運算還原的方法。其中哈夫曼算法是通過統計頻率來設計的算法,能比較大的壓縮。因爲圖片損失一點質量沒有太大的影響,所以除了有bmp無損格式,還有jpeg,tiff,gif等格式或多或少採用一定技法去壓縮過的圖片格式。 七、運行環境 程序的運行環境=操作系統+硬件。windows克服了除了cpu以外的硬件差異,是把大部分程序都要做的和硬件交互的事情都處理好了,提供了api接口給所有其他的應用程序調用。因爲不同操作系統提供的api不同,jvm會自己帶一套虛擬系統來兼容不同操作系統。操作系統通過bios中的引導程序開啓,bios包含鍵盤、磁盤、顯卡等基本控制程序。 八、可執行文件 計算機只能運行本地代碼,本地代碼是數值的羅列。可以通過編譯器吧高級語言的源代碼轉化成本地代碼,編譯以後還要進行鏈接生出可執行文件,如.exe文件才能運行。將一些大家都會調用的函數等寫成通用的即dll文件,可以方便大家統一調用。 九、外圍設備 外圍設備如鍵盤、鼠標、打印機等採用中斷請求的方式來實現實時處理。圖片顯示是往主存的一部分空間寫入數據來顯示,現在是有獨立顯卡來處理。 總結:從沙子到純硅到晶圓到光蝕到芯片到cpu,把一堆ic堆在一起形成可以計算的硬件;再想出方法把現實世界的數據和這些硬件聯繫起來表示出來,找到最簡單的方法就是二進制數,然後需要通過各種編碼和規範把字母、文字、小數都能表示出來。這時候除了快速運算的cpu還需要東西存儲,就分爲了速度快的內存和速度慢的磁盤。因爲很多時候數據的表示有很多事重複的東西,在傳輸或者保存等情況下需要體積小,所以可以通過算法算出另一種表示方法去記錄。這種算法分成可逆和不可逆的算法,不可逆如jpeg等圖片格式。有了這一切以後,大家都可以寫程序去計算數據了。但因爲有很多非常底層的東西既非常深奧又經常被大家重複使用,於是就把這部分抽象化做出了操作系統。有了系統以後還有很多.dll文件事後面豐富的一些通用的處理函數。但因爲操作系統也可以寫出很多,也有些高級編程語言爲了兼容不同操作系統,自己再抽象一層,對每個操作系統又封裝了自己的一套方式,例如jvm,只要各系統都裝上它,程序就可以開發一次,到處使用。這些都完善之後,計算機的運算基本完善,但是還缺少控制輸入和輸出的方式,於是對於外圍設備採用了中斷請求的方式去做交互,只要你來找我,我纔去理你,而不是時刻都在關心你在幹什麼。然後外圍設備有很多,類型也有很多,於是給每個廠家都給了一套統一的操作系統要求的規範。不過你自己怎麼設計和運行你的硬件,反正同樣的硬件和功能要按照我的規範可以使用,或者你給我一個翻譯包,我就知道使用你,這就是驅動程序。完。
【 程序是怎樣跑起來的·總結】 本書最推薦的part:簡介明瞭的配圖 比較基礎,系統的捋了一遍計算機系統的基礎知識,但是對於完全小白有難度。特別是進制的part。補充的part有小數的表示,壓縮文件,內存磁盤 “程序”核心: 程序地址 程序流程 數據地址 數據值 cpu(一堆寄存器組成)<—內存(緩存程序和數據)<—磁盤 cpu(一堆寄存器➕控制器(讀 寫 存)➕運算器➕標誌器) 運行環境=操作系統 + 硬件(AT兼容機) 源代碼(哪都能運行)—編譯—>本地代碼(對應os)—鏈接—>exe文件,CPU解釋運行 程序(源代碼)—API—>OS—PORT“移植”根據環境編譯源代碼,CPU解釋運行—>硬件(機器語言,本地代碼,目標文件) 應用程序向操作系統傳遞指令的途徑稱爲API(Application Programming Interface) 操作系統是多個程序的集合體 這裏,我希望製作應用的程序員們意識到一點,那就是你們製作的不是硬件,而是利用操作系統功能的應用。雖然對程序員來說,掌握硬件的基本知識是必需的,不過,在操作系統誕生以後,就沒有必要再編寫直接控制硬件的程序了。這樣一來,製作應用的程序員就逐漸同硬件隔離開來了。也就是說,程序員是很少關注現實世界(硬件)的。 文件是操作系統對磁盤媒介空間的抽象化。 程序是操作系統、中間件、應用等所有軟件的統稱。 複習時,看書籤即可,每章開頭熱身問答
本書最推薦的part:簡介明瞭的配圖 比較基礎,系統的捋了一遍計算機系統的基礎知識,但是對於完全小白有難度。特別是進制的part。補充的part有小數的表示,壓縮文件,內存磁盤 “程序”核心: 程序地址 程序流程 數據地址 數據值 cpu(一堆寄存器組成)<—內存(緩存程序和數據)<—磁盤 cpu(一堆寄存器➕控制器(讀 寫 存)➕運算器➕標誌器) 運行環境=操作系統 + 硬件(AT兼容機) 源代碼(哪都能運行)—編譯—>本地代碼(對應os)—鏈接—>exe文件,CPU解釋運行 程序(源代碼)—API—>OS—PORT“移植”根據環境編譯源代碼,CPU解釋運行—>硬件(機器語言,本地代碼,目標文件) 應用程序向操作系統傳遞指令的途徑稱爲API(Application Programming Interface) 操作系統是多個程序的集合體 這裏,我希望製作應用的程序員們意識到一點,那就是你們製作的不是硬件,而是利用操作系統功能的應用。雖然對程序員來說,掌握硬件的基本知識是必需的,不過,在操作系統誕生以後,就沒有必要再編寫直接控制硬件的程序了。這樣一來,製作應用的程序員就逐漸同硬件隔離開來了。也就是說,程序員是很少關注現實世界(硬件)的。 文件是操作系統對磁盤媒介空間的抽象化。 程序是操作系統、中間件、應用等所有軟件的統稱。 複習時,看書籤即可,每章開頭熱身問答
給四年級的小學生講完這本書了,但章節重新安排過,把程序運行相關的章節安排到一起。程序和彙編的對應以及指令的執行是本書的亮點、重點和難點,有趣有料,值得一看;二進制轉換不太好理解,涉及的數學超過了孩子的理解能力。 總體來看,本書還算是通俗易懂,但因爲涉及編譯原理,操作系統,彙編,組成原理等內容,細節不夠的時候始終有隔靴搔癢的感覺,同時又缺乏實驗來促進理解,最後可能只留下一個概念或者印象。要是能有類似於《我的第一本算法書》那樣搭配的APP就完美了。 不管怎麼樣,本書可以作爲《深入理解計算機系統》的入門版和科普版。
程序是怎樣跑起來的 矢澤久雄 3個想法 ◆ 第5章 內存和磁盤的親密關係 >> 1.存儲程序方式指的是什麼?2.通過使用內存來提高磁盤訪問速度的機制稱爲什麼?3.把磁盤的一部分作爲假想內存來使用的機制稱爲什麼?4.Windows中,在程序運行時,存儲着可以動態加載調用的函數和數據的文件稱爲什麼?5.在EXE程序文件中,靜態加載函數的方式稱爲什麼?6.在Windows計算機中,一般磁盤的1個扇區是多少字節? >> 1.在存儲裝置中保存程序,並逐一運行的方式2. Disk Cache (磁盤緩存)3.虛擬內存(virtual memory)4. DLL (DLL文件)5.靜態鏈接6. 512字節 >> 函數的加載方式有靜態鏈接和動態鏈接兩種。 才開始看這本理性唉,看了書評也容易理解也感謝,以上想法是沒學過的,以後多看