使用C 進行宣告式程式設計

2021-06-27 17:28:10 字數 1217 閱讀 6049

宣告式程式設計(英語

:declarative programming)是一種程式設計范型

,與命令式程式設計相對立。它描述目目標性質,讓計算機明白目標,而非流程。宣告式程式設計不用告訴電腦問題領域,從而避免隨之而來的***。而命令式程式設計則需要用演算法來明確的指出每一步該怎麼做。

簡單的說,宣告式側重於做什麼,命令式側重於怎麼做。

雖然c++是物件導向的語言,但並不妨礙我們用宣告式的思想程式設計。下面舉個簡單的例子。

命令式風格:

vectornumbers = ;

int sum = 0;

for (auto iter = numbers.begin(); iter != numbers.end(); iter++)

宣告式風格:

方法一:

vectornumbers = ;

int sum = 0;

for each (auto num in numbers)

方法二:

vectornumbers = ;

int sum = 0;

for_each(numbers.begin(), numbers.end(), [&sum](int &num)

);

這兩種風格的區別就在於遍歷集合的方法。命令式中我們指定遍歷的方法。而在宣告式裡,我們不關心集合怎麼遍歷,僅僅是使用for each語句。這就是兩種思想區別。在宣告式中,我們更關心要」做「一件事情,而不太關心這件事是怎麼做的。

在上面的方法二中,我們用到了lambda表示式,這是c++11引進的新特性。lambda表示式可以使宣告式程式設計更為方便(當然並不是沒有了它就無法實現)。

再舉個例子,sql語言。sql是典型的宣告式語言。編寫sql語句只需關心程式設計目的,具體怎麼實現的則毫不關心。

不過c++並不是原生的宣告式語言,要完全像sql語言那樣的程式設計當然是不可能的。因此只能使用折中的方法。

邏輯與實現細節分離。

(該部分待補充)

宣告式程式設計並不神秘,也並不多高階。可能剛一聽會有「原來就這樣啊,還以為多高階呢」的想法。但一旦用這種思想來指導你寫**,將是一種完全不同的體驗。而且你的**質量也將提公升乙個檔次,並且這個過程是自然而然的。

未完待續……

怎麼使用Annotation進行宣告式事務管理

前言 spring對於各種各樣的orm框架 包括jdbc 都可以它進行宣告式事務管理,以下講 解的是spring對hibernate的宣告式事務管理,也是用的最多的 一 匯入命名空間並注入sessionfactory 在spring配置檔案中beans元素中 xmlns tx xsi schemal...

使用XML進行宣告式事務管理

前言 spring對於各種各樣的 orm框架 包括 jdbc 都可以它進行宣告式事務管理,以下講 解的是spring 對hibernate 的宣告式事務管理,也是用的最多的 一 匯入命名空間並注入sessionfactory 1.在 spring 配置檔案中 beans 元素中 xmlns tx x...

宣告式程式設計與命令式程式設計

先統一一下概念,我們有兩種程式設計方式 命令式和宣告式。我們可以像下面這樣定義它們之間的不同 命令式程式設計 命令 機器 如何去做事情,告訴它如何去做。宣告式程式設計 告訴 機器 你想要的是什麼,讓機器自己去做。宣告式程式設計和命令式程式設計的 例子 舉個簡單的例子,假設我們想讓乙個陣列裡的數值翻倍...