【释义明晰】三种编程范式的概念和区别: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的JDBC编程详解

《MySQL的JDBC编程详解》:本文主要介绍MySQL的JDBC编程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言一、前置知识1. 引入依赖2. 认识 url二、JDBC 操作流程1. JDBC 的写操作2. JDBC 的读操作总结前言本文介绍了mysq

Vue和React受控组件的区别小结

《Vue和React受控组件的区别小结》本文主要介绍了Vue和React受控组件的区别小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录背景React 的实现vue3 的实现写法一:直接修改事件参数写法二:通过ref引用 DOMVu

C++统计函数执行时间的最佳实践

《C++统计函数执行时间的最佳实践》在软件开发过程中,性能分析是优化程序的重要环节,了解函数的执行时间分布对于识别性能瓶颈至关重要,本文将分享一个C++函数执行时间统计工具,希望对大家有所帮助... 目录前言工具特性核心设计1. 数据结构设计2. 单例模式管理器3. RAII自动计时使用方法基本用法高级用法

JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法

《JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法》:本文主要介绍JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法,每种方法结合实例代码给大家介绍的非常... 目录引言:为什么"相等"判断如此重要?方法1:使用some()+includes()(适合小数组)方法2

redis-sentinel基础概念及部署流程

《redis-sentinel基础概念及部署流程》RedisSentinel是Redis的高可用解决方案,通过监控主从节点、自动故障转移、通知机制及配置提供,实现集群故障恢复与服务持续可用,核心组件包... 目录一. 引言二. 核心功能三. 核心组件四. 故障转移流程五. 服务部署六. sentinel部署

GO语言短变量声明的实现示例

《GO语言短变量声明的实现示例》在Go语言中,短变量声明是一种简洁的变量声明方式,使用:=运算符,可以自动推断变量类型,下面就来具体介绍一下如何使用,感兴趣的可以了解一下... 目录基本语法功能特点与var的区别适用场景注意事项基本语法variableName := value功能特点1、自动类型推

GO语言中函数命名返回值的使用

《GO语言中函数命名返回值的使用》在Go语言中,函数可以为其返回值指定名称,这被称为命名返回值或命名返回参数,这种特性可以使代码更清晰,特别是在返回多个值时,感兴趣的可以了解一下... 目录基本语法函数命名返回特点代码示例命名特点基本语法func functionName(parameters) (nam

Python Counter 函数使用案例

《PythonCounter函数使用案例》Counter是collections模块中的一个类,专门用于对可迭代对象中的元素进行计数,接下来通过本文给大家介绍PythonCounter函数使用案例... 目录一、Counter函数概述二、基本使用案例(一)列表元素计数(二)字符串字符计数(三)元组计数三、C

Go之errors.New和fmt.Errorf 的区别小结

《Go之errors.New和fmt.Errorf的区别小结》本文主要介绍了Go之errors.New和fmt.Errorf的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考... 目录error的基本用法1. 获取错误信息2. 在条件判断中使用基本区别1.函数签名2.使用场景详细对

Python异步编程之await与asyncio基本用法详解

《Python异步编程之await与asyncio基本用法详解》在Python中,await和asyncio是异步编程的核心工具,用于高效处理I/O密集型任务(如网络请求、文件读写、数据库操作等),接... 目录一、核心概念二、使用场景三、基本用法1. 定义协程2. 运行协程3. 并发执行多个任务四、关键