-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

編碼——隱匿在計算機軟硬件背后的語言

( 簡體 字)
作者:左飛,薛佟佟類別:1. -> 程式設計 -> 綜合
   2. -> 教材 -> 數位邏輯
譯者:
出版社:電子工業出版社編碼——隱匿在計算機軟硬件背后的語言 3dWoo書號: 33948
詢問書籍請說出此書號!

缺書
不接受訂購

出版日:10/1/2012
頁數:436
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
不接受訂購
ISBN:9787121181184
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

推薦序
《道德經》有云:大方無隅,大象無形,也就是老子所說“道”的至高境界。世界上
最恢宏、壯麗的氣派和境界,往往并不拘泥于一定的事物和格局,而是表現出“氣象萬
千”的面貌和場景,科學知識的論述也是如此。科學不一定等同于晦澀和深奧,最復雜
的理論也可用最簡單的方式描述。這就是普遍存在于現實世界的辯證的、樸素的唯物主
義精神。
我想 Charles Petzold 就是這樣一位智者。作為Windows 編程界開創者之一和世界頂
級的技術專家,他在Windows 編程方面著述豐富,在基礎計算機理論書籍方面也取得了
卓爾不凡的成就。他善用豐富的想象和清晰的筆墨將看似繁雜的理論描述得生動、簡單,
使讀者不會感到枯燥和生硬。尤其這本暢銷多年、經久不衰的《編碼——隱匿在計算機軟
硬件背后的語言》(Code:The Hidden Language of Computer Hardware and Software)更是
化腐朽為神奇,改晦澀為通俗之杰作。即使讀者不是計算機專業的人士,在Petzold 筆
墨的引導之下,也能夠輕松閱讀該書。書中使用像電線、電燈泡、觸發器等這些非常常
見的零件,拼拼接接,最后令人驚異地建造了一臺電子計算機。讀者在閱讀過程中,循
序漸進地學習有關計算機系統基礎和構造的知識,作者的奇思妙想和妙趣橫生的講述方
式不得不令人贊嘆。
透過現象進而探索本質可以發現新事物;將復雜的事物簡單化,可以發現解決問題
的新方法。作者將那些看似復雜的理論轉換成我們熟悉的諸多景象,使讀者不由自主地
跟隨他的思路打造這臺只有電線、電燈泡和觸發器組構成的龐大的計算機系統。
V 􀁜
我閱讀了本書的譯稿,并非常欣喜地將其推薦給每一位讀者,我相信讀者都能獲益
良多。本書的譯者做了一件非常有意義的事情,將一部優秀的作品介紹給讀者。他們嚴
謹的工作將本書詮釋得非常出色,使之在不喪失原作風采的基礎上更貼合中國讀者的習
慣。
最后,我還是想將《道德經》上的兩句話來送給各位讀者——“為學日益,為道日損,
損之又損,以至于無為,無為而無不為”。衷心希望各位讀者有朝一日都能夠在學問上到
達無為而治的境界。


