一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

編程范式:命令式編程(Imperative)、聲明式編程(Declarative)和函數(shù)式編程(Functional)

 liang1234_ 2019-03-22

主要的編程范式有三種:命令式編程,聲明式編程和函數(shù)式編程。

命令式編程:

命令式編程的主要思想是關(guān)注計(jì)算機(jī)執(zhí)行的步驟,即一步一步告訴計(jì)算機(jī)先做什么再做什么。

比如:如果你想在一個(gè)數(shù)字集合 collection(變量名) 中篩選大于 5 的數(shù)字,你需要這樣告訴計(jì)算機(jī):

  1. 第一步,創(chuàng)建一個(gè)存儲(chǔ)結(jié)果的集合變量 results;

  2. 第二步,遍歷這個(gè)數(shù)字集合 collection;

  3. 第三步:一個(gè)一個(gè)地判斷每個(gè)數(shù)字是不是大于 5,如果是就將這個(gè)數(shù)字添加到結(jié)果集合變量 results 中。

代碼實(shí)現(xiàn)如下:

List<int> results = new List<int>();
foreach(var num in collection)
{if (num > 5)
          results.Add(num);
}

很明顯,這個(gè)樣子的代碼是很常見的一種,不管你用的是 C, C++ 還是 C#, Java, Javascript, BASIC, Python, Ruby 等等,你都可以以這個(gè)方式寫。

聲明式編程:

聲明式編程是以數(shù)據(jù)結(jié)構(gòu)的形式來表達(dá)程序執(zhí)行的邏輯。它的主要思想是告訴計(jì)算機(jī)應(yīng)該做什么,但不指定具體要怎么做。

SQL 語句就是最明顯的一種聲明式編程的例子,例如:

SELECT * FROM collection WHERE num > 5

除了 SQL,網(wǎng)頁編程中用到的 HTML 和 CSS 也都屬于聲明式編程。

通過觀察聲明式編程的代碼我們可以發(fā)現(xiàn)它有一個(gè)特點(diǎn)是它不需要?jiǎng)?chuàng)建變量用來存儲(chǔ)數(shù)據(jù)。

另一個(gè)特點(diǎn)是它不包含循環(huán)控制的代碼如 for, while。

函數(shù)式編程:

函數(shù)式編程和聲明式編程是有所關(guān)聯(lián)的,因?yàn)樗麄兯枷胧且恢碌模?span style="color: #38761d;">即只關(guān)注做什么而不是怎么做。但函數(shù)式編程不僅僅局限于聲明式編程。

函數(shù)式編程最重要的特點(diǎn)是“函數(shù)第一位”,即函數(shù)可以出現(xiàn)在任何地方,比如你可以把函數(shù)作為參數(shù)傳遞給另一個(gè)函數(shù),不僅如此你還可以將函數(shù)作為返回值。大部分常見的編程語言一半都已經(jīng)提供了對(duì)這種編程方式的支持,比如 JavaScript,再有 C# 中的 LINQ 和 Java 中的 Lambda 和閉包的概念。

Java 8 最大的一個(gè)對(duì)函數(shù)式編程支持的更新就是 Stream API,感興趣的可以了解下,官方文檔地址:https://docs.oracle.com/javase/8/docs/api/java/util/stream/package-summary.html

相比于以前的命令式編程,在 Java 中我個(gè)人現(xiàn)在更傾向于函數(shù)式編程的方法,它可以讓代碼的邏輯更清晰更優(yōu)雅,比如同樣的邏輯用 Java 8 的 Stream 方式寫就是:

List<Number> results = collection.stream()
                                 .filter(n -> n > 5)
                                 .collect(Collectors.toList());

結(jié)束語:

以后會(huì)另起一篇專門整理下 Java 8 的函數(shù)式編程 Stream API 的用法,有興趣的朋友歡迎關(guān)注本博客,也歡迎大家留言討論。

 我們處于大數(shù)據(jù)時(shí)代,對(duì)數(shù)據(jù)處理感興趣的朋友歡迎查看另一個(gè)系列隨筆:利用Python進(jìn)行數(shù)據(jù)分析 基礎(chǔ)系列隨筆匯總

分享一張小鎮(zhèn)附近的小湖邊:

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    麻豆视传媒短视频在线看| 亚洲免费黄色高清在线观看| 日本丁香婷婷欧美激情| 亚洲一区二区三区中文久久 | 国产又猛又黄又粗又爽无遮挡| 国产美女网红精品演绎| 久热香蕉精品视频在线播放| 欧美激情中文字幕综合八区| 国内尹人香蕉综合在线| 国产又大又黄又粗又免费| 精品欧美在线观看国产| 在线日韩中文字幕一区| 欧美精品一区二区水蜜桃| 欧美加勒比一区二区三区| 夫妻性生活黄色录像视频| 成人精品视频一区二区在线观看| 国产精品日韩精品最新| 东北老熟妇全程露脸被内射| 美日韩一区二区精品系列| 国产精品亚洲欧美一区麻豆| 开心久久综合激情五月天| 人妻中文一区二区三区| 精品女同一区二区三区| 亚洲第一视频少妇人妻系列| 99久久免费中文字幕| 99久久无色码中文字幕免费| 亚洲一区二区三区一区| 正在播放国产又粗又长| 偷自拍亚洲欧美一区二页| 欧美不卡高清一区二区三区| 日韩在线一区中文字幕| 日韩美女偷拍视频久久| 午夜精品黄片在线播放| 超碰在线播放国产精品| 久七久精品视频黄色的| 国产精品伦一区二区三区在线| 亚洲国产成人av毛片国产| 欧美午夜色视频国产精品| 国产a天堂一区二区专区| 精品少妇人妻一区二区三区 | 日韩欧美91在线视频|