維基少年:兒童程式設計/自頂向下還是自底向上?
自頂向下和自底向上方法非常適合不同的情況。讓我們在這裡討論它們。

使用自頂向下方法,我們從頂級程式開始,然後將其分解成許多不同的模組。劃分過程被稱為逐步細化。當我們設計每個模組時,我們將發現我們需要什麼樣的子模組,然後繼續程式設計它們。在對較小的子模組進行程式設計之後,我們將它們組合到更大的模組中。在圖表中,每個細化級別都標記為 LN。
當我們編寫更高級別的模組時,我們需要某種佔位符來代替較低級別的模組。這些佔位符稱為樁。它們使我們能夠測試更高級別的模組,而無需先編碼較低級別的模組。
逐步細化的關鍵是每個模組最終只應執行一項任務。底層模組可以使用幾行程式碼完成。
自頂向下方法的一個優勢是我們首先看到了全貌。當我們編寫高階模組時,我們不需要立即關心細節。我們的低階模組是根據高階模組設計的,我們已經非常詳細地瞭解了我們希望用它們實現什麼。這確保了高層和低層之間的相容性。因此,自頂向下方法適用於較大的問題。

自底向上方法顧名思義,從結構的底部開始,慢慢地到達頂部。更準確地說,我們從建立最小的模組開始,將它們組合在一起形成更大的模組,並繼續這個過程,直到我們構建了整個東西。這種程式設計方法在已有預製模組的情況下特別有用。
當我們自頂向下設計時,我們的每個模組都是為上面的模組而設計的。當我們自底向上設計時,我們的每個模組都有其自身的用途。因此,較小的模組可以在多個更大的模組中使用,從而促進程式碼重用。此外,通用模組位元定模組更容易閱讀和理解,因此自底向上方法也增強了程式碼可讀性。

自底向上方法也更簡單,因為我們不需要為更高級別的模組編寫樁。我們編寫一個樁,測試它,然後繼續。
但是,與自頂向下方法不同,我們並沒有立即看到全貌。當我們編寫低階模組時,我們並沒有考慮到高階模組。這可能會導致高層和低層模組之間連線不良。它也更難監控和管理專案。因此,自底向上方法更適合較小的問題。

無論我們使用的是自頂向下方法還是自底向上方法,我們都傾向於使用庫來幫助我們。庫是在程式設計中可以使用的一組預定義模組。例如,物理引擎使我們能夠在應用程式中執行逼真的模擬。使用庫可以被視為一種自底向上設計形式。
大多數程式語言都帶有一個標準庫。標準庫可以在我們編寫任何程式時使用。例如,ActionScript,Flash 應用程式的程式語言,包含一個用於在計算機螢幕上表示視覺元素的複雜標準庫。
現在我們已經為我們的程式繪製了藍圖,我們可以開始編寫它的演算法了。只有一個問題……什麼是演算法?