譯者序
在想到要給《編碼——隱匿在計算機軟硬件背后的語言》(Code: The Hidden Language
of Computer Hardware and Software)寫一篇序言的時候,內心就不由得激動起來。能夠翻
譯這部經典之作實屬吾輩之榮幸。早在一年多之前,電子工業出版社的編輯跟我提到這
本書的翻譯之事時,我便有頗大的興趣。一是由于該書作者Charles Petzold 的鼎鼎大名,
二是由于該部作品本身內容之不凡。
作為 Windows 編程界的一位傳奇人物,Charles Petzold 早在1994 年就作為僅有的七
人之一(并且是唯一的作家)被《視窗雜志》和Microsoft 公司授予Windows Pioneer 獎。
而作為一名世界頂級的技術作家,他的大作Programming Windows 則是盡人皆知的Win32
API 編程經典,是學習Windows 編程的必讀之作。令我們欣喜的是,除了Windows 程序
設計方面的著作,Petzold 還撰寫了這部講述計算機工作原理的書籍,而且同樣堪稱經典。
本書的翻譯過程漫長而又愉快,書中的精彩內容不斷給我們以驚喜。Petzold 采用的
敘述方式奇特卻又如此自然,他首先從歷史的角度審視了計算機技術的發展脈絡,繼而
自底向上地將計算機體系結構方面的知識娓娓道來。在Petzold 的筆觸下,導線、燈泡以
及觸發器等簡單部件,通過精妙的組裝,竟然構建出了一臺電子計算機,令我們在翻譯
的過程中不禁有動手一試的沖動,但總是又被他精彩的筆觸所吸引而欲罷不能。Petzold
在這本技術書籍里旁征博引,從美國當紅的影評人到百年之前的布萊葉盲文,從史密
斯·索尼亞的滑尺到馮·諾依曼的構想,從石破天驚的論文《思維之際》到圖形化革命,
看似信手拈來,然則處處別出心裁。
VII 􀁜
這些被有機結合起來的零星知識,仿佛又把我帶回了大學的課堂。所涉及的問題包
括計算機體系結構、匯編語言及數字電子技術等等。那些已經久遠而又模糊的知識驟然
間變得異常清晰而且格外生動。這些知識原本只會出現在高校的計算機專業課堂里,令
人驚奇的是,盡管遍布于世界各地的本書讀者往往有著各不相同的專業背景,而這卻絲
毫不影響本書內容所帶給他們的震撼!
所謂經典,就是歷盡歲月的洗滌,依然毫不褪色,然其光彩卻歷久彌新。我想本書
被奉為經典之作當之無愧。
為了能夠將該書的精彩原原本本地呈現給廣大中國讀者,并在保證質量的前提下力
爭讓該書早日與廣大讀者見面,本書的譯者始終秉持著謹慎嚴肅的態度,對許多詞句都
推敲再三,力求精益求精。在此期間,我們得到了許多師長和友人的支持與幫助,感激
之情溢于言表。特別是南京航空航天大學丁秋林教授,他對我們的翻譯工作給予了極大
的支持,并欣然為本書提筆作序,在此我們對丁教授表示誠摯的謝意。
參與本書翻譯工作的人員還有北京拓爾思股份有限公司工程師初甲林、哈爾濱理工
大學研究生劉悅、南京航空航天大學信息科學與技術學院研究生高新、高陽、鄧明強和
趙德志。高新與高陽曾參與多個國家重點科研課題;鄧明強與趙德志在嵌入式開發方面
具有多年經驗。他們在百忙之中積極地參與了本書的翻譯工作,在此向他們表示深深的
感謝。此外趙學健、歐陽鍵兩位博士也參與了部分章節的審校工作,在此也向他們一并
表示感謝。
在本書即將付梓之際,除了激動喜悅之外,譯者又多了一份惶恐,盡管我們幾經校
對,并在翻譯過程中始終以謹慎求實的態度對一些技術細節和翻譯方式反復討論,力求
表意準確。然而限于時間倉促,紕漏和欠缺之處在所難免,言語之中有失偏頗之處,還
望讀者不吝賜教和批評。聯系信箱:beckham@vip.163.com。
薛佟佟
2009 年秋于南京

