第八周讀書筆記 ——編程之美


 

本周在陳燦同學的介紹下,我也開始看編程之美這本書了。看的不多,仍然停留在第一章。雖然這本書全書只有四章,但是它並不是一本“洛陽紙貴”的薄書。恰恰相反,在我不多的閱讀頁數里,蘊含的知識和感悟可不算少。

書的序言從一個很有意思的例子開始,這也是我這篇讀后感想重點談的內容。這個例子說的是一場微軟的面試,被面試的女生拿到了這樣一個題目:“請寫出一個程序,使得CPU的占有率維持成一條50%的直線”。面對這樣一個“奇葩”題目,女生當然完全無從下手,哪怕面試官(鄒欣老師)把筆記本借給她,讓她上網查資料,她也沒有辦法在45分鍾之內做出這道也許她從來沒有見過的題目。待到面試結束,女生非常沮喪,而面試官也同樣感到遺憾,因為就因為這一個問題,他也錯失了繼續了解這位面試者其他方面的機會。

毫無疑問地說,站在中國學生的角度上看,這樣一道怪題,可以說是誰碰上誰倒霉。不僅僅是因為課堂里不講這種類型的題目,更是因為自己從來沒有從這樣的角度去重新審視“編程”。如果沒有頭緒,那么很可能這一次面試就這么完結了。但是,如果我們暫時先拋開面試的功利性質,僅僅來衡量這道題目本身來看,其實它是一道非常有趣的編程問題。其有趣之處,在於其不僅僅是考察做題者的編碼能力,更是在考察作者是否有對編程更深層次的理解。編程,絕不僅限於課本上的題目,或是某一個具體的算法,而是與整個計算機密切相關的。對計算機系統理解的層次不同,很大程度上決定了你的編程思想的上限。

說實話,在我看到這個題目的時候,我也會一臉懵逼的看着主考官,然后完全沒有任何思路,甚至連那位女生所寫的源碼(見圖)也許都寫不出來。

 

 

的的確確,這道題目本質上跟我們平常練習的題目都差不多,只不過把問題變成了與計算機系統密切相關的任務讓我來解決。但是我卻完全沒有思路,這說明我對這個問題的背景幾乎完全不了解。光從這一點上來看,我好像白學了操作系統和微機原理,因為我完全沒有從計算機系統去思考問題的思維。我想,如果我面試真的遇到了這種類型的題目,那么我對編程的理解和計算機系統的理解之間的不匹配,瞬間就會暴露無遺。

為什么我無法建立起這樣的思維呢?我想,這正是我需要從這本書中找到的一個很重要的答案。我一直覺得自己對計算機理解的不夠深刻,哪怕我學過操作系統,學過編譯原理,我對計算機科學,仍然有一種力不從心的感覺。這也許是因為我對於每一門課程的理解,都是孤立無援、相互割裂的,這讓我缺乏一個真正的高層思路,一個從整體去逼近每一門課程的概觀思路。隨着鄒欣老師一步步帶我領略答案,我才發現,其實具體的每一步的知識,尤其是計算機底層的知識(如指令執行時間的計算),我大概都在課堂上聽到或者看到過,可是我沒有的卻是從問題的表面逐步深入所需要的知識和思維。這樣子的思路,恰恰體現了我過度的“黑盒”思維——把計算機看成一個輸入輸出的黑盒子了,卻沒有想過要去想辦法把這個黑盒子拆開好好看看。

回過頭來說,鄒欣老師所說的編程之美,不僅僅在於某一個算法,不僅僅在於某到題目的答案,而在於一種思想,就好像球類運動里所說的球商,在於一種探索的過程。的的確確,如果我可以對這個“黑盒子”的工作原理了解的更為透徹,那么更加優美簡潔、性能更加高效的代碼,也就自然而然地誕生了。

為此,我需要再繼續的努力,多學習多看書,少吃零食多睡覺,每天積累一點點,日后能成棟梁材。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM