侧边栏壁纸
博主头像
敢敢雷博主等级

永言配命,自求多福

  • 累计撰写 57 篇文章
  • 累计创建 0 个标签
  • 累计收到 2 条评论

目 录CONTENT

文章目录

编程范式

敢敢雷
2022-03-12 / 0 评论 / 1 点赞 / 1,265 阅读 / 1,208 字
温馨提示:
部分素材来自网络,若不小心影响到您的利益,请联系我删除。

编程范式是程序员看待程序应该具有的观点代表了程序设计者认为程序应该如何被构建和执行的看法

编程范式一般包括三个方面:以OOP为例:

  1. 学科的逻辑体系---规则范式。

    类/对象、继承、动态绑定、方法改写、对象替换等等机制

  2. 心理认知因素---心理范式。

    "计算就是模拟",通过拟人化,按照自然的方式模拟自然

  3. 自然观/世界观---观念范式。

    强调程序的组织技术,视程序为松散耦合的对象/类的组合,以继承机制将类组织成一个层次结构,把程序视为相互服务的对象之间的对话

1、常见的编程范式

1.1、Imperative—命令式||过程式

主要思想是关注计算机执行的步骤,即一步一步告诉计算机先做什么再做什么

  • 脚本式:把其他语言开发的独立程序作为作为部件"粘到一起",如PHP。
  • 面向对象:将计算建立在独立的对象的相互作用之上,每个对象有其自身的内部状态,以及管理自身状态的可执行子程序。如Java。

1.2、Declarative—说明式||声明式

主要思想是告诉计算机应该做什么,但不指定具体要怎么做

  • 函数式:程序被看作是一种从输入到输出的函数。在函数式语言的程序设计中可以没有命令式语言所必需的那种变量,可以没有赋值语句,也可以没有循环。
  • 数据流:将计算看成在一些基本的功能节点之间流动的信息流。结点由输入单词的到达触发,能够并发操作。
  • 逻辑式:设法根据一集逻辑规则找出满足特定关系的值。

编程范式是编程语言的一种分类方式,它并不针对某种编程语言。就编程语言而言,一种语言可以适用多种编程范式。

例如从一个集合中找出奇数。

List<int> collection = new List<int> { 1, 2, 3, 4, 5 };
  • 命令式编程

    List<int> results = new List<int>();
    foreach(var num in collection)
    {
        if (num % 2 != 0)
              results.Add(num);
    }
    
  • 声明式编程

    var results = collection.Where( num => num % 2 != 0);
    

原文链接:

https://stackoverflow.com/questions/1784664/what-is-the-difference-between-declarative-and-imperative-paradigm-in-programmin

2、命令式编程

编程思想方式源于计算机指令的顺序排列。

  • 命令式编程适合解决线性的算法问题,强调自顶向下,精益求精的设计方式。类似我们的工作和生活方式,我们日常活动都是按部就班的顺序进行的。
  • 命令式编程趋向于开发运行较快且对资源利用率较高的程序

程序流程图是命令式编程进行程序编写的有效辅助手段。

命令式编程对实际事物处理可以拆分为以下两种模式:

  • 流程驱动:一般就是主动轮询,在干活中还要分心,主动去找活干,这样有空余的时间也完全浪费掉了
  • 事件驱动:比如公司有一个oa系统 你干完活的时候只需要看下oa系统有没分配给你活,没有可以干自己的事,不用担心还有其他事没干完

3、声明式编程

只关注做什么而不是怎么做

3.1、函数式编程

函数式编程关心类型(代数结构)之间的关系,命令式编程关心解决问题的步骤,函数式编程更加强调程序执行的结果而非执行过程,倡导利用若干简单的执行单元让计算结果不断渐进,逐层推导复杂的运算,而不是设计一个复杂的执行过程。

函数式编程中的lambda可以看成是两个类型之间的关系,一个输入类型和一个输出类型。

为啥Java的函数式编程(包括即将要卷的响应式编程)可读性差捏,因为我们平时写的都是命令式编程,函数式编程属于声明式编程,已经是属于编程思维的转变了。

相关学习来源(包括但不限于):

https://www.cnblogs.com/zhoulujun/p/10800344.html

1

评论区