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

 

本週在陳燦同窗的介紹下,我也開始看編程之美這本書了。看的很少,仍然停留在第一章。雖然這本書全書只有四章,可是它並非一本「洛陽紙貴」的薄書。偏偏相反,在我很少的閱讀頁數裏,蘊含的知識和感悟可不算少。面試

書的序言從一個頗有意思的例子開始,這也是我這篇讀後感想重點談的內容。這個例子說的是一場微軟的面試,被面試的女生拿到了這樣一個題目:「請寫出一個程序,使得CPU的佔有率維持成一條50%的直線」。面對這樣一個「奇葩」題目,女生固然徹底無從下手,哪怕面試官(鄒欣老師)把筆記本借給她,讓她上網查資料,她也沒有辦法在45分鐘以內作出這道也許她歷來沒有見過的題目。待到面試結束,女生很是沮喪,而面試官也一樣感到遺憾,由於就由於這一個問題,他也錯失了繼續瞭解這位面試者其餘方面的機會。算法

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

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

 

 

的的確確,這道題目本質上跟咱們日常練習的題目都差很少,只不過把問題變成了與計算機系統密切相關的任務讓我來解決。可是我卻徹底沒有思路,這說明我對這個問題的背景幾乎徹底不瞭解。光從這一點上來看,我好像白學了操做系統和微機原理,由於我徹底沒有從計算機系統去思考問題的思惟。我想,若是我面試真的遇到了這種類型的題目,那麼我對編程的理解和計算機系統的理解之間的不匹配,瞬間就會暴露無遺。學習

爲何我沒法創建起這樣的思惟呢?我想,這正是我須要從這本書中找到的一個很重要的答案。我一直以爲本身對計算機理解的不夠深入,哪怕我學過操做系統,學過編譯原理,我對計算機科學,仍然有一種力不從心的感受。這也許是由於我對於每一門課程的理解,都是孤立無援、相互割裂的,這讓我缺少一個真正的高層思路,一個從總體去逼近每一門課程的概觀思路。隨着鄒欣老師一步步帶我領略答案,我才發現,其實具體的每一步的知識,尤爲是計算機底層的知識(如指令執行時間的計算),我大概都在課堂上聽到或者看到過,但是我沒有的倒是從問題的表面逐步深刻所須要的知識和思惟。這樣子的思路,偏偏體現了我過分的「黑盒」思惟——把計算機當作一個輸入輸出的黑盒子了,卻沒有想過要去想辦法把這個黑盒子拆開好好看看。編碼

回過頭來講,鄒欣老師所說的編程之美,不只僅在於某一個算法,不只僅在於某到題目的答案,而在於一種思想,就好像球類運動裏所說的球商,在於一種探索的過程。的的確確,若是我能夠對這個「黑盒子」的工做原理了解的更爲透徹,那麼更加優美簡潔、性能更加高效的代碼,也就天然而然地誕生了。操作系統

爲此,我須要再繼續的努力,多學習多看書,少吃零食多睡覺,天天積累一點點,往後能成棟樑材。blog

相關文章
相關標籤/搜索