这是我参与笔记创作活动的第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)依赖注入
-
封装-关联数据与算法
-
继承-无需重写的情况下进行功能扩充
-
多态-不同的结构可以进行接口共享,进而达到函数复用
-
依赖注入-去除代码耦合
面向对象编程的五大原则:
- 单一职责原则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 lSP)
面向对象编程问题:面向对象编程语言的问题在于,它总是附带着所有它需要的隐含环境。你想要一个香蕉,但得到的却是一个大猩猩拿着香蕉,而且还有整个丛林。
后面还有函数式编程和响应式编程我就不一一讲解了,感兴趣的同学可以去网上多多了解!
3. 领域特定语言
1.什么是领域特定语言
Domain-specific language (DSL):应用于特定领域的语言,比如:HTML、SQL
它的 语言运行方式和传统语言不一样,它的运行方式如下:
2.lexer
如SQL Token分类:注释、关键字、操作符、空格、字符串、变量
3.Paeser语法规则
上下文无关语法规则:
推导式:表示非终结符到(非终结符或终结符)的关系。
终结符:构成句子的实际内容。可以简单理解为词法分析中的token。
非终结符﹔符号或变量的有限集合。它们表示在句子中不同类型的短语或子句。