[心得] Code (簡體中文版本)

看板CompBook (電腦用書)作者 (「雄辯是銀,沉默是金」)時間10年前 (2014/12/23 11:24), 10年前編輯推噓3(302)
留言5則, 4人參與, 最新討論串1/1
Code: The Hidden Language of Computer Hardware and Software 作者在 1999 年開始寫這本書, 之前擁有的是英文版, 曾經試圖翻閱, 卻總是在其艱難的 英文句子中敗退下來。這是很久很久之前不知道在哪裡聽說到的書, 因為作者 Charles Petzold (windows programming 界的大師級人物) 很有名, 我相信這會是一本好書。 20111212 在台南若水堂 ( http://goo.gl/TGJkEj )看到簡體中文版本, 意外驚喜之下 , 立刻買了下來。55X6 = 330, 花了 330 台幣。這本的簡體中文翻譯算是不錯, 不熟悉 閱讀簡體中文書籍的我也讀得津津有味, 也沒有任何的不流暢之處, 在缺乏繁體中文的版 本下, 是唯一也是不錯的選擇。 這本書的內容是什麼呢?從書名 CODE 來看, 又, 它是一本電腦相關書籍, 作者又是軟體 界大師級人物, 也許有人會猜和程式語言相關, 教怎麼寫程式吧! 不過從簡體中文的翻譯 可以看出, CODE 被翻成編碼的意思 ... 嗯!還是猜不到是吧? 這本書是在講述計算機的故事, 從燈泡、開關到打造出一台計算機以及後來的軟體發展到 網路的故事, 很意外吧!從書名完全看不出來是這樣的內容。 書中作者有一句話我很喜歡:「明喻與暗喻是文學描述中精妙的輔助手段, 但它們常常掩 蓋了科學技術的真正光芒。」在解釋一些專業的技術時, 大多會聽到一些比喻的方式, 不 過有時候的確只有精確的解釋, 才能了解其內涵。 因此我基本不會使用類比,因為類比其實就是在用外部知識來理解當前的話題,很容易把 話題扯開出去。 ref:http://goo.gl/LnnlMV ( http://blog.zhaojie.me/2012/08/programming-languages-arguments-dont-pull-me-in.html ) 在 iWoz 科技頑童沃茲尼克 ( http://goo.gl/JzYCGj )這本書中讀到, Steven Wozniak 從小被傳授電子學相關的知識, 其中包括原子核裡電子的流動與電流的關係, 我那時候心 想: 「好厲害!原來電流可以細談到電子。」而在本書 CODE 中, 從第四章 - 手電筒的 剖析, 我知道這是怎麼一回事了, 也許中學教育早已教過, 但我真的不記得了。 作者從第一章的摩斯電碼開始, 告訴讀者編碼的概念, 如何簡化編碼還原到原來的意思, 盲人使用的文字也是編碼的一種, 封面上每六個凸起或是平的圓點 (簡體中文版本才有) 就是 C, O, D, E 本書書名。 手電筒的線路到電子的流動完成整個電流的移動, 有趣而令人容易理解的比擬, 實在令人 佩服。 從人類十個手指頭的十進位 -> 卡通人物四個手指頭的八進位 -> 龍蝦螯的四進位 -> 海 豚兩個鰭的二進位, 原來印度人發明的阿拉伯數字是如此的偉大, 有了它, 我們得以用同 樣的原理計算八進位、四進位、二進位, 不過得先準備好其他進位的加法表和乘法表。一 路的解釋下來, 讓我有豁然開朗的感覺, 頓悟了原來數字這回事。 再來的邏輯學和燈泡完成了 and/or 運算, 真是神奇, 原來這些數學和計算機是這樣關聯 起來的。快要提到燈泡、電池、開關、導線和計算機的關係, 真期待後面的內容。 本書有 25 章, 372 頁, 平均一章 10 多頁, 很容易就可以看完一個章節, 很容易看下去 , 也很容易沉迷的繼續看下去, 大學時期要是有這樣有趣的教科書, 哪裡需要靠考試逼我 , 自己找時間就會看書, 也就瞭解計算機的工作原理了。是的 code 就是在講述計算機構 造, 如何用相關技術, 完成計算。我一直以為作者是軟體相關工作者, 沒想到果然軟體大 師級人物, 從數學、硬體果然有都有涉獵, 一直以來總是懷疑學校所學的知識到底是應用 在哪裡? 因為工作上幾乎沒用到相關的知識, 現在總算解了我的疑惑, 第十章的邏輯與開 關, 精彩的闡釋了這樣的學問如何應用在計算機的 and/or 運算。 ( http://goo.gl/O6GiQN )原文版本的封面沒有使用盲人的凸點印刷, 簡體中文版本多 花了點成本使用了盲人的凸點印刷。 不過原文版本的燈泡圖形有紅色線條, 簡體中文版本就沒有了, 這樣的確比較不好看。 or gate, and gate, xor gate, nand gate, not gate, buffer 原來是繼電器 (其原理 是透過電池鐵來實作) 透過不同的組合來完成的, 從燈泡開關線路到這些基本 gate, 慢 慢的解釋計算機原理, 再來要講述加法器了, 你會和我一樣很期待嗎? 我似乎開始有印象學生時代的加法器了, 那時候讀起來很無趣, 沒想到透過 code, 我豁 然開朗, 原來半加器、全加器 (half adder, full adder) 是這樣兜出來的, 嗯!這我 有印象。而一補數、二補數原來是用來做減法運算用, 而不是純粹一種數學運算, 計算 機必須透過這樣的方式來完成減法的運算, 知其然的學習方式果然有趣多了。 用電子線路完成加法器很厲害, 但運用機械裝置, 齒輪、槓桿做出計算機我覺得更是神奇 , 這可是不用電的哦!不過可能大台了點 XD 而我也在這之後, 購入了一台monroe 機械式計算機 ( http://goo.gl/8mAe3m )。 ref:http://goo.gl/GZtC2N ( http://moodle.ncnu.edu.tw/file.php/13923/Ch01_%adp%ba%e2%be%f7%b5o%aei%a5v.pdf ) 英國發明家巴貝奇(Charles Babbage)於1833年製造了一部計算用的機器,被命名為巴貝 奇差分機 (Babbage Difference Engine),整部機器包含了25,000個零件,重約3噸,雖然著個機 器經常故障, 但他並沒有氣餒,再接再厲與他兒子在1847年製造出分析機(Analytical Engine), 這也是世界上第一部完全自動計算的機器,它包括了輸入、處理、控制、儲存、輸出五部 門, 可說是後來電腦構想的先驅;因此被稱為電腦之父(Father of the Computer)。 第十四章的內容對我有些難度, 閱讀速度慢了下來, 主要是運用 feedback 的概念來完成 很多神奇的電路。oscillator, R-S Flip-Flop, 電平觸發的 D 型觸發器 (可以用來儲存 訊號), 邊沿觸發的 D 型觸發器, 然後使用 oscillator 和邊沿觸發的 D 型觸發器完成 frequency divider, 在透過連接幾個 frequency divider 完成計數器。 電平觸發的 D 型觸發器 (可以用來儲存訊號) 這可以拿來幹嘛呢?前面有了加法器, 可 以相加兩個數, 如果要加三個數呢?那就需要這個電平觸發的 D 型觸發器來把第一次相 加的結果保存下來, 在與第三個數相加, 是不是很重要呢?也許你也想到這就是電腦上的 ram。 計數器: 很簡單, 就是從 0000, 0001, 0010, 0011 ... 數到 1111 在回到 0000。 ( http://goo.gl/dwZi4B ) 第十六章講述儲存器, RAM 為什麼會被稱為 RAM (Random Access Memory) 是因為它可以 讀取某個位址上的任何一個 bit, 若是其他循序型的儲存器 (ex: tape), 要讀取 101 的 位址值, 需要先讀取 100 的位址。原來是這樣兜起來的阿! 第十七章很複雜, 也是很精彩的一章, 我還無法 100% 理解其中內容, 不過對於計算機的 概念已經有深刻的體認, 要多花點腦力來閱讀。這章的內容雖然也有硬體的部份 (有很多 可怕的硬體元件連接起來), 但我想系統軟體程式設計師一定會很喜歡。從一個加法器漸 漸演變成為可使用組合語言指令的計算機 (computer), 這是怎麼開始的呢?很有趣吧! 從 ram array 開始, 導入 instruction code/operation code (就是常聽到的 op code), 開始了一個簡單的組合語言程式。 之前聽說過:「設計一顆 cpu 就要設計其組合語言」, 我現在終於有了深刻的認識, 原來 這道理是這麼的自然, 哪裡需要花時間搞懂那句話呢? 而不知道 cpu 是怎麼設計出來的 , 只能對那句話有粗淺的體認, 無法了解其真正想說的內容。到了第十九章介紹 intel 8080 時, 為什麼那些 op code 要設計成這樣也有所理解, 能搞懂這些關係, 真是令我舒 體通暢, 沐浴春風。 手上真的有股衝動, 想去買個麵包版, 親手打造第十七章裡頭的計算機電路。而我也能理 解為什麼總是要有個 clock 來產生時脈, 這才能讓 cpu 從 0 開始運轉, 由下而上的貫 通, 了解整個計算機結構, 讓只專注於軟體設計的我非常受用, 原來我寫的 code, 就是 變成這樣來執行的。 前面幾章所提到的硬體元件, 就是要用來打造這樣的一台計算機, 看似簡單的元件, 但經 過複雜的組成後, 就變成你我在用的電腦了。 這是用 intel 8080 打造的 Altair 8800 ( http://goo.gl/pF2s2 ) 看過本書後, 就會知道為什麼上面會有開關和那些燈泡了。現在的電腦當然不會長這樣, 但基本原理都是和這台有著開關和燈泡是一樣的。 ( http://goo.gl/0FOYUs )在自然環境的包圍下, 閱讀如此精妙的好書, 充實感官與知 識上的養份, 實在是一大享受, 我坐在樹下的陰涼處, 舉著 code, 盡情吸收著書中的技 術, 享受專業書籍帶來的震憾。 從 22 章之後, 內容離開了生硬的計算機結構, 慢慢往軟體的部份而去, 從作業系統 (中 國翻譯為操作系統)、程式語言、網路 ... 這是我比較熟悉的部份, 對於計算機原理製作 的部份, 我非常喜愛。我不是熱愛和 and gate, or gate, xor gate, nand gate 奮鬥的 硬體工程師, 但關於這部份卻也讓我看的津津有味。果然了解計算機結構, 才能更深入了 解組合語言。 看完這本簡體中文的版本, 讓我了解不少中國的翻譯術語, 所以本篇心得有些辭彙是中國 術語, 因為我不知道對應的英文或是台灣術語, 所以我也無法標示其後。 在中國術語日漸入侵的台灣, 台灣工程師也慢慢開始使用著這些中國術語。例如:支援/ 支持、實作/實現、呼叫/調用、質數/素數, 演算法/算法、物件導向/面向象, 有些術語 中國翻的很有意思, 不過大部份我還是習慣於台灣的用語。 簡體中文的版本 p 347 提到一個找尋質數的演算法 (Sieve of Eratosthenes), 在程式 設計討論區上有時候會看到求質數的問題, 把這個拿出來用還不賴哦! 在圖書館有發現一本類似的書籍, 也是在講計算機結構, 裡頭的電子線路更是多樣, 看起 來很嚇人, 還是燈泡與開關令人覺得友善, 看起來也不那麼可怕, 要是能先讀這本書, 也 許在大學的時候, 我也能好好的看看數位電路的書籍, 這門學問也和寫程式一樣有趣呢! 真是一本很棒的書籍, 要是因為英文的關係不能吸收裡頭的知識, 那真是太可惜了!翻譯 工業還是很重要的, 不是每個人都能為了學習專業知識而先把英文學好, 若能把原文這道 牆的門檻降低, 也間接可以提高工程人員的專業。要不然還有德文、日文的專業書籍, 工 程人員還要先對付這些外文實在辛苦。 ( http://goo.gl/fZvoL1 ) Charles Petzold 的網站:http://goo.gl/UtrtZy ( http://www.charlespetzold.com/home.html ) // 本文使用 Blog2BBS 自動將Blog文章轉成縮址的BBS純文字 http://goo.gl/TZ4E17 // blog 原文: http://descent-incoming.blogspot.tw/2012/01/code-hidden-language-of-computer.html -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.236.198.76 ※ 文章網址: http://www.ptt.cc/bbs/CompBook/M.1419305066.A.C5A.html ※ 編輯: descent (36.236.198.76), 12/23/2014 11:25:27

12/24 11:07, , 1F
這本我第一眼翻時 感覺是數位電子學 就沒在多看了
12/24 11:07, 1F

12/29 12:40, , 2F
Descent哥,你說圖書館裡的類似書籍,就是
12/29 12:40, 2F

12/29 12:40, , 3F
那本微算機原理嗎?
12/29 12:40, 3F

12/31 14:38, , 4F
yes
12/31 14:38, 4F

06/11 12:25, , 5F
讀過這本書,很深入淺出讓人收穫很多的好書 ^^
06/11 12:25, 5F
文章代碼(AID): #1KcE1gnQ (CompBook)
文章代碼(AID): #1KcE1gnQ (CompBook)