【释义明晰】三种编程范式的概念和区别:imperative vs functional vs declarative(命令式编程 vs 函数式编程 vs 声明式编程)

本文主要是介绍【释义明晰】三种编程范式的概念和区别:imperative vs functional vs declarative(命令式编程 vs 函数式编程 vs 声明式编程),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 1. 前言
  • 2. 区别总结
  • 3. 具体探索
  • 4. 小结

1. 前言

创作开始时间:2022年6月16日12:22:51

如题,简单探究一下三种编程范式的概念和区别。

2. 区别总结

在进行了一些探索(见下一节)之后,我大概知道了三者的区别:

  • imperative programming,命令式编程 主要关注的是怎么做,是过程,是偏底层一点的编程实现。经常要用到:“顺序+分支+循环”
  • declarative programming,声明式编程不关心怎么做,只关心做什么,是高层的抽象。不怎么用“顺序+分支+循环”
  • functional programming 函数式编程:和声明式编程很相关。只关注做什么,不关注怎么做。有人认为声明式包含函数式和逻辑式编程 (函数式编程与声明式语言 我觉得还是有道理的)。

3. 具体探索

declarative programming:做什么。
imperative programming:怎么做。

Declarative programming is to program on a higher level of abstraction than imperative programming. Neither is better or worse, but both have their places.

The concept of functional and procedural programming paradigms are really just extensions of the concept of declarative and imperative programming paradigms. In fact, functional programming is a subset of declarative programming, and procedural programming is a subset of imperative programming.

命令式(imperative)对应过程式(Procedural programming)
声明式(declarative)丢应函数式(Functional programming)

参考:

  • The Differences Between Procedural, Functional, Imperative, and Declarative Programming Paradigms https://amzotti.github.io/programming%20paradigms/2015/02/13/what-is-the-difference-between-procedural-function-imperative-and-declarative-programming-paradigms/

Both imperative and declarative programming are classified as the common programming paradigms (programming paradigms are a way to classify programming languages based on their features).

越接近现实的表达就叫越“声明式”(declarative),越接近计算机的执行过程就叫越“命令式”(imperative)

  • https://learntocodetogether.com/imperative-vs-declarative-programming/
  • https://wenku.baidu.com/view/59fa505a30687e21af45b307e87101f69e31fb82.html
  • 编程风格之声明式与命令式的区别 - 没有50CM手臂的文章 https://zhuanlan.zhihu.com/p/58976871

在这里插入图片描述

参考:

  • https://wenku.baidu.com/view/83c863cfe309581b6bd97f19227916888486b9e5.html

4. 小结

以上。

创作结束时间:2022年6月16日12:52:29

这篇关于【释义明晰】三种编程范式的概念和区别:imperative vs functional vs declarative(命令式编程 vs 函数式编程 vs 声明式编程)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/354093

相关文章

MySQL中删除重复数据SQL的三种写法

《MySQL中删除重复数据SQL的三种写法》:本文主要介绍MySQL中删除重复数据SQL的三种写法,文中通过代码示例讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下... 目录方法一:使用 left join + 子查询删除重复数据(推荐)方法二:创建临时表(需分多步执行,逻辑清晰,但会

Oracle的to_date()函数详解

《Oracle的to_date()函数详解》Oracle的to_date()函数用于日期格式转换,需要注意Oracle中不区分大小写的MM和mm格式代码,应使用mi代替分钟,此外,Oracle还支持毫... 目录oracle的to_date()函数一.在使用Oracle的to_date函数来做日期转换二.日

结构体和联合体的区别及说明

《结构体和联合体的区别及说明》文章主要介绍了C语言中的结构体和联合体,结构体是一种自定义的复合数据类型,可以包含多个成员,每个成员可以是不同的数据类型,联合体是一种特殊的数据结构,可以在内存中共享同一... 目录结构体和联合体的区别1. 结构体(Struct)2. 联合体(Union)3. 联合体与结构体的

什么是 Ubuntu LTS?Ubuntu LTS和普通版本区别对比

《什么是UbuntuLTS?UbuntuLTS和普通版本区别对比》UbuntuLTS是Ubuntu操作系统的一个特殊版本,旨在提供更长时间的支持和稳定性,与常规的Ubuntu版本相比,LTS版... 如果你正打算安装 Ubuntu 系统,可能会被「LTS 版本」和「普通版本」给搞得一头雾水吧?尤其是对于刚入

在Spring中配置Quartz的三种方式

《在Spring中配置Quartz的三种方式》SpringQuartz是一个任务调度框架,它允许我们定期执行特定的任务,在Spring中,我们可以通过多种方式来配置Quartz,包括使用​​@Sche... 目录介绍使用 ​​@Scheduled​​ 注解XML 配置Java 配置1. 创建Quartz配置

python中json.dumps和json.dump区别

《python中json.dumps和json.dump区别》json.dumps将Python对象序列化为JSON字符串,json.dump直接将Python对象序列化写入文件,本文就来介绍一下两个... 目录1、json.dumps和json.dump的区别2、使用 json.dumps() 然后写入文

C#反射编程之GetConstructor()方法解读

《C#反射编程之GetConstructor()方法解读》C#中Type类的GetConstructor()方法用于获取指定类型的构造函数,该方法有多个重载版本,可以根据不同的参数获取不同特性的构造函... 目录C# GetConstructor()方法有4个重载以GetConstructor(Type[]

C++11的函数包装器std::function使用示例

《C++11的函数包装器std::function使用示例》C++11引入的std::function是最常用的函数包装器,它可以存储任何可调用对象并提供统一的调用接口,以下是关于函数包装器的详细讲解... 目录一、std::function 的基本用法1. 基本语法二、如何使用 std::function

hdu1171(母函数或多重背包)

题意:把物品分成两份,使得价值最接近 可以用背包,或者是母函数来解,母函数(1 + x^v+x^2v+.....+x^num*v)(1 + x^v+x^2v+.....+x^num*v)(1 + x^v+x^2v+.....+x^num*v) 其中指数为价值,每一项的数目为(该物品数+1)个 代码如下: #include<iostream>#include<algorithm>

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor