声明式?命令式?面向对象?函数式?

目录

  • 声明式编程 vs 命令式编程
  • 为什么面向对象属于命令式编程
  • 了解下函数式编程
  • 参考

React:以声明式编写 UI,可以让你的代码更加可靠,且方便调试。

Vue.js 的核心是一个允许采用简洁的模板语法来声明式地将数据渲染进 DOM 的系统。

声明式?命令式?面向对象?函数式?

声明式编程 vs 命令式编程

命令式编程:通过一系列改变程序状态的指令完成计算,模拟计算机的运行过程,告诉计算机怎么做
声明式编程:利用数理逻辑或既定规范对已知条件进行推理运算,更看重结果而非过程,给计算机描述我们想要什么

声明式编程的思考层面要高于命令式编程,声明式语言往往通过命令式语言做底层实现。

属于命令式编程的有:汇编、C、面向过程编程、面向对象编程。
属于声明式编程的有:正则表达式、SQL、HTML、CSS、函数式编程。

为什么面向对象属于命令式编程

无论是面向过程还是面向对象,两种编程方式都要对程序进行模块化,都需要调用过程或者方法来改变程序的数据,所以在某种程度上,它们的本质是一样的,这也是为什么它们都同属于命令式语言的原因。

只不过从形式上,面向对象编程语言具有更高的抽象能力,程序员可以更容易的实现一些常用的设计模式,比如封装、继承、多态等等。

了解下函数式编程

函数式编程将运算看作是数学中函数的计算。

程序中的函数更多的是一种“功能”角色,如果想让程序中的函数模拟数学函数,就要做一些限制:

  • 如果函数的输入参数相同,则输出也相同;
  • 函数执行过程不依赖外部因素,只能依赖于其输入参数;
  • 不产生任何副作用;

这样的函数就是纯函数。纯函数是程序代码模拟数学函数的基础。

纯函数保证了,函数执行过程中不依赖外界因素,也不影响外部环境。换句话说,在函数式编程中,状态和变量不再是程序员需要关注的问题。在程序的执行过程中,状态是存在的,而且随着函数的执行进度不断变化。但状态的变化过程不再与计算的顺序有关,而仅与输入有关。函数和输入参数就决定了程序执行过程中所处的状态。

参考

  1. https://zhuanlan.zhihu.com/p/28341870
  2. https://www.zhihu.com/question/27468564/answer/232900335

你可能感兴趣的:(前端基础)