作 者 序
在真正開始撰寫這本書之前,紛繁的思緒在我的腦海中已經縈繞了近十年之久。但從著手寫作,一直到出版,我不斷反復地問著自己一個問題:這本書是講什么的?
關于這個問題我總是找不到合適的答案。我想說:“這本書將帶領大家通過一段信息技術革命的旅程重新感觸現代計算機技術。”語畢,我內心糾結,這個回答真的將這本書的內容完整詮釋出來了嗎?
最后我不得不承認:“這本書其實是講述計算機如何工作的。”
我之所以有些底氣不足,那是因為我已經猜到了某些讀者的反應:“嗨,這種書我早就讀過了。”但我會立刻告訴他:“不,這種書你并沒有讀過。”對于這點,我堅信不疑。因為這本書并不是講“計算機——如何——工作”。書中并沒有用一張又一張描述磁盤的插圖,用各種箭頭解釋數據是如何被輸送到計算機的,書里面也沒有裝載著一節又一節“0,1數據”的“火車”圖片。明喻與暗喻是文學描述中精妙的輔助手段,但它們常常掩蓋了科學技術的真正光芒。
我還聽過另一個說法:“人們不愿意了解計算機如何工作。”對于這句話我毫無保留地贊同,因為就我個人來說,也是在不經意之間才體會到理解事物如何運作的這一過程是多么有趣。但是這并不意味著我對世上一切事物的運作機制都感興趣,都有所了解,因此我絕對不會在任何場合向大家解釋我房間里的冰箱的工作原理。
然而與此同時,經常有人向我問起一些涉及計算機內部運行機理的問題。一個常見的例子就是:“‘存儲器(storage)’與‘內存(memory)’有何區別?”
對于計算機用戶而言,這個問題要是搞不清楚,的確“寸步難行”,可以看到,市場上考察個人計算機的存儲性能,最主要的就是這兩個概念。即便對于最初級的計算機用戶來說,他們也一定需要了解到底多少“兆字節”或多少“吉字節”的存儲器才能應對運行在其上的程序。如果進一步去思考,這些初級用戶或許更加想了解計算機中的“文件”是什么概念,甚至連帶這些文件如何從存儲器加載進內存,又如何從內存存儲到存儲器,他們也非常期望學習這些知識。
像這類“存儲器-內存”問題的解答大都使用類比法:“內存就好比你的辦公桌,而存儲器就好比你的文件柜。”就問題本身而言,它的確給出了滿意的回答。但我對此答案并不滿意,主要原因在于這個答案將計算機的體系結構與辦公室的結構等同起來,但是內存與存儲器的區別其實是在邏輯層面上的,它體現著計算機體系結構的實際需求與存儲器客觀性能之間的矛盾,簡單地說就是我們找不到一種同時具備這兩種存儲器所有優點的存儲媒介,這些優點就包括存儲速度塊、存儲容量大、非易失性等等。今天的計算機都采用“馮諾依曼體系結構”——五十年來它一直是計算機體系結構的主導,而內存與存儲器的區分也正是由于這種體系結構的不足所導致的。
還有一些計算機用戶問我這樣一個問題:“為什么Macintosh環境下的程序不能在Windows下運行?”我想立刻回答這個問題,但在我剛剛張開嘴的時候就立刻意識到,這個問題涉及太多的技術細節,要想徹底搞清楚,那提問的這位朋友也一定非準備和我來一次“茶話會”不可。
我希望這本書能夠成為大家理解這些問題的“助手”,這種理解我希望不是抽象層面上的,而是具有一定深度,這種深度甚至不遜于“電氣工程師”和“程序員”的理解。我同時也非常希望大家能夠理解:計算機是二十世紀技術領域的“登峰造極之作”,它是一種值得欣賞、具有“美”學文化底蘊的人類偉大成果,這種“美”不需要明喻與暗喻的額外修飾。
計算機擁有與生俱來的層次化體系結構,這種結構的底層是晶體管,其頂層則是計算機顯示器上所呈現的信息。自底向上分析該結構的每一層——這也是本書的編寫結構——其實這一切并沒有人們想象中那么難。當然,現代計算機的內部結構不斷推陳出新,但其本質上仍然是一些常見且簡捷的操作集合。
盡管今天的計算機比起25年前,以及50年前的都復雜許多,但它們在本質上是完全一致的。學習技術發展史的重要意義正在于此:追溯的歷史越久遠,技術的脈絡就變得越清晰。因此,我們需要做的就是確定某些關鍵的歷史階段,在這些階段,技術最天然、最本質的一面將清晰可見。
在這本書中,我回溯了自己所能找得到資料的計算機發展史。令我自己也感到驚訝的是,有時竟然一直追溯到19世紀,甚至使用了早期的電報設備來演示計算機是如何構建的。至少從理論角度來看,本書的前17章中提到過的所有設備,都可以利用已經存在了一個世紀的簡單電子器件來構造。
這些古董級技術的使用令本書蒙上了一層懷舊的面紗。我要強調的是Code是這樣一本書,它永遠不會被命名為諸如The Faster New Faster Thing或Business @ the Speed of a Digital Nervous System。在這本書中,“bit”定義在第61頁,“byte”的定義則出現于第164頁。晶體管直到第127頁才被介紹,而且只是順便提及而已。
在對計算機工作原理介紹方面,本書將會一直深入到本質(例如,只有少數書會去介紹計算機處理器的實際工作機制),但整本書的節奏是相對緩和的。在保證內容深度的基礎上,我盡量使讀者在學習的旅程中保持輕松愉悅的心情。
我最后還是要說,書里面沒有那種裝載著一節又一節“0,1數據”的“火車”圖片。

Charles Petzold
2000年8月16日
內容簡介:

這是一本講述計算機工作原理的書。不過,你千萬不要因為“工作原理”之類的字眼就武斷地認為,它是晦澀而難懂的。作者用豐富的想象和清晰的筆墨將看似繁雜的理論闡述得通俗易懂,你絲毫不會感到枯燥和生硬。更重要的是,你會因此而獲得對計算機工作原理較深刻的理解。這種理解不是抽象層面上的,而是具有一定深度的,這種深度甚至不遜于“電氣工程師”和“程序員”的理解。

目錄:

