計算機系統是分層的,也就是下層做一些支援的工作,暴露介面給上層用。注意:語言的本質是一種介面,就是我程式設計的目的只是為了呼叫硬體為我做事情;計算機的最下層是cpu指令,其本質就是用「變數定義+順序執行+分支判斷+迴圈」所表達的邏輯過程。計算機應用的最上層是實現人類社會的某種功能。所以所有計算機編碼的過程,就是用邏輯表達現實的過程。個人理解 declarative programming 是相對更高層面的程式設計,也就是很多被被別人特別好的給封裝了起來,自己要做的事情少;也就是高階,跟c#一樣
層與層之間定義的藉口,越接近現實的表達就叫越「宣告式」(declarative),越接近計算機的執行過程就叫越「命令式」(imperative)。注意這不是絕對的概念,而是相對的概念。
又稱之為"說明式"
你告訴機器你想要什麼,機器去做
蔬菜.做成菜(蔬菜沙拉)
常見的宣告式有: sql,html,linq
又稱之為"指令式"
命令機器如何去做事情,這樣不管你想要什麼,它都會按照你的想法程式設計
洗乾淨(蔬菜)
混合(蔬菜, 沙拉)
放入盤中(混合物)
舉個例子:
leicheng 公司年會說明式就是 每個節目負責人告訴hr我需要什麼
命令式就是你們又自己的預算,自己想辦法去買,怎麼買去哪兒買,自己搞定,記得要發票,拿發票去填寫報銷流程,去採購,運輸,最後跟hr報銷
// 原來的命令時語法
var petlookup = new dictionary();
foreach (var pet in pets)
// 等效的linq表示式
var petlookup = pets.todictionary(pet => pet.rfid);
//**的意圖不是建立新的 dictionary並通過迴圈在其中新增條目,而是將現有列表轉換為字典! linq 維持這種意圖,而命令性**則不會。
1 3 2 宣告式程式設計風格
1.3.2 宣告式程式設計風格 用宣告式程式設計風格,我們表達的程式邏輯無需說明執行細節。這個描述聽起來有些耳熟,因為它十分類似於我們在 1.1 節中看到的函式式程式設計的定義。但宣告式程式設計是更為一般的概念,可以使用不同技術來實現 函式式程式設計只是實現這一目標的一種方法。我們看乙個演示,如何用...
宣告式程式設計和命令式程式設計
宣告式程式設計是一種程式設計正規化,它關注的是你要做什麼 what 而不是如何做 how 也就是你只需要告訴 機器 你想要的是什麼 what 讓機器想出如何去做 how 舉例 想要顯示乙個p標籤 this is a textp 查詢學生中年齡大於18對的學生的資訊 select from stude...
宣告式程式設計與命令式程式設計
先統一一下概念,我們有兩種程式設計方式 命令式和宣告式。我們可以像下面這樣定義它們之間的不同 命令式程式設計 命令 機器 如何去做事情,告訴它如何去做。宣告式程式設計 告訴 機器 你想要的是什麼,讓機器自己去做。宣告式程式設計和命令式程式設計的 例子 舉個簡單的例子,假設我們想讓乙個陣列裡的數值翻倍...