CPU眼里的C/C++ ( 簡體 字) |
作者:阿布編程 | 類別:1. -> 程式設計 -> 綜合 |
譯者: |
出版社:清華大學出版社 | 3dWoo書號: 56418 詢問書籍請說出此書號!【有庫存】 NT售價: 445 元 |
出版日:9/1/2023 |
頁數:229 |
光碟數:0 |
|
站長推薦: |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
加入購物車 │加到我的最愛 (請先登入會員) |
ISBN:9787302643937 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言:編程是進入計算機世界的大門,是人跟計算機交流的方式;很多時候,我們 像學習一門外語一樣學習編程語言,只要足夠刻苦、耐心,熟背各種語法,都可 以在短時間內寫出精彩的程序。
但學的越多,似乎要記憶的東西也就越多;更要命的是,很多語法越來越 玄幻,你心底是否有這樣的疑問:難道CPU也需要知道這么多的語法規則嗎? CPU是如何遵守這些連人都覺得十分詭異的程序規則的呢?
答案或許比你想象的要簡單很多,CPU眼里并沒有這么復雜的語法,它雖 然擁有著飛快的運行速度,但卻只能理解最簡單的規則。這也就意味著:我們只 需要了解這些簡單的規則,就能真實、客觀地還原程序運行原理,解釋很多奇幻 的語法規則,甚至理解黑客常用的攻擊方法,從而編寫出更加強壯、安全的代碼。
在一次神農架的旅行中,汽車行進在濃密的原始森林中,同行的小學生問了 我一個問題:神話故事是假的嗎?思考了良久后,我回答:不確定神話是真的, 但更不敢否定是假的。中國有大禹治水的故事,西方有諾亞方舟的神話,它們發 生的時間相仿,描述的事情相近,我似乎找不到一個理由,去解釋在那個通信落 后、語言不通的時代,遠隔萬里的人類,為什么要合伙編一個故事來欺騙后世子 孫?或許大洪水事件是真的,諾亞方舟也是真的,但受制于當時的科技、文化以 及人類自身的進化水平,很難全面、清晰、深入本質地描述像大洪水這樣的重大 事件。或許這也是大洪水事件會有多個版本的原因。
這也正好像今天學習計算機的現狀:開發者一邊捧著標準教材,一邊在網上
VIII CPU眼里的C/C++ 尋找各種教程二次學習。大家似乎都在尋找一個更適合自己或者更加真實的版本。 雖然市面上很多大神的教程、書籍、視頻已經把C/C++的本質分析得很好了, 而且各有見解,但似乎還是有一層窗戶紙沒有被捅破。雖然大神的書籍、教程、 視頻讓人百看不厭,但觀眾仍然覺得心里沒底。我們總是試圖從人的視角解釋程 序的行為,迫切找到最權威、最重量級的解釋,但似乎很少去從CPU的視角審 視程序。 相比于破解遙遠的神話故事,破解代碼的運行原理就容易很多,在和大家的 交流中,我發現很多大二的學生,已經具備一探究竟的能力,如果現在還不趁熱 打鐵地一錘定音,那還要做多少道題、看多少教程、具備多少年的工作經驗,才 能自然進化到大徹大悟呢?而這也是本人最終下定決心編寫本書的主要原因,我 們已經具備了臨門一腳的能力,一個及時的助攻是非常必要的。 當然,僅僅提供一個答案是缺乏科學精神的,如果不能讓普通開發者重現、 證實、證偽大神的“金玉良言”,那將非常遺憾,因為不可實踐的工程技術,對 工程師而言毫無意義;知識的解釋權需要掌握在更多的開發者手里。 全書的所有章節,幾乎全部基于最簡單、最常見的代碼,相信很多讀者都曾 經寫過這樣的代碼。配合免費、公開、直觀的工具,每一個讀者都可以隨時拆解、 演繹其中的工作原理,讓知識真正屬于每一個讀者。 最后,本書絕對不是否認其他計算機教程的正確性,相反,沒有其他計算機 教程的基礎,想讀懂本書,也不是一件容易的事情。本書只是換一個視角解讀我 們所熟知的知識。如果真有什么差異的話,可能只是視角上的差異。 作者 2023年春 CPU眼里的:CC++ 4校 文前.indd 82023/8/31 14:54:41 |
內容簡介:全書共6章,第1章:介紹本書所使用到的主要工具和一些需要心里有數的預備知識;第2章:解析最簡單、常用的基礎語法,幫助讀者適應本書的節奏;第3章:為進階知識,會從CPU、操作系統的角度,深入分析函數的工作原理和實現細節;第4章:解析經典的C++語法,背后的實現邏輯,并介紹“面向對象”的編程思想及優缺點;第5章:討論跟操作系統強相關的軟件技術,會將所有章節的內容貫穿起來,初步形成一個現代操作系統的運作模型。第6章:我們會討論一些經典的面試、筆試題,跟讀者一起分享工作、學習、求職中的苦與樂。 本書可作為高等院校計算機、自動化及相關專業的本科生或研究生教材,也可供對C/C++工作原理、操縱系統感興趣的研究人員和工程技術人員閱讀參考。 |
目錄:第1章 預備知識 閱讀建議002 1.1 工具介紹003 1.2 CPU眼里的程序運行006 1.3 CPU眼里的匯編語言012 第2章基礎語法 閱讀建議020 2.1 CPU眼里的main函數021 2.2 CPU眼里的變量024 2.3 CPU眼里的goto、ifelse028 2.4 CPU眼里的指針變量032 2.5 CPU眼里的指針本質和風險039 2.6 CPU眼里的數組043 2.7 CPU眼里的數組越界047 2.8 CPU眼里的引用052 2.9 CPU眼里的i++與++i054 2.10 代碼陷阱類型轉換059 第3章 函數原理 閱讀建議064 3.1 CPU眼里的參數傳遞065 3.2 CPU眼里的函數括號{}070 3.3 CPU眼里的調用和返回076 3.4 CPU眼里的函數指針083 3.5 CPU眼里的函數返回值087 3.6 CPU眼里的堆和棧094 3.7 函數實驗回溯函數調用關系104 第4章 C++特性 閱讀建議108 4.1 CPU眼里的this109 4.2 CPU眼里的構造函數111 4.3 CPU眼里的虛函數115 4.4 CPU眼里的多態121 4.5 CPU眼里的模板128 4.6 CPU眼里的malloc和new131 4.7 面向對象實踐依賴反轉135 第5章 高級編程 閱讀建議144 5.1 CPU眼里的虛擬內存145 5.2 坐井觀天的進程153 5.3 CPU眼里的地址映射159 5.4 CPU眼里的volatile164 5.5 CPU眼里的常量169 5.6 CPU眼里的系統調用173 5.7 CPU眼里的大端、小端179 5.8 CPU眼里的上下文186 5.9 CPU眼里的鎖192 第6章 面試挑戰 閱讀建議202 6.1 static、global以及local203 6.2 數組和雙重指針210 6.3 指針為什么這么難216 6.4 auto的工作原理218 6.5 thread_local的工作原理223 6.6 面試的技巧227 X XI XI |
序: |