编程范式 | 青训营笔记

136 阅读3分钟
theme: juejin --- # 编程范式

前言

不同语言实现的编程范式不同,也就是描述逻辑的方式不同,这是语言之间最大的区别。

课程收益: 1.了解不同编程范式的起源和适用场景 2.掌握JavaScript 在不同的编程范式特别是函数式编程范式的使用 3.掌握创建领域特定语言的相关工具和模式。

从机器语言开始

​ 硬件是通过电子来控制机械,提供了驱动程序,然后又通过 CPU 来实现各种通用的逻辑,进而控制其他硬件。CPU 提供的指令集所描述的逻辑,就叫做机器语言,这是我们写的程序最底层的样子。

机器语言的指令格式:

image-1.png

这些机器指令叫做指令集,由它所描述的逻辑,就是机器语言。

​ 为了分离逻辑的表达和程序执行的细节,我们实现了高级语言,这样程序员只需要专注逻辑的表达,然后通过编译器/解释器来转换成带有执行细节的机器语言代码。

高级语言

​ C语言:“中级语言”过程式语言代表

  • 可对位,字节,地址直接操作

  • 代码和数据分离倡导结构化编程

  • 功能齐全:数据类型和控制逻辑多样化

  • 可移植能力强

​ C++:面向对象语言代表

  • C with Classes

  • 继承

  • 权限控制

  • 虚函数

  • 多态

​ Lisp:函数式语言代表

  • 与机器无关
  • 列表:代码即数据
  • 闭包

​ JavaScript:基于原型和头等函数的多范式语言

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

image-2.png

编程范式

编程范式Programming paradigm是指计算机中编程的典范模式或方法。

​ 与成百种编程语言(Programming Language)相比,编程范式(Programming 、范式)要少得多。

image-3.png

​ 共有27种范式。多数范式之间仅相差一个或几个概念。

image-4.png

面向过程编程:

自顶向下,结构化编程

image-5.png

面向对象编程:

  • 封装

  • 继承

  • 多态

  • 依赖注入

面向对象编程 五大原则

  • 单一职责原则SRP(Single Responsibility Principle)

  • 开放封闭原则ocP(Open - Close Principle)

  • 里式替换原则LSP(the Liskov Substitution Principle LSP)

  • 依赖倒置原则DIP(the Dependency lnversion Principle DIP)

  • 接口分离原则ISP(the Interface Segregation Principle ISP)

函数式编程:

  • 函数是“第一等公民”
  • 纯函数/无副作用
  • 高阶函数/闭包

image-6.png

响应式编程:

Observable

image-7.png

  • 观察者模式
  • 迭代器模式
  • Promise/EventTarget 超集

操作符

响应式编程的“compose"

  • 合并
  • 过滤
  • 转化
  • 异常处理
  • 多播

image-8.png

总结

image-9.png

领域特定语言

领域特定语言(Domain-Specific Language,DSL)是一种针对特定领域设计的计算机程序语言。与通用编程语言(如C++、Java和Python)相比,DSL 更加专注于解决某一特定领域的问题,具有更高的表达能力和易用性。

​ 如:SQL,HTML和CSS等

语言运行过程:

image-10.png

课程总结:

image-11.png