回覆列表
  • 1 # 8711052411

      首先,建議要精讀或者精學三門課程:離散數學 資料結構 編譯原理。所謂的精讀或者精學,不是說簡簡單單為了應付考試的學習,而是對每個細節每項內容都窮究其理,融匯貫通。精學這3門課程的本身就是邏輯思維和抽象思維能力的很好鍛鍊。其中前兩門課程,其知識本身在未來也有大用,編譯原理本身作為一般程式設計師用到的機會可能不多,但是學編譯原理真的很鍛鍊邏輯思維和抽象思維能力。  其次,可以多玩一些抽象類,數字類的遊戲,例如數獨。  再次,多精讀一些好書,尤其是設計類的書,推薦《設計模式》,邊讀要邊思考,不是灌輸式的讀書,是思辨式得讀書  再再次,花大量時間去最佳化程式碼,不管是自己的還是別人的。用不同的方式,不同的思路,不同的演算法,不同的結構去改寫和最佳化程式碼。尤其是演算法類的程式碼,系統控制類的程式碼。  很少有人能單單透過所謂“邏輯思維”從複雜問題快速找到抽象的,如果有這樣的人,他的經驗,工具,方法和直覺通常起到比邏輯思維更重要的作用。寫程式碼需要邏輯思維,但解決複雜問題更需要理解分析,寫程式碼只是解決問題比較靠後的步驟。所以不急著寫程式碼,也不急著找抽象,先試著理解問題本身,而不是下意識地想把問題套進已知的,熟悉或不熟悉的工具,那樣是本末倒置的。  多數情況下,只要有一點耐心,理解問題並不難,這個時候既是邏輯推演,更是探索發現。  比如交通燈控制,是一個不那麼簡單的問題,不急著找模型,也不急著程式設計,想一想一個交通燈有幾種狀態,一組交通燈有幾種狀態,不同的路口的交通燈有幾種狀態,把具體的例子列出來,你大概會有一個概念:那就是你要寫交通燈管理程式本質就是一個狀態管理的過程。這個時候還沒有得到適合程式設計的抽象,但你已經積累了對輸入和輸出的認識,接下來可以寫一點簡單程式碼或者虛擬碼,把各種case的邏輯都單獨實現一遍,把各種狀態之間的轉換的條件和過程勾勒出來,從這裡觀察他們在資料和流程上有沒有共性,有沒有可以最佳化的餘地,這樣你就慢慢地找到你要的抽象,然後看看你熟悉的工具(比如程式語言)提供了什麼樣的資料結構和程式設計正規化最適合去實現這樣的抽象。  把問題具體化,尋找具體的輸入和輸出,具體的狀態變化。具體化了的問題更容易分解,分解以後的問題更容易分析;先分析再歸納比不分析直接歸納更有操作性,你的“邏輯思維”才能派上用場。

  • 中秋節和大豐收的關聯?
  • 大茶藥喂懷孕母豬會導致流產嗎?