[编程范式 | 青训营笔记]

80 阅读4分钟

这是我参与笔记创作活动的第5天

今天的视频课[编程范式]是讲解开发中需要遵守的编程规则。JavaScript 做为一种融合了多种编程范式的语言,灵活性非常高。前端开发人员需要根据场景在不同编程范式间自如切换。进一步需要创造领域特定语言抽象业务问题。掌握 JavaScript 在不同的编程范式特别是函数式编程范式下的使用。进一步帮助你掌握创建领域特定语言的相关工具和模式。
我把老师今天视频讲解的知识进行了总结与概括,具体内容如下:

1.编程语言

1.为什么需要编程语言

计算机听不懂人说的话,所以需要一门计算机听得懂的语言,于是编程语言就出现了。它的作用就是把我们人说的话翻译成计算机听得懂的话。

2.机器语言

机器语言是机器能直接识别的程序语言或指令代码,无需经过翻译,每一操作码在计算机内部都有相应的电路来完成它,或指不经翻译即可为机器直接理解和接受的程序语言或指令代码。机器语言使用绝对地址和绝对操作码。

3.汇编语言

汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。在汇编语言中,用助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的地址。在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令。特定的汇编语言和特定的机器语言指令集是一一对应的,不同平台之间不可直接移植。

4.高级语言

我们常见的语言c、c++、Java、JavaScript、go都是高级语言。

其中c是过程式语言代表:

  • 可对位,字节,地址直接操作
  • 代码和数据分离倡导结构化编程
  • 功能齐全∶数据类型和控制逻辑多样化
  • 可移植能力强

c++是面向对象语言代表:

  • C with Classes
  • 继承
  • 权限控制
  • 虚函数
  • 多态

Lisp是函数式语言代表:

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

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

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

2.编程范式

1.什么是编程范式 编程范式就是根据程序语言的特性制定的规则。主要包括以下几个部分:

  • 是否允许副作用
  • 操作的执行顺序
  • 代码组织
  • 状态管理
  • 语法和词法

2.常见的编程范式

编程范式我们主要可以分为两种:命令式和声明式。

命令式:面向对象和面向过程

声明式:函数式和响应式

3.面向过程编程

遇到的问题:(1)数据与算法关联弱 (2)不利于修改和扩充 (3)不利于代码重用

4.面向对象编程

特点:(1)封装 (2)继承 (多态) (4)依赖注入

  • 封装-关联数据与算法 QQ截图20230417100643.png

  • 继承-无需重写的情况下进行功能扩充 QQ截图20230417100744.png

  • 多态-不同的结构可以进行接口共享,进而达到函数复用 QQ截图20230417100938.png

  • 依赖注入-去除代码耦合 QQ截图20230417101034.png

面向对象编程的五大原则:

  1. 单一职责原则SRP(Single Responsibility Principle)
  2. 开放封闭原则OCP(Open - Close Principle)
  3. 里式替换原则LSP(the Liskov Substitution Principle LSP)
  4. 依赖倒置原则DIP(the Dependency lnversion Principle DIP)
  5. 接口分离原则ISP(the Interface Segregation Principle lSP)

面向对象编程问题:面向对象编程语言的问题在于,它总是附带着所有它需要的隐含环境。你想要一个香蕉,但得到的却是一个大猩猩拿着香蕉,而且还有整个丛林。

后面还有函数式编程和响应式编程我就不一一讲解了,感兴趣的同学可以去网上多多了解!

3. 领域特定语言

1.什么是领域特定语言

Domain-specific language (DSL):应用于特定领域的语言,比如:HTML、SQL

它的 语言运行方式和传统语言不一样,它的运行方式如下: QQ截图20230417101748.png

2.lexer

如SQL Token分类:注释、关键字、操作符、空格、字符串、变量

3.Paeser语法规则

上下文无关语法规则: QQ截图20230417102104.png

推导式:表示非终结符到(非终结符或终结符)的关系。

终结符:构成句子的实际内容。可以简单理解为词法分析中的token。

非终结符﹔符号或变量的有限集合。它们表示在句子中不同类型的短语或子句。

这节课主要帮助我们了解不同编程范式的起源和适用场景。掌握 JavaScript 在不同的编程范式特别是函数式编程范式下的使用。好了今天的分享到此结束,我们明天见,希望大家指出不足之处以待改正~~