記-碼農的“啟蒙”之《程式設計語言-實踐之路》和《物件導向分析和設計》兩書

blackheart發表於2014-07-07

一些廢話

眨眼間已工作走出校門個年頭了,總覺得時間過的好快(一把無情的殺豬刀)。

好長時間木有寫過部落格了,有時候突然之間好多想說的,卻又不知怎麼下筆;總是這樣,也許是不善於語言表達吧(人在不願做某一件事的時候總是能找出一千個理由來說服自己)。

今天想談談閱讀的一些體會。我是始終認為在剛開始工作的幾年中是一個人進步最快的時間段,也是“部分決定”你以後發展方向的一個階段。這個階段中的進步來自於專案經驗、自己的領悟、前輩的傳授、閱讀所得(部落格、圖書)等等。其中唯有自己主觀可控的只有閱讀所得以及自己的領悟(專案經歷也好、閱讀也好);因為專案經驗+前輩傳授這是外部環境決定的,這些都是外界不可控的因素。俗話說的好:靠山山會倒 靠人人會跑 只有自己最可靠。所以我平時願意去花時間來用在我主觀可控的專案上(也就是閱讀啦)。買來不少認為有用的書,也確實吸收一些東西,無奈選擇多了煩惱也就來了,陷在閱讀的泥潭中不知那些有用那些無用、那些現階段那些以後看。後來仔細分析回想一下,濾清一些脈絡,腦子裡面蹦出我認為對我影響最大的兩本讀物《程式設計語言-實踐之路》和《物件導向分析和設計》;其實發現這也是對應我個人成長的兩個階段。

程式設計語言-實踐之路

這本是在我剛畢業時候接觸到的,當時的工作內容也就是寫寫程式碼,模式、架構也沒感覺,就對語言有了興趣,陷於語言的沼澤中,被一些語法層面的東西蒙蔽,困在其中,不得語言之要領。理不清楚為何js裡面寫個閉包這麼自然,而在c#中卻如此醜陋(還是個假閉包)。

期間也想過其他途徑去解決這些疑惑,clr via c#、.net本質論、深入理解c++物件模型、javascript語言精粹等等;發現越來越不對勁,這類書都是講細節本質的,陷到細節裡面越來越深,越來越想不明白。後來的一本JAVASCRIPT語言精髓與程式設計實踐突然“有點”茅塞頓開的感覺,讀完覺得不過癮,遂在它引用的書籍中發現這本《程式設計語言-實踐之路》。並非是說其他的書無用或者不好,而是每本書的視角不同、關注點不同而已;在我當時的情況下正好是這本給了我一個以設計語言的視角來(抽象層面設計,而非實現層面)看待語言,正是當時所需。這種感覺用一句唐詩再合適不過了“不識廬山真面目,只緣身在此山中”;只因以前都未曾想過要跳出語言這座山來看語言,那可真是一個山頭一個山頭,偶爾還向山腳刨刨,不暈才怪。

這可以說是我所經歷的第一個階段,現在也不敢說我就理解了什麼是語言,但是起碼我不再受其困擾、也不去爭論哪個語言好那個語言壞了,所以對我來說這本書才這麼印象深刻。

有了這個基礎後清晰多了,往深了去sicp、編譯原理等想去了解也不會那麼迷茫了,因為在我的認知體系中已經為它們劃分出應在的分支中了。

物件導向分析與設計

這本是前段時間到手的(正在讀),這段時間一個專案剛剛告一段落,而在期間遇見很多苦惱,設計專案框架的時候總覺得亂糟糟的、專案結構也覺得不清晰合理,導致我們開發過程中走了不少彎路(還是木有經驗啊,哎)。還是以前的老方法,各種架構設計、模式方面的書弄回來啃,借用豆瓣上有人說的一句話(物件導向的正規化就是一些正確的廢話而已),這些模式、架構什麼的對於我這個沒有這方面經驗的人來說來說也是一堆正確的廢話而已,也許是太笨,讀不出個所以然來。

這本書中現階段我的理解是它描述一個怎樣去利用OO去分析的過程,也就是在設計和架構專案的最前期階段。或許是受那些設計模式、架構設計的書的影響,總是再不經意間就在專案一開始套上各種的模式、時髦的東西等等,最後實踐也證明這種東西根本就不是專案真正所需。原來我的根源是根本沒有進行切實的分析就上了各種模式、架構。而正好在這期間讀到了它和另外一本重構與模式,才算是有所體會。

終於,這塊知識結構也在我的認知體系同找到了應有的分支。

後話

最近打算把這兩本書的讀的心的體會寫兩個系列的文章,年底前完成。爭取2周能出一篇吧,算是給自己點壓力。

又是一個畢業季,回想自己走過的一些彎路,在這裡也給一些新人一些建議,適用與否這就要看每個人的主觀意願了。

  1.  小心迷戀技術框架(這些東西短期內是可以讓你有些許成就感,比如快速寫出某某程式,但同時也會阻止你的瞭解技術本質的動力)
  2.  切忌語言崇拜(具體的語言是會影響你的思維方式的,一不小心就會被語言禁錮你的思想)
  3.  解決問題的前提是你要徹底的理解問題。
  4.  自己思考、要有質疑精神。

 不知園友們有木有這種類似的感觸,歡迎來交流探討。

相關文章