编程范式 | 青训营笔记

78 阅读3分钟

编程范式

不同的编程语言有不同的编程范式,js作为前端的主要编程语言,是一种融合了多种编程范式、灵活性非常高的语言。因此我们需要根据使用的场景在不同的编程范式之间进行切换。

编程语言

编程语言分为机器语言、汇编语言和高级语言。我们常见的java、js就是属于高级语言,而C语言由于其代表面向过程的特殊性,归作中级语言。

  • 机器语言 早先计算机刚起步的时候,我们使用打印纸带、线缆等媒介向计算机传达我们的指令。后来人们发明了机器语言。机器语言是用二进制代码表示的计算机能直接运行的语言。
  • 汇编语言 汇编语言是面向机器的低级语言,不能被机器直接识别,需要进行编译。但是在相比于机器语言上,它不是一眼看去杂乱的数字,而是不同的指令去组成的。
  • 高级语言 高级语言是从人类思维角度出发诞生的计算机语言,同样需要进行编译。根据不同的编程思想有许多编程语言。面向过程的C语言,面向过程的C++,函数式的Lisp,还有基于原型和头等函数的多范式语言js。

四种编程范式

根据程序语言特性(是否允许副作用、操作的执行顺序、代码组织、状态管理、语法和词法)划分不同编程范式

  1. 过程式
  • 自顶向下:一个程序由多个模块组成,每个模块中有变量和函数,一个函数可以操作多个变量或函数。
  • 结构化:不再是一味的go to,而是有结构地区编写程序,顺序结构、选择结构、循环结构。
  1. 面向对象
  • 封装:把数据和算法放在一个类中,需要使用时,直接new一个新的对象去使用。
  • 继承:继承一个类后,可以在子类里对父类进行功能的扩充。
  • 多态:不同的结构可以对接口共享,达到函数复用的目的。
  • 依赖注入:去除代码耦合。(这个不理解)
  1. 函数式编程
  • 函数是第一等公民:函数和其他的数据类型一样地位,可以赋值给别人,也可以作为别人的参数。还能是别人的返回值。
  • 纯函数:输入什么就输出什么,内部操作对外部没有影响。
  • 高阶函数:函数柯里化、函数合成、作为参数被传递、作为返回值输出
  1. 响应式编程
  • 异步/离散的函数式编程。

领域特定语言

领域特定语言Domain-specific language(DSL): 应用于特定领域的语言,例如html、sql;与之相对的是通用语言general-purpose language(GPL):广泛应用的语言,例如C、js。创建DSL需要lexer、parser、tools、visitor。