第1章 至親密友 1
編碼是什么?在本書中,這個詞的意思是指一種用來在機器和人之間傳遞信息的方式。換句話說,編碼就是交流。對任何能聽見我們的聲音并理解我們所說的語言的人來說,我們發出的聲音所形成的詞語就是一種編碼。用手電筒能代替聲音來與朋友交談嗎?當然值得一試。
第2章 編碼與組合 7
莫爾斯碼也被稱做二進制碼,因為這種編碼的組成元素只有兩個——“點”和“劃”。不過,點、劃的組合卻可以表示你想要的任意數目的碼字。這其中的規律是什么?本章我們就來探討一番。
第3章 布萊葉盲文與二進制碼 13
布萊葉盲文是為了便于盲人閱讀而發明的一種編碼。在這一章中我們將解析布萊葉盲文,來看看它是如何工作的。我們并不是要真的學習布萊葉盲文,而且也無須刻意記住關于它的什么內容。我們僅僅希望從中歸納出編碼的一些性質。
第4章 手電筒的剖析 21
為了理解電在計算機中的工作原理,我們先得仔細鉆研一番電學,不過不要擔心,只需要一部分基礎知識就夠了。在本章,我們將以手電筒為教學道具,引導你走入神秘的電學世界。
第5章 繞過拐角的通信 32
在第1章,我們曾經講過用手電筒與朋友進行交談的方法,但是這樣的方式是有局限性的,你的交流對象必須住在街對過,而且你們臥室的窗口正好相對。但是,現實不會總是如此。當手電筒的光無法到達朋友的臥室時,怎樣與他們進行無聲的交流呢?電路或許可以助你一臂之力。
第6章 電報機與繼電器 40
全球性即時通信對于我們來說已經司空見慣,你要是生活在19世紀早期,可沒這么方便。你當然可以進行即時通信或者遠距離通信,但是不能同時做到這兩點。即時通信受聲音傳播距離的限制,或者受視野的限制。使用信件倒是可以進行更遠距離的通信,但是寄信耗費的時間太多,并且需要借助于交通工具。為了解決這個問題,電報應運,而生而伴隨著電報誕生的繼電器更是具有重要意義的偉大發明。
第7章 我們的十個數字 47
人們很容易理解,語言只不過是一種編碼。比如英文中的“cat”(貓)在其他語言中可以寫做gato、chat、Katze、KOIIIK或katta。然而,數字似乎并不是那么容易隨文化的不同而改變。不論我們說什么語言,或使用什么樣的發音,在這個星球上的所有人都用以下方式來書寫數字:0,1,2,3,4,5,6,7,8,9。你了解這十個數字么?
第8章 十的替代品 55
對于人類而言,10是一個非常重要的數字。它是我們大多數人擁有的手指或腳趾的數目。我們人類已經適應了以10為基數的數字系統。但是只能使用十進制來計數嗎?如果人類像卡通人物那樣每只手只有4根手指會怎樣?
第9章 二進制數 71
二進制是最簡單的數字系統,其中只包含兩個數字:0和1。二進制中的1位(bit)稱為1比特,我們可以用它來表達簡單的信息:是或不是;亮或滅;打開或關閉,等等。而事實上只要信息能轉換成兩種或多種可能性的選擇,就都可以用比特來表示。這種例子在日常 生活中隨處可見,比如照相機膠卷的膠片速度,各種商品包裝上的條形碼。
第10章 邏輯與開關 90
對于古希臘人而言,邏輯是在追求真理的過程中所使用的一種分析方法,是一種哲學形式。而英國的數學家喬治布爾卻認為可以找到一種數學形式來描述邏輯,因此他發明了布爾代數。更重要的是,布爾代數運算可以用開關、導線和燈泡組成的電路來實現,布爾代數中的AND和OR,與線路中開關的串聯和并聯,有著奇妙的對應關系。
第11章 門 108
繼電器像開關一樣,可以串聯或并聯在電路中執行簡單的邏輯任務。這種繼電器的組合叫做邏輯門(logic gate),也簡稱門。這里提到的邏輯門執行“簡單”邏輯任務是指邏輯門只完成最基本的功能。本章就介紹那些用以完成最基本邏輯任務的門。
第12章 二進制加法器 135
加法是算術計算中最基礎的運算,如果想搭建一臺計算機的話,首先就要搭建出計算兩個數加和的器件。本章我們將利用前面的章節中用過的開關、燈泡、導線、電池、邏輯門等這些簡單的元件,搭建一個二進制加法器。
第13章 如何實現減法 147
當你確信繼電器連接在一起真的可以實現二進制數加法的時候,你可能會問:“如何實現減法呢?”問得好!這表明你是相當有覺察力的,加法和減法在某些方面互相補充,但是在機制上二者卻存在本質區別。不過,沒關系,我們可以想一些辦法,把減法運算變成加法。
第14章 反饋與觸發器 160
想象一下,如果你沒有了記憶力,該如何去數數?我們不記得剛剛數過的數,當然也就無法確定下一個數是什么!同理,一個能計數的電路必定需要觸發器。本章要介紹的就是各種觸發器。
第15章 字節與十六進制 186
在前面的章節中,加法器、鎖存器以及數據選擇器的輸入和輸出形式都是8位的數據流,也即數據路徑的位寬為8,為什么要定義為8位呢?為什么不是6位、7位、9位或10位?本章就要解釋其中的緣由。
第16章 存儲器組織 197
每天清晨,我們將自己從沉睡中喚醒,這時大腦的空白會很快被記憶填滿。我們立刻會意識到自己身在何方,最近做了些什么事情,有什么計劃打算。有的事情我們很快就能想起來,但有時并非如此。我們可以借助許多工具來記錄信息,比如筆和紙、磁帶,當然現在還可以使用存儲器。
第17章 自動操作 215
人類的本性中帶有一些懶惰的特質。我們總是抵觸繁重的工作,對枯燥的、重復性的工作深惡痛絕。所以,當你必須用前面搭建的加法器計算100個數,甚至更多個數的加法時,有一種念頭就會不可遏制地從腦子里冒出來:怎樣讓加法器自動地完成數據輸入和計算呢?辦法肯定是有的,那就是編寫程序。
第18章 從算盤到芯片 252
算盤、滑尺、納皮爾骨架、差分機、解析機、繼電器、電子管、晶體管、芯片、計算機;甘特、帕斯卡、萊布尼茲、杰奎德、巴貝芝、圖靈、馮諾依曼、香農;IBM、貝爾實驗室……你覺得應接不暇了嗎?把這些你或者熟悉或者生疏的名詞和名字串起來,就是人類的計算工具發展史。讓時光倒流,去看看那些精巧的工具,感受天才們的巧思吧!
第19章 兩種典型的微處理器 276
將中央處理器的所有構成組件封裝到一塊硅芯片上,就得到了微處理器。第一片微處理器芯片誕生于1971年,即Intel 4004系列,其中集成了2300個晶體管,你或許覺得可笑——如今家用計算機的微處理器上所安置的晶體管數量已經以億為計量單位了。但是,從本質上來說,微處理器實際所做的工作并沒有變。在本章,我們就來看看兩種有著輝煌歷史的典型微處理器:Intel 8080和Motorola 6800。
第20章 ASCII碼和字符轉換 307
計算機中的存儲器唯一可以存儲的形式是比特,因此如果想在計算機上處理信息,就必須把它們轉換為比特的形式來存儲。我們已經掌握了如何用比特來表示數字和機器碼。如何用它來存儲文本呢?畢竟,人類所積累的大部分信息,都以各種文本形式保存的。下面就輪到ASCII碼出場了!
第21章 總線 325
一臺計算機包括很多部件:中央處理器、存儲器、輸入/輸出設備等。通常這些部件按照功能被分別安裝在兩個或更多的電路板上。這些電路板之間通過總線(bus)通信。如果對總線做一個簡單的概括,可以認為總線就是數字信號的集合,而這些信號被提供給計算機上的每塊電路板。
第22章 操作系統 346
你或許夢想過自己組裝一臺近乎完整的計算機,像老木偶匠蓋比特雕刻木偶匹諾曹一樣,全部親自動手用小零件完成。不過在你的機器能完成你想要的操作之前,還差一個重要的東西——操作系統!
第23章 定點數和浮點數 365
整數、分數以及百分數等各種類型的數字與我們形影不離,它幾乎出現在我們生活的所有角落。例如你加班2.75小時,而公司按正常工作時間的1.5倍支付你工資,你用這些錢買了半盒雞蛋并交了8.25%的銷售稅。在計算機的內存里,所有的數都表示為二進制形式。通過前面的學習,我們知道2用二進制可以表示為102,可是2.75用二進制怎樣表示呢?這就是本章的主題。
第24章 高級語言與低級語言 381
第22章介紹了如何編寫一段簡單的程序,讓我們可以利用鍵盤將十六進制機器碼輸入計算機,以及通過視頻顯示設備來檢查這些代碼。但是使用機器碼編寫程序就如同用牙簽吃東西,伸出手臂費半天勁刺向食物,但每次都只獲取到小小的一塊,用這種低級語言編寫程序既費力又費時,有悖于我們發明計算機的初衷。不過,人們想出了一種效率更高的編程方法——使用高級語言。
第25章 圖形化革命 398
回顧歷史,從第一臺繼電器計算器出現到現在為止,六七十年過去了,計算機的處理速度飛速增長。不過要充分利用計算機日益增長的運算和處理能力,就必須不斷改進計算機系統中的用戶接口(User Interface),因為它是人機交互的軸心。圖形化革命來了!
序: