代碼揭秘︰從C/C++的角度探秘計算機系統

代碼揭秘︰從C/C++的角度探秘計算機系統
定價:336
NT $ 336
  • 作者:左飛
  • 出版社:電子工業出版社
  • 出版日期:2009-09-01
  • 語言:簡體中文
  • ISBN10:7121093103
  • ISBN13:9787121093104
  • 裝訂:平裝 / 415頁 / 普通級 / 單色印刷 / 初版
 

內容簡介

本書從程序設計角度出發,以C/C++為描述語言,以Visual C++為形式工具,將隱藏在代碼背後的關于計算機組成原理、計算機操作系統等方面的機制和知識娓娓道來,不僅讓讀者知其然,更要讓讀者知其所以然。並讓這些知識再反作用于編程實踐,從而幫助讀者寫出更適合機器優化的高質量代碼。揭開代碼背後鮮為人知的秘密,具體說來,全書主要討論了包括計算機底層編碼、內存與指針、計算機指令與代碼系統、函數調用的機制、多級存儲系統、線程與進程的概念以及代碼優化等多個方面的話題。

本書既可作為大專院校相關專業師生的教學參考書,也可供計算機及其相關領域的工程技術人員查閱之用,對于普通計算機愛好者,本書也不失為幫助他們理解計算機底層機制的一本深入淺出的計算機讀物。
 

目錄

第1章 緒論
1.1 計算機系統初探
1.1.1 換個角度看計算機
1.1.2 CPU很好很強大
1.2 計算機語言與編譯技術
1.2.1 如何讓機器理解你
1.2.2 編譯技術與開發環境
1.2.3 程序開發流程
1.3 C語言神話
1.3.1 C語言的歷史
1.3.2 簡單說說C語言的特點
1.4 奇跡的延續
1.4.1 C++的產生與發展
1.4.2 C++與面向對象思想
1.5 本章小結
第2章 揭開數據表示的面紗
2.1 進制系統
2.1.1 最簡單的計數方式
2.1.2 計算機里只有黑白
2.1.3 壓縮表示的二進制
2.2 位與位操作
2.2.1 計算機存儲的單位
2.2.2 位操作和位段
2.3 計算機中的數值
2.3.1 一種最簡單的數
2.3.2 現實世界需要負數
2.3.3 只有整數還不夠
2.4 讓計算機學會寫字
2.4.1 ASCII碼
2.4.2 漢字編碼
2.4.3 更強大的編碼
2.5 C語言基本數據類型
2.5.1 整型
2.5.2 字符型
2.5.3 注意浮點數陷阱
2.6 本章小結
第3章 變量與地址
3.1 程序都在內存中
3.2 很多初學者都怕指針
3.3 睜大眼楮看內存
3.4 數組與指針是近親
3.5 再談指針
3.6 本章小結
第4章 動態內存管理
4.1 malloc和free
4.2 sizeof並不復雜
4.3 內存操作函數
4.3.1 memset
4.3.2 memcpy和memmove
4.4 new和delete
4.5 內存錯誤面面觀
4.5.1 最怕內存泄漏
4.5.2 小心重復釋放
4.5.3 指針是個壞東西
4.5.4 超量寫內存
4.6 使用Visual C++檢查內存泄漏
4.7 本章小結
第5章 代碼與指令系統
5.1 還原代碼的本來面目
5.1.1 內存中的代碼
5.1.2 指向函數的指針
5.1.3 CPU的存儲器
5.1.4 寄存器變量
5.1.5 寄存器組舉例
5.2 指令——簡單or復雜
5.2.1 指令格式
5.2.2 操作類型
5.2.3 操作數類型
5.3 如何找到地址
5.3.1 下一步該做什麼
5.3.2 計算機知道自己需要什麼
5.4 本章小結
第6章 函數與函數調用
6.1 函數與參數
6.1.1 C/C++中的函數
6.1.2 參數傳遞
6.1.3 作用域
6.2 函數的遞歸調用
6.2.1 到處都是遞歸
6.2.2 小心使用遞歸
6.2.3 遞歸與非遞歸
6.2.4 內、外部變量分配原理
6.3 內存的使用
6.3.1 活動記錄與棧
6.3.2 靜態分配
6.3.3 有靜就有動
6.4 程序在內存中的模樣
6.5 本章小結
第7章 多級存儲系統
7.1 存儲系統及層級結構
7.1.1 存儲器分類
7.1.2 存儲器的層級結構
7.1.3 訪問的局部性原理
7.1.4 再談存儲器的層級
7.2 高速緩存
7.2.1 緩存設計策略
7.2.2 多級緩存原理
7.2.3 實際編碼指導
7.3 虛擬內存
7.3.1 何為虛擬內存
7.3.2 虛擬地址
7.3.3 頁面請求與磁盤緩沖
7.3.4 工作集合與系統顛簸
7.3.5 虛擬內存與性能影響
7.4 本章小結
第8章 操作系統交互
8.1 多任務
8.1.1 串行與並行
8.1.2 多任務的實現
8.1.3 並發程序設計
8.2 進程
8.2.1 進程的概念
8.2.2 進程的狀態
8.2.3 進程控制塊
8.3 Win32進程編程
8.3.1 創建進程
8.3.2 環境變量
8.4 線程
8.4.1 線程的概念
8.4.2 多線程
8.4.3 超線程
8.4.4 線程池
8.5 調度
8.5.1 處理器的調度
8.5.2 調度算法準則
8.5.3 常見的調度算法
8.6 Win32線程編程
8.6.1 創建和退出線程
8.6.2 掛起和恢復線程
8.6.3 遠程線程的注入
8.7 本章小結
第9章 瓶頸與優化
9.1 優化還是不優化
9.2 測量與分析的內容
9.3 測量與分析的方法
9.3.1 使用計時器
9.3.2 使用Profile
9.3.3 使用性能監視器
9.4 基本規律
9.4.1 二八法則
9.4.2 安達爾定律
9.5 程序優化路線
9.5.1 優化實踐的經典案例
9.5.2 優化案例的啟示
9.6 編譯器不是萬能的
9.7 實際優化建議
9.7.1 循環條件中的低效
9.7.2 注意字符串的操作
9.7.3 權衡函數調用需求
9.7.4 轉換指針形式代碼
9.7.5 檢查存儲器的訪問
9.7.6 使用循環展開技術
9.7.7 查表替換復雜運算
9.7.8 耗時計算移出循環
9.8 本章小結
附錄A 淺談編程能力的培養與提高
附錄B 程序人生
參考文獻
 

