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

相关文章

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

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

Android平台播放RTSP流的几种方案探究(VLC VS ExoPlayer VS SmartPlayer)

技术背景 好多开发者需要遴选Android平台RTSP直播播放器的时候,不知道如何选的好,本文针对常用的方案,做个大概的说明: 1. 使用VLC for Android VLC Media Player(VLC多媒体播放器),最初命名为VideoLAN客户端,是VideoLAN品牌产品,是VideoLAN计划的多媒体播放器。它支持众多音频与视频解码器及文件格式,并支持DVD影音光盘,VCD影

native和static native区别

本文基于Hello JNI  如有疑惑,请看之前几篇文章。 native 与 static native java中 public native String helloJni();public native static String helloJniStatic();1212 JNI中 JNIEXPORT jstring JNICALL Java_com_test_g

【编程底层思考】垃圾收集机制,GC算法,垃圾收集器类型概述

Java的垃圾收集(Garbage Collection,GC)机制是Java语言的一大特色,它负责自动管理内存的回收,释放不再使用的对象所占用的内存。以下是对Java垃圾收集机制的详细介绍: 一、垃圾收集机制概述: 对象存活判断:垃圾收集器定期检查堆内存中的对象,判断哪些对象是“垃圾”,即不再被任何引用链直接或间接引用的对象。内存回收:将判断为垃圾的对象占用的内存进行回收,以便重新使用。

C++操作符重载实例(独立函数)

C++操作符重载实例,我们把坐标值CVector的加法进行重载,计算c3=c1+c2时,也就是计算x3=x1+x2,y3=y1+y2,今天我们以独立函数的方式重载操作符+(加号),以下是C++代码: c1802.cpp源代码: D:\YcjWork\CppTour>vim c1802.cpp #include <iostream>using namespace std;/*** 以独立函数

Go Playground 在线编程环境

For all examples in this and the next chapter, we will use Go Playground. Go Playground represents a web service that can run programs written in Go. It can be opened in a web browser using the follow

【VUE】跨域问题的概念,以及解决方法。

目录 1.跨域概念 2.解决方法 2.1 配置网络请求代理 2.2 使用@CrossOrigin 注解 2.3 通过配置文件实现跨域 2.4 添加 CorsWebFilter 来解决跨域问题 1.跨域概念 跨域问题是由于浏览器实施了同源策略,该策略要求请求的域名、协议和端口必须与提供资源的服务相同。如果不相同,则需要服务器显式地允许这种跨域请求。一般在springbo

深入理解RxJava:响应式编程的现代方式

在当今的软件开发世界中,异步编程和事件驱动的架构变得越来越重要。RxJava,作为响应式编程(Reactive Programming)的一个流行库,为Java和Android开发者提供了一种强大的方式来处理异步任务和事件流。本文将深入探讨RxJava的核心概念、优势以及如何在实际项目中应用它。 文章目录 💯 什么是RxJava?💯 响应式编程的优势💯 RxJava的核心概念