2011-01-24 20 views
14

我來自非編程背景,經常遇到編程範式,設計模式和應用程序體系結構等術語。雖然我認爲我對這些術語的含義有一個模糊的理解,但是如果有人能夠澄清每一個是什麼,它們與另一個不同以及這些概念如何應用於目標C,我會很感激。編程範式,設計模式和應用架構之間的區別?

回答

14

編程範例:如「Functional Programming」,「Procedural Programming」和「Object Oriented Programming」。編程範例和使用它們的語言告訴代碼如何寫入。例如,在面向對象編程中,代碼被分成類(有時是語言特徵,有時不是(例如JavaScript)),並且通常支持繼承和某種類型的多態。程序員創建類,然後創建類的實例(即對象)來執行程序的操作。在功能語言中,計算機上的狀態變化受到語言本身的嚴格控制。函數是第一類對象,儘管不是所有功能是第一類對象的語言都是函數式編程語言(這個主題是一個很好的辯論)。用函數式語言編寫的代碼涉及大量的嵌套函數,程序中幾乎每一步都是新函數調用。對於程序編程,C程序和bash腳本是很好的例子,你可以說做第1步,做第2步等,而不是創建類和什麼。

設計模式:設計模式是一種有用的抽象,可以用任何語言實現。這是做事的「模式」。就像你想要實現一堆步驟一樣,你可以使用'composite'和'command'模式,這樣你的實現就更加通用了。將模式看作是以通用方式解決常見編碼任務的既定模板。

應用程序體系結構:考慮如何構建系統來執行任務。因此,對於Web應用程序,體系結構可能涉及負載平衡器後面的x個網關,即異步提供隊列。消息由運行在z計算機上的y進程提取,具有1個主數據庫和一個備份從服務器。應用程序體系結構涉及選擇使用的平臺,語言,框架。這與軟件體系結構不同,後者更多地講述如何在給定軟件堆棧的情況下實際執行程序。

2

想想這些術語的本土解釋(即,在現場計算機科學之外)。

  • 範式是包羅萬象的計算觀點,不僅影響你可以做什麼樣的事情,甚至可以有什麼樣的想法;函數式編程是編程範例的一個例子。
  • 模式是完全確定的編程技巧,以某種半正式的方式編纂而成。
  • 應用程序體系結構是一個廣義術語,它描述瞭如何組織複雜的應用程序。

Objective-C主要將OO範式的元素添加到命令式語言C中。模式和體系結構在很大程度上與語言正交。

2
  • 編程範例是計算機編程的基本風格。

  • 軟件設計模式 - 是常見軟件設計問題的最佳實踐解決方案。有許多常見問題的設計模式。要了解更多關於設計模式,你可以從這個名單5 Best Books for Learning Design Patterns

  • 應用架構看了一些書 - 應用程序體系結構正在由一個組織來創建複合應用程序的科學保證應用套件藝術是可擴展的,可靠的,可用且可管理。

我想這些術語中的任何一個都適用於所有的編程語言。所有編程語言都有設計模式。

這些是爲了創建更高級別的抽象而定義的邏輯術語。

希望這有助於

5

一些快速的定義,

應用程序體系結構描述了軟件的整體架構。例如,基於網絡的程序通常使用分層體系結構,其中功能劃分爲若干層,諸如用戶界面(html生成,處理來自用戶的命令),業務邏輯(規則如何執行軟件的功能)和數據庫(持久數據)。相比之下,數據處理應用程序可以使用所謂的管道和過濾器體系結構,其中一段數據通過管道,其中不同模塊對數據起作用。

設計模式是一個非常低級別的工具,提供瞭如何組織代碼以獲得特定功能而不影響整體結構的成熟模型。簡單的例子可能包括Singleton(如何保證代碼的單個實例的存在)或Facade(如何爲更復雜的系統提供簡單的外部視圖)。

另一方面,範例是另一種極端,指導代碼實際佈局的原則,並且它們都需要完全不同的思維方式來應用。例如,程序編程主要關注的是將程序邏輯劃分爲多個功能,並將這些功能捆綁到模塊中。面向對象的編程旨在將數據和操作數據的操作封裝到對象中。函數式編程強調使用函數而不是單獨的語句,避免副作用和狀態變化。 Objective-C主要是對C的面向對象的擴展,設計模式和體系結構不是語言特定的結構。

0

簡單英文單詞 範式是編程時的一種思維方式,其中第一類概念用於組織軟件。 Exop使用類作爲一等公民,函數或lambda微積分使用函數及其組合,方面使用系統的各個方面......等等。思考解決方案時,首先想到的就是頭等公民。目標是將解決方案組織到軟件組件中。

設計模式是軟件組件的常見成功應用。

應用程序架構是爲了實現用例scdnarios而放在一起的一組設計模式。

相關問題