本次閱讀筆記主要談一談設計原本的第八章——設計中的理性主義與經驗主義。
理性主義與經驗主義一直存在分歧,面對設計也是如此,主要是對「依靠思考能否正確完成設計」這一問題。理性主義者認為人類天生就是健全的,雖然會犯錯誤,但可以通過後天的學習不斷完善自己,因此隨著不斷的教育,經過仔細的思考後是可以完成設計任務,在他們看來設計方法學的任務就是學習如何達到完美無瑕的程度。經驗主義者認為人類天生就是有瑕疵的,會不斷犯錯,因此設計方法學的任務就是學習如何根據實踐尋找瑕疵,加以改進迭代。然而軟體設計要跟電腦程式打交道,而程式則是純粹的數學意義上的物件,原則上可以通過正確的思考達成完美設計。所以困難轉移到了設計者本身,而不是設計方法。那麼軟體設計就不是經驗主義了麼?顯然不是,實際上現在的軟體設計方法,如早期原型,早期使用者測試,迭代式增量及回歸測試都是基於經驗主義提出來的。
本書作者偏向經驗主義,其實想一想就可以理解。除了hello world那種一句話就完成的簡單程式之外,當面對乙個大型工程設計時,誰又能按照理性主義的思路一蹴而就呢?如果嚴格按照推理進行,那麼證明程式的正確性就會是乙個龐大的工程,它基於程式**量會呈指數性增長。這並不是說軟體設計就不需要證明,而是要結合成本來考量,在單元測試或整合測試上,證明技術很受歡迎。之所以提到證明這一部分,是因為沒有哪個設計領域的設計師嘗試通過嚴格的形式化方法來驗證正確性。因為軟體像數學一樣都是純粹的思想,這也是為什麼數學專業的學生轉型到計算機專業有一定優勢的原因吧。軟體工程之外的設計領域可能不會進行正確性證明,但他們卻通過無數的分析與模擬技術廣泛應用了設計驗證。
大量的經驗性分析所導致的必然結果就是設計過程中會出現反覆迭代,分析越精細越能度量出必要條件的滿足程度與約束的遵從程度。因此,針對特定目標的設計驗證成為了更加直接和確定的過程。值得注意的是,這些分析和模擬都沒有強調目標的正確性或關於環境假設的有效性。
顯然,在軟體設計這一方面,經驗主義更吃香一些。
《設計原本》閱讀筆記(七)
邏輯美有很多要素,首先是簡約。優雅 需要簡約,在數學中對優雅的乙個定義就是 使用更少的元素完成更多的處理 人們也傾向於將簡約作為程式語言的設計原則,計算機設計必須將簡約放在重要的位置上。這裡以程式語言的學習喜好來說,並沒有程式語言比較的意思,我們都知道c c 作為可以觸及底層的語言,它們有一種結構嚴...
《設計原本》閱讀筆記(五)
軟體的開發當然不是白幹活,它是一筆交易,有了交易就要思考成本與利益,在我們對自己的軟體開發專案進行估算時,肯定要考慮各種各樣的資源。這就是本篇閱讀筆記所要 的內容 預算資源。什麼是預算資源?無論何種設計都至少存在一種稀缺資源需要限量或者預算。有時需要將兩種或多種資源聯合起來進行優化,但大多數時候都會...
《設計原本》閱讀筆記 part2
工程師怎樣進行設計思維 理性模型 因為設計的理論是普通的搜尋理論.即在巨大的組合空間搜尋。herbert simon the science of the artificial 理想的設計過程模型 如圖所示 模型概覽 目標 必要條件 效用函式 約束 資源分配 預算和關鍵預算 設計樹 各個步驟的順序安...