千化萬端,理為一貫(《大道至簡》讀後感)
在老師的建議下,我利用假期兩周的時間閱讀了整本書,初讀一次不解其中之味,當我讀完第二遍的時候,我才品味出蔣濤老師為什麽稱《大道至簡》閃爍著獨立思考的光芒。
蔣濤老師在序言中提到“雖千化萬端,而理為一貫”在學習任何東西之前,我們都要了解它的“理”,這裏的理我認為就是思想。《大道至簡》這本書註重的就是思想,周愛民老師以軟件開發者的角度,並以極簡的方式講述了軟件工程思想。
在這本書的第一章,周愛民老師引用了著名的典故“愚公移山”,做了關於編程的精義的介紹,編程的根本就是“順序,分支以及循環“,像愚公移山這樣龐大的項目都可以用簡單的編程來實現,周愛民老師在書中提到:”小到稱手的工具大到千萬的工程。只有一個目標,那就是實現它。”編程就是這樣,最終的目的是要實現它,那麽如何實現,這便是編程的順序,循環和分支三大根本。
周愛民老師不止一次提到“程序=算法+結構”,我在學習C++的時候課老師也不止一次的強調就,這是對程序的初步認識。在《大道至簡》這本書的第一章同樣提到了這個,編程其實說白了就是一種行為,我們要把一件事情交給計算機去做,就需要去告訴計算機,該如何去做。當然了,不該去做的東西只要你不給計算機指令,計算機是不會去執行的。我們在告訴計算機該怎麽做的時候,一定要分好順序,什麽時候該幹什麽,什麽時候不該幹什麽。把事情的邏輯關系和依賴關系分清楚,然後通過輸入代碼告訴計算機,它再通過我們所給的代碼去實現我們的要求。
周愛民老師說:“熟悉一門語言之後,並沒有會與不會,只有喜歡與不喜歡,任何一門語言都可以在兩周之內學成,因為他們的基本函數庫都是相似的。語言的差別主要是表現在適用範圍上,有的可以精確到原子級,表達無窮之小;有的適合做圖形處理,它的基本函數書庫比其他語言可以快上十倍甚至數十倍;還有的適合做網頁,用它做一個通訊薄軟件都將是史無前例的挑戰。”
我在之前還在猶豫自己到底應該學習哪一門語言,學的太多害怕精力不夠,學的太少又怕自己以後能力不足。讀完書以後我已經不在糾結該學什麽語言了,就像周愛民老師所說,學習了一年的C和C++,我的腦袋裏還是暈乎乎的,不知道該從哪裏開始,不知道該如何做程序。要說我沒有認真學習,那答案是否定的。我只是不知道我學到的知識可以幹什麽。
學習C的時候,雖然老師經常強調,遇到不會的問題先畫樹狀圖,我卻不以為意,拿到一個問題就開始編程,結果發現編完{}後就卡住了,導致下半學期學習C++時我也是拿到問題就開始Coding就和周愛民老師提到的拿到項目就開始Coding的程序員一樣,他加班最晚,我完成任務最晚。書中說一個關於編程本質思考的人提出一個公式程序=算法+結構,顯然這個公式沒有Code,在這個公式中,代碼是不從在的...存在的只是思想。
我之前那樣做為什麽不好,就是因為我還沒有先把事情分析清楚,事件先後邏輯關系和依賴關系搞清楚就企圖用代碼去實現,這無異於癡人說夢。為解決自身這個問題,我開始鍛煉自己再遇到一個問題時,無論問題大小,問題難度,都先去思考,我該用什麽方法去做,就像排版微信HTML5,我該用什麽模板一樣,去尋找合適的方法,然後再動手。
書中提到在沒有工程的時代,一個程序員算法的全部是他們掌握了一門語言,懂得了生活中常見的邏輯。他們用程序的方式思考和學習了一些算法,並根據前人的經驗,把這些算法應用在一些數據結構上,所以最後我們就看到了他們的程序。最後,新穎的思想,是軟件工程的指導思想,閱讀這本書,讓我對軟件開發有了新的認識,以真正的軟件開發的思想去思考問題。
千化萬端,理為一貫(《大道至簡》讀後感)