大家好,我是軒轅之風。
告訴大家一個好訊息,我的 《趣話計算機底層技術》 系列技術故事圖書終於出版了!
印刷廠新鮮出爐的第一批圖書,已經上線京東、噹噹啦!
你還記得那個CPU一號車間的阿Q嗎?這一次它要繼續講故事給你聽啦!
我為什麼要寫這本書呢?
在很多年前,我就發現了一個現象:當我們去學習一個新的技術時,會有一大堆的技術名詞和專業術語向我們襲來。而當我們試圖去學習和理解它們時,網路上的各種學習資料,要麼是非常晦澀的原理闡述,要麼是大段的程式碼講解,看得雲裡霧裡。在我們對一項技術還沒有一個全域性和整體的認識之前,一下就陷入到細節中,對新手學習的效率和信心都有不少的負面影響。
除此之外,還有一個類似的現象。在工作中經常會有技術分享和技術講座,很多時候,負責分享和講述的人都只顧著單方面的資訊傳輸,把自己要講的東西說完就算完事,至於下面的人聽懂沒有聽懂多少,似乎並不關心。
上面的兩個現象,在我十一年的程式設計生涯中,就經常遇到。
每到這個時候,我就在想:為什麼不能站在讀者/觀眾的角度來想一想呢,想一想什麼樣的方式更容易讓他們接受和理解。如果是我來講、我來寫,該用什麼樣的語言讓大家更好理解呢?
後來,我總結了自己的一套方法,那就是舉例子、打比方、講故事,把一個晦澀的概念用我們熟知的事物表達出來,去削弱技術名詞本身的神祕感,讓我們能快速知道這個技術是幹啥的,解決什麼問題的,然後才是它具體是怎麼工作的。
運用上面的表達方式,我曾經在大學的時候通過遠端語音講述,幫助一個學經濟學專業的高中同學從零基礎學C語言考過了計算機二級考試。
我們再來看另外一個問題。
在我面試過的很多人中,也包括如今的網際網路上,我發現很多程式設計師都在忙著學習各種程式語言、各種開發框架和各種中介軟體的使用,卻對計算機底層相關的技術知之甚少。我思考造成這一現象主要有幾個原因:
1、很多程式設計師都是半路出家,沒有系統化的學習過計算機底層知識。
2、科班出身的程式設計師,大學裡陳舊的教學方式讓大家對這些底層技術提不起興趣。
3、實際工作中的很多崗位,只需要CRUD能力就足矣,對計算機底層技術沒那麼看重。
由於這些原因,很多程式設計師的基礎知識薄弱,在工作中涉及技術原理性的時候就會發現不足。
比如專案中遇到效能瓶頸,不知道從何入手優化。又比如遇到了稀奇古怪的bug,不知道該用什麼方式排查定位。
隨著越來越多新人的加入,計算機軟體開發行業競爭也越來越激烈,只靠CRUD技能很大程度上會限制程式設計師們在技術領域的發展。而學習瞭解這些底層技術知識,修煉好程式設計師的內功,可以幫助我們知其然還能知其所以然。
舉個簡單的例子,如果不知道零拷貝技術和I/O多路複用技術底層的原理,就很難理解Nginx為什麼能支援高並行。
由於我從事的是網路安全方向的軟體研發工作,經常會與計算機底層技術打交道,像是CPU、作業系統核心等等,但這些東西通常給人的印象就是艱深、晦澀。所以我就在想,我能不能試著用通俗易懂的方式去把這些晦澀的東西講清楚?
在2019年底的時候,我註冊了一個微信公眾號:程式設計技術宇宙,開始嘗試用寫故事的方式去講述程式設計相關的技術知識。
剛開始的時候方向比較分散,沒有什麼起色。後來我開始專注在計算機底層相關的方向上,開始受到不少好評,尤其是我的CPU系列故事,吸引了很多粉絲的追更,並在CSDN、部落格園、知乎等平臺獲得多次精選推薦。
後來不知不覺就寫了一百多篇故事,幫助許許多多的讀者解鎖了原來一直感覺很艱深難懂的知識,對我而言也是很有成就感的一件事。
在這期間,還發生了一個讓我感動的小故事。
一位叫「未來永劫」的網友,由於非常喜歡我的這些用故事講解技術的文章,特地把公眾號裡這幾個系列的文章列印了出來裝訂成了一本「書」寄給了我。
看著自己創作的內容變成手裡沉甸甸的一本書,心裡還是非常開心和激動的。那時候就在想,要是以後真能寫一本書就好了。
讓我沒想到的是,後面陸陸續續就有很多出版社的老師找到了我,讓我出書。
在這些老師之中,有一位引起了我的關注,他就是策劃了《碼農翻身》、《漫畫演演算法》等知名書籍的姚新軍(@長頸鹿27)老師。這些書我都自己買過,非常喜歡。更重要的是,姚老師就在成都,溝通聯絡都很方便。
於是我們就線下約了一次,姚老師對我的創作內容很認可,也給了我很多寫書方面的介紹和建議,我們倆聊的很高興,於是我決定繼續創作更多計算機底層技術文章,彙整合大家手裡看到的這本書。
在創作過程中,我始終堅持有趣、有用、嚴謹並抓,經常一個故事寫完自己讀的都不滿意,然後推倒重寫,裡面的插圖也是一改再改,力求給讀者一個更舒適流暢的閱讀體驗。也因為這個原因,導致我的交稿時間一拖再拖,好在出版社老師也很支援理解我。
這本書主要是用故事的方式講述計算機底層相關的技術,用通俗易懂的表達方式幫助大家學習底層技術。
故事的主人公可能是計算機裡的一個程式、一個程序、一個執行緒、一個函數、一個封包、一個檔案等這樣的軟體角色,也可能是CPU、記憶體、網路卡等這樣的硬體角色。本書透過這些角色的視角去講述發生在計算機世界裡的故事,在故事中學習和了解計算機底層技術的工作原理。
在選題方面,我挑選了一些跟咱們程式設計師日常工作密切相關的主題,讓大家不僅是看完一個故事,還能夠對工作產生一些幫助。
整本書由幾十個故事構成,故事之間既有關聯性,讓大家像「追劇」一樣學習技術,也有一定的獨立性,讓你隨時翻開一篇都能看下去。
本書主要涵蓋計算機中的CPU、儲存、I/O、作業系統、系統程式設計、安全六個主題,每個主題一章,你不必從頭到尾逐篇閱讀,完全可以挑選自己感興趣的任何章節開始。
可能很多人會有一個疑問:這本書和公眾號文章有什麼不同?
我的公眾號文章,講故事的總共有三個系列,分別是「趣話計算機底層技術」、「趣話網路安全」、「趣話程式設計技術」,這本書節選了部分前兩個系列中的優質文章。
但如果僅僅是彙集舊文章,那可交代不過去,在彙集的同時,也對很多內容進行了修改發散,並且擴充了很多新的故事進去,讓整個內容更成體系。這裡面就有很多公眾號從未釋出的新內容,歡迎大家去發現。
最後我要感謝的是一路以來一直支援我的讀者朋友,是你們的每一個點選,每一個在看,每一條留言,每一個讚賞、每一個分享才有了這本書的誕生。
你們寫下的每一句留言都是支撐我堅持下去的力量:
如果大家厭倦了傳統的計算機組成原理和作業系統書籍,想要換一種輕鬆有趣的方式學習這些底層知識,不妨入手一本。而且現在618期間,京東和噹噹網都在搞五折活動,非常划算。