談談“如何選書”

現在文化產業蓬勃發展,圖書出版業也呈現百家爭鳴、百花齊放的態勢。寫書的人多了,書店里的書也多了。讀者可選擇的空間更大了,但讀者淘到一本好書的難度也大了。作者抱怨著寫本好書真難啊,讀者也對歌似的叫嚷道找到一本好書真不容易啊。在讀者正式下決心去買這本書之前,我想從一個讀者的角度來和大家談談“如何選擇一本好書”這個問題。

首先讀者應該明確的一個問題是︰一本技術類或者科普類的書籍之所以存在,必然有它的道理,畢竟知識本身沒有優劣好壞之分,只是看這些知識適不適合你。別人認為好的書對于你來說未必好,這個階段對你作用大的書未必對你永遠都有那麼大的作用。本文之前曾在筆者博客上發表過,很多網友都覺得此文之言較為中肯,很具參考意義。唯獨這句貌似表述“書籍沒有好壞之分,只有適不適合你”之意的句子稍稍引起了一些爭議。對此我想說的是,一方面,我的原句是“知識沒有優劣好壞”而非“書籍沒有好壞”,所以理解上還應對我的話做逸一步的思辨。另一方面,這也是一個態度問題。盡管目前圖書市場的確存在良莠不齊的現象,但如果你最開始就以一種批判的態度去審視手中的書,那試問即使書中有黃金,恐怕你也都會視而不見了吧。況且買書的人是你自己,你也當然應該勇子為自己的行為承擔責任啊。所以我希望下面的文字能夠對正在鬩讀本書的讀者有所啟迪,幫助他們擦亮眼楮,選出真正適合自己的好書。

