12 程式設計是設計

2021-06-17 19:34:53 字數 1077 閱讀 3910

設想一下明天早上起床,發現建築業取得了世紀性突破。上百萬便宜的、動作極其快速的機械人能憑空製造出材料,只有幾乎為零的成本,而且可以自我修復。還有更好的:給定乙個建築工程的明確的藍圖,機械人可能在無需人工干預、以幾乎為零的代價下將其建造出來。

可以想象這對建築業的影響,但是上游又會發生什麼呢?如果建造成本幾乎可以忽略不計,建築師和設計師的的行為又會發生什麼改變呢?現今,在對建造進行投資之前,會先做出物理模型和計算機模型,進行嚴格的測試。如果建造實質上是免費的,我們會糾結嗎?如果一項設計失敗了,沒什麼大不了的——只要查出是**不對並上我們的魔法機器上再做乙個。這還有更深層次的意義。隨著模型在被淘汰,未完成的設計也在重複建造和改進的過程中不斷進化,逐漸接近最終的目標。不經意的觀察者可能難以區分乙個未完成的設計和完成了的產品。

我們預先計畫時間表的能力會漸漸減退。建造成本遠比設計成本容易計算——我們知道安裝乙隻大樑的近似成本,也知道我們需要多少根大樑。隨著可**的任務漸漸減少近零,不容易**的設計時間開始佔主導。結果產出得更快了,但可靠的時間表卻不在了。

當然,競爭經濟的壓力仍然是適用的。隨著建造成本消失,可以快速完成設計的公司會佔得市場先機。快速完成設計成為工程公司的核心推進力。當然,對設計熟悉得不夠深的人則看不正確,只會看到早期的市場優勢,說「這看起來很不錯」。

一些生死攸關的專案可能會讓人更勤奮,但大多數情況下,消費者要在未完成的設計中受苦。公司總是可以派出魔法機械人給他們售出的破房子和車子打「補丁」。這就出現了乙個一眼看起來很違反直覺的結論:我們唯一的前提是建造成本的大幅降低,隨之而來的結果是質量下降。

一點也不會覺得驚奇,上面的故事就在軟體領域中發生過。如果我們接受軟體是設計,乙個創造性的過程而不是機械性的,那麼軟體危機就可以解釋了。我們現在有了乙個設計危機:對高質的、有效的設計的需求超出了我們製造它們的能力。使用不完整的設計的壓力很大。

幸運的是,這個模型也給出了如何做得更好的線索。物理模擬等同於自動化測試;軟體設計直到經過一系列的有效性測試才算完成。為了讓這些測試更有效,我們要尋找控制大系統中的巨大階段空隙的方法。改進的語言和設計實踐給了我們希望。最終,這是乙個不可逃避的事實:偉大的設計是由投身自己的技藝偉大設計師們做出的。程式設計也是一樣。

原文:code is design by ryan brush

c程式設計12

函式的宣告 為什麼要宣告 當被調函式的定義在主調函式後面,此時應該在主調函式中對被調函式進行宣告方便編譯器檢查函式呼叫語句的合法性 函式呼叫時引數的傳遞 非指標型別的資料做函式引數,有實參將值對應的傳遞給形參,實參形參占用不同的記憶體單元,形參的改變不會影響到實參,陣列名 指標 做函式引數,實參將值...

程式設計之美1 2

prefixsort.cpp include includeusing namespace std int cakecount 用於儲存一共有多少個cake int uperbound int cakearray 儲存初始cake排列的情況 int cakeswaparray 儲存對cake進行翻轉...

Windows 程式設計1 2章

windows.h 中包含了 許多其他的標頭檔案 主要是 winuser.h 使用者介面 winbase.h kernel函式 windef.h 一些型別的define winnt.h 支援 unicode形態定義 wingdi.h 包含圖形介面函式 應用程式的入口函式 int winapi win...