编程范式(day4)

68 阅读3分钟

编程范式(Programming paradigm)

课程背景

  1. 前端的主要编程语言为JavaScript;
  2. JavaScript作为一种融合了多重编程范式的语言,灵活性非常高;
  3. 前端开发人员需要根据场景在不同编程范式之间自如切换;
  4. 进一步需要创造领域特定语言抽象业务问题。

编程语言

C/C++

  1. C:“中级语言”过程式语言代表
  • 可对位,字节,地址直接操作
  • 代码和数据分离倡导结构化编程
  • 功能齐全:数据类型和控制逻辑多样化
  • 可移植能力强

eg. C语言可以通过指针操作地址

  1. C++:面向对象语言代表(在C语言的基础上增加了
  • C with Classes
  • 继承
  • 权限控制
  • 虚函数
  • 多态(对同一个基类下的所有子类进行相同的操作)
  1. Lisp:函数式语言代表
  • 与机器无关
  • 列表:代码即数据
  • 闭包
  1. JavaScript(1995年出现):基于原型和头等函数的多范式语言

image.png

  • 过程式
  • 面向对象
  • 函数式
  • 响应式等

image.png

编程范式

image.png

过程式编程

算法+数据结构=程序

特点:自顶向下结构化编程

image.png

结构化编程

image.png

js中的面向对象

通过export导出模块中的一些变量、函数等

image.png

image.png

面向过程式编程有什么缺点?

  • 函数与操作对象之间没有很强的关联性,很难看出调用关系
  • 没有封装的概念,不利于后期修改和扩充
  • 不利于代码重用

面向对象编程

  • 封装
  • 继承
  • 多态
  • 依赖注入

封装

将客观的事物封装成具体的类,类可以把自己的数据和方法只让可信的对象进行操作,对于不可信的对象进行隐藏。

继承

让某一个类型的对象获得另一个类型对象的属性和方法。支持按级分类,可以使用现有类的所有功能,并且在无需编写原有类的情况下进行功能扩充。

image.png

多态

实现不同的结构可以进行接口共享,进而达到函数复用。

依赖注入

能够去除代码耦合。 理解依赖注入(DI – Dependency Injection) - 知乎 (zhihu.com)

面向对象编程五大原则

  • 单一职责原则:一个类的功能要单一
  • 开放封闭原则:一个模块在扩展性方面应该是开放的,在更改性方面应该是封闭的
  • 里氏替换原则:子类应该可以替换父类,并且出现在任何父类应该出现的地方
  • 依赖倒置原则:具体依赖抽象,上层依赖下层
  • 接口分离原则:任何时候应该通过接口区分,而不要依赖具体内容的实现

面向对象的缺点

数据的修改历史完全被隐藏了,是通过一系列补丁来拼凑程序

函数式编程

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

响应式编程

image.png

image.png

image.png

image.png

领域特定语言

image.png

语言运行

image.png

lexer

image.png

image.png

Parser语法规则

image.png

image.png

image.png

image.png

image.png