標籤:讀書筆記 軟體開發 啟發學習法 價值 最大的
藉助隱喻可以更加深刻地理解軟體開發的過程。通過把不太理解的東西和一些你較為理解、且十分類似的東西做比較,這樣可以對不太理解的東西產生更深刻的理解,這種使用隱喻的方式叫做建模。
隱喻的威力在於其生動性,能夠讓你把握整個概念,暗示各種屬性、關係以及需要查證的部分。但是過度引申時,模型也會誤導人們。
軟體隱喻的作用更像是啟示,而不是演算法,告訴你如何去尋找答案。演算法是一套定義明確的指令使你完成某個特定的任務,演算法是可預測的、確定的、不易變化的。
演算法與啟發學習法方法之間的區別就在於其距離最終解決辦法的間接程度:演算法直接給你解決問題的指導,而啟發學習法方法告訴你如何發現這些指導資訊或者至少到哪裡去尋找他們。
對於編程來說,最大的挑戰是將問題概念化(建模),編程中的很多錯誤是概念性的錯誤,因為每一個問題在概念上都是獨特的,所以要找到一套能解決所有問題的指導規則是很難得,甚至不太可能,所以能夠一般性質地知道大致如何解決問題,至少也和知道如何解決特定問題一樣有價值。
軟體的牡蠣養殖觀點:牡蠣製造珍珠的過程隱喻軟體開發,其中關鍵詞語有“增量的”,“迭代的”,“自適應的”以及“演化的”。以增量方式進行設計、編譯和測試,都是目前已知的最強有力的軟體開發概念。
在進行增量式開發時,先做出軟體系統的一個儘可能簡單、但能夠啟動並執行版本,它不必接受真實的輸入,無須對資料進行真正的處理,不用產生真實的輸出,僅僅只需要一個足夠強壯的骨架,支撐起未來將要開發的真實系統。對於標誌處的每一項準系統,僅需要調用虛假的類。在骨架形成之後,要一點點地在其上附著肌肉和皮膚:將虛假的類替換為真正的類,接受真實的輸入,產生真實的輸出。
軟體構建:首先要決定準備建一個什麼類型的房子---問題定義,接下來與建築師探討總體設計---軟體架構設計,然後畫出詳細的藍圖並雇承包人---軟體詳細設計,在然後打地基、搭房屋架構、砌牆、通水電等---軟體構建,油漆工、裝修工將房子美化---軟體最佳化,檢查人員檢查工地、地基、架構、布線等---軟體評審。
通常自己編寫現成的、可以買得到的代碼是沒有意義的,除非在特殊情況下需要定製。
代碼大全讀書筆記2---用隱喻來充分理解軟體開發