聲明式編程是一種指定程序應該做什么而不是指定如何做的方法。大多數計算機語言都是基于解決問題所需的步驟,但是有些語言只指出問題的本質特征,并由計算機來決定解決問題的最佳方法。前者支持命令式編程,而后者支持聲明...
聲明式編程是一種指定程序應該做什么而不是指定如何做的方法。大多數計算機語言都是基于解決問題所需的步驟,但是有些語言只指出問題的本質特征,并由計算機來決定解決問題的最佳方法。前者支持命令式編程,而后者支持聲明式編程

聲明式編程是一種指定程序應該做什么的方法,我們可以考慮下面的SQL示例,從銷售數據中獲取利潤超過某個數字(例如700美元)的所有銷售區域Select Region,Profit from Sales where Profit;700此語句不指示SQL系統必須執行的操作獲取數據,SQL系統可以遍歷每個銷售記錄,判斷是否滿足條件,或者,它可以快速地從預先排序的數據中獲取前幾條記錄,語句只表示所需數據的性質,Prolog是一種聲明性編程語言,用來表示實體之間的邏輯關系祖先(M,C):—母親(M,C)祖先(X,Z):—母親(X,Y),祖先(Y,Z)上述程序表示真理。如果M是C的母親,那么M就是C的祖先。如果X是某人Y的母親,而Y又是Z的祖先,那么X是Z的祖先,有了這個和一些母子事實,程序就可以回答關于整個母系家譜的問題,在程序執行過程中,Prolog系統建立了許多真實的語句,這樣就創建了一個知識庫。這個知識庫可以自己高效地搜索。上述程序的創建者沒有指定如何搜索。HTML和CSS是聲明性編程語言。例如,HTML示例
<;table border="1">;表示細邊框。CSS示例是
color:blue。它指定文本顏色。如這些示例所示,HTML和CSS指定網頁上應該顯示什么,但不是如何顯示。聲明性編程語言的優勢主要有兩個方面。程序簡潔;這使得即使是非程序員也很容易獲得解決方案上面的SQL示例,分析師或業務支持人員可以獲得所需的信息,類似地,外行人員可以用簡單的HTML和CSS命令編寫可接受的web頁面聲明式編程模型的第二個優點是,在后臺的計算機系統中提供了指示如何解決問題的重復命令式代碼,這種代碼可以高效地結合計算中的最佳思想,可以利用并行性。