首页 > 编程语言 >命令式编程\声明式编程\函数式编程

命令式编程\声明式编程\函数式编程

时间:2023-04-10 11:46:21浏览次数:55  
标签:console log res 编程 命令式 变量 函数

命令式编程(Imperative):详细的命令机器怎么(How)去处理一件事情以达到你想要的结果(What);
声明式编程(Declarative):只告诉你想要的结果(What),机器自己摸索过程(How)。
命令式编程是我们一步一步告诉机器需要怎么做,机器按部就班地执行命令。声明式编程是我们告诉机器我想要这样的结果,而不管他是怎么实现的,这更符合人类的思维。举一个数据过滤的例子来说明这一点,比如我们要打印下数组中存不存在 3。

// 命令式编程做法
let res = false;
for(i = 0; i < dataArr.length; i++) {
    if (i === 3) {
        res = true;
    }
}
console.log(res);

// 声明式编程做法
let res = dataArr.filter(i => i === 3);
console.log(res);

响应式编程:它希望有某种方式能够构建关系,而不是执行某种赋值命令。响应式编程是一种通过异步和数据流来构建事务关系的编程模型。

构建关系是指我们可以定义两个变量(A 和 B)之间具有某种永恒的关系。一旦 A 变量改变,我们不需要人为地对 B 变量进行任何处理,B 变量自动更改以满足与 A 变量已经定义好的关系。

A = 1;

B - A := 2;     // 定义一种关系,这里是指 B 减去 A 永远等于 2
console.log(B); // B = 3

A = 3;          // A 改变
console.log(B); // B = 5

https://notes.gryen.com/articles/show/279.html

https://blog.csdn.net/qq_35040959/article/details/126084583

 

聊聊编程范式

标签:console,log,res,编程,命令式,变量,函数
From: https://www.cnblogs.com/bxf0011/p/17302415.html

相关文章

  • SQL获取年月日时分秒的函数
    1.GETDATE()返回当前的时间和日期。语法:getdate()selectgetdate()2.CONVERT()把日期转换为新数据类型的通用函数,可以用不同的格式显示日期/时间数据。说明:此样式一般在时间类型(datetime,smalldatetime)与字符串类型(nchar,nvarchar,char,varchar)相互转换的时候才......
  • CH32V系列——关于指定函数在RAM中运行
     注意:以下修改,都只是在原来基础上添加,不做删减在启动文件做修改,增加下列代码:2:/*LoaddatasectionfromflashtoRAM*/laa0,_highcode_lmalaa1,_highcode_vma_startlaa2,_highcode_vma_endbgeua1,a2,2f1:lwt0,(a0)swt0,(a1)addia0,a0,4addia1,......
  • C#编程之c#串口(winform、wpf)
    本文主要向大家介绍了C#编程之c#串口通信讲解(一)(winform、wpf),通过具体的内容向大家展示,希望对大家学习C#编程有所帮助。串口操作需要注意的几点如下:1、如果是USB转串口;则需要安装USB转串口驱动,附件有此驱动。2、串口打开状态最好不要直接插拔串口,可能会导致中控板或者串口线烧坏。......
  • VS2019使用C语言进行websocket编程
    一直在写C#代码好多年不写C语言代码了,记录一下之前某个项目里用C写的一个websocket服务,用C的优势是写的东西体积小性能高,但是写业务的话还得用C#、Java之类的语言,不然会折腾死人。。。 用VisualStudio新建一个C++(因为不能直接建C语言项目)项目,我演示就创建一个控制台项目。项......
  • #yyds干货盘点#聊一聊forEach函数
    前端循环中会用到forEach,其实forEach有很多问题:forEach无法终止或者跳出循环forEach()方法不支持使用break或continue语句来跳出循环或跳过某一项。如果需要跳出循环或跳过某一项,应该使用for循环或其他支持break或continue语句的方法。forEach删除自身元素,index不可被重置在forEac......
  • java并发编程(2):Java多线程-java.util.concurrent高级工具
    高级多线程控制类Java1.5提供了一个非常高效实用的多线程包:java.util.concurrent,提供了大量高级工具,可以帮助开发者编写高效、易维护、结构清晰的Java多线程程序。ThreadLocal类ThreadLocal类用来保存线程的独立变量。对一个线程类(继承自Thread)当使用ThreadLocal维护变......
  • java并发编程(1):Java多线程-基本线程类-基础知识复习笔记
    复习资料:《同步与异步:并发/并行/进程/线程/多cpu/多核/超线程/管程 》基本线程类基本线程类基本线程类指的是Thread类,Runnable接口,Callable接口继承Thread创建线程继承java.lang.Thread类创建线程是最简单的一种方法,也最直接。publicclassMyThread1extendsThread{}种......
  • Rust编程语言入门之cargo、crates.io
    cargo、crates.io本章内容通过releaseprofile来自定义构建在https://crates.io/上发布库通过workspaces组织大工程从https://crates.io/来安装库使用自定义命令扩展cargo一、通过releaseprofile来自定义构建releaseprofile(发布配置)releaseprofile:是预......
  • NOI / 1.8编程基础之多维数组 04:错误探测
    描述给定n*n由0和1组成的矩阵,如果矩阵的每一行和每一列的1的数量都是偶数,则认为符合条件。你的任务就是检测矩阵是否符合条件,或者在仅改变一个矩阵元素的情况下能否符合条件。"改变矩阵元素"的操作定义为0变成1或者1变成0。输入输入n+1行,第1行为矩阵的大小n(0<n<100),以......
  • 结对编程-----四则运算
    本次结对编程我与2152710一起进行了四则运算的编程。这次采用python作为编程语音。小学生四则运算:两次运算,100 以内的数字,确保答案在 0..100 之间。以下是代码展示importrandomforiinrange(100):  a=random.randint(1,100)  b=random.randint(1,100......