選書還是得先看看書名、前言和目錄之類的東西。我曾經寫過一本名叫《Ⅵ$ual C++數字圖像處理開發入門與編程實踐》的書,有的讀者寫信夸獎說“這書挺好,內容通俗易憧,實例豐富詳盡”;而有的讀者則批評說這書“太令人失望了,內容藪簡單,沒深度”。‧書名己經點明“開發入門”,這表明這本書就是面向初學者的一本入門書,如果名叫“入門”,內容卻諱莫如深,恐怕有點掛羊頭賣狗肉的嫌疑了吧。所以買書還是要先看好書名,看看適不適合自己。當然,目前有些書的名字起得就有點讓人誤解。比如去年有本書叫《夢斷代碼》,這確實是一本不錯的書,不過這名宇起得就太有蠱惑力了,乍看上去總以為是講程序編碼的,但其實這本書是講歷史的!所以這時,讀者就必須翻看書籍的前言和目錄了。很多讀者容易忽略前言和目錄,這顯然是不明智坤吊作者往往會在前言中對書籍的主要內容、謀篇布局以及讀者對象等信患進行交代,這些信息能夠進一步幫助你確定這本書到底適不適合你

看前言還能獲得的一個信息是這本書的參與者有多少。這個非常重要。我就曾在書店翻到一本講編程的書,書大約有四五百頁,但是參與編寫書籍的人多達四十佘位,真是不禁讓人心底發涼。連貫性對于一本書是很重要的,前後風格不一,內容雜糅,這種書想來就讓人頭疼。四十個廚師炒的一盤菜,這盤菜還能吃不?

另外,如果你想踏踏實實地學好編程,最好不要買國內高校的教材。原因有三。聲先,國內高校的教材往往是注重理論,里面的程序最長都不超過100行,這種書學來只能用來去考“計算機二級”之類的考試,實際的編程能力很難以這些書為墓礎來獲得提升。其次,國內高校的計算機教授很多都長時間不編代碼,實戰經驗匱乏,難寫出緊跟技術發展又兼具實踐意義的書籍。最後,大學教授掛名編書,學生實際搡刀的例子屢見不鮮,這種書難保質量。又有可能出現相互抄襲的情況。例如,前不久爆出的中國工程院某院士被六名學者聯名檢舉學術腐敗的事件,其中一個事頊就是院士主編的書涉嫌抄襲等問題。後來院士出面解釋說被投訴的部分都是由萁他作者執筆撰寫的,畢竟一本書涉及的內容和方向較多,不可能所有專業都由一個人搞。可見在“一人主編,多人參編”的機制之下,書籍質量的控制並不那麼容易,院士尚且若此,其他人更可見一斑。我在寫《visua1 C++數字圖像處理開發入門與編程實踐》一書時,起初翻鬩了來自國內好幾所大學不同的教授寫的書,結果發現好多章節嚴重雷同,某些段落竟然一致到標點符號,真是雷死人了!

除了看書名、前言和目錄,還要看看出版社和作者。這是非常重要的,有時一宇之差,往往謬之千里。原來听過一則趣聞是這樣說的)武俠小說大家金庸封筆已久,很多忠實讀者都渴望他老人家能有再次出山的那一天。後來市場上出現了一本赫然印著“金庸新著”的書,讀者買固去看完後不禁大呼上當,仔納琢磨才發現竟是作者名叫“金庸新”,而非金庸老爺爺重出江溯之“新”作。作者無疑是質量保證的最根本要素。在IT領域,國內也有很多非常優秀的作者,通常的認識是如果一個作者最開始就很負責任,那麼他一般都會負責到底;但是如杲下個作者最開始就不要臉,那他繼續無恥下去也是很正常的。此外,一些大牌出版社還是很注重自身聲譽的。出版社在對遴題的把握、版面的誨寸以及印刷原量控制等方面鄙起著至關重要的作用,所以好的出版社也是優質圖書的一頊重要保證。

上述原則僅僅是莪站在一名普通讀者陶角度所談的關于如何選書的一些淺見,如果能對其他讀者有所幫助和啟發,我將不勝欣喜。
網路書店 類別 折扣 價格
  1. 新書
    $336