前言
不同语言实现的编程范式不同,也就是描述逻辑的方式不同,这是语言之间最大的区别。
课程收益:
1.了解不同编程范式的起源和适用场景
2.掌握JavaScript 在不同的编程范式特别是函数式编程范式的使用
3.掌握创建领域特定语言的相关工具和模式。
从机器语言开始
硬件是通过电子来控制机械,提供了驱动程序,然后又通过 CPU 来实现各种通用的逻辑,进而控制其他硬件。CPU 提供的指令集所描述的逻辑,就叫做机器语言,这是我们写的程序最底层的样子。
机器语言的指令格式:
这些机器指令叫做指令集,由它所描述的逻辑,就是机器语言。
为了分离逻辑的表达和程序执行的细节,我们实现了高级语言,这样程序员只需要专注逻辑的表达,然后通过编译器/解释器来转换成带有执行细节的机器语言代码。
高级语言
C语言:“中级语言”过程式语言代表
-
可对位,字节,地址直接操作
-
代码和数据分离倡导结构化编程
-
功能齐全:数据类型和控制逻辑多样化
-
可移植能力强
C++:面向对象语言代表
-
C with Classes
-
继承
-
权限控制
-
虚函数
-
多态
Lisp:函数式语言代表
- 与机器无关
- 列表:代码即数据
- 闭包
JavaScript:基于原型和头等函数的多范式语言
- 过程式
- 面向对象
- 函数式
- 响应式
编程范式
编程范式Programming paradigm是指计算机中编程的典范模式或方法。
与成百种编程语言(Programming Language)相比,编程范式(Programming 、范式)要少得多。
共有27种范式。多数范式之间仅相差一个或几个概念。
面向过程编程:
自顶向下,结构化编程
面向对象编程:
-
封装
-
继承
-
多态
-
依赖注入
面向对象编程 五大原则
-
单一职责原则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)
函数式编程:
- 函数是“第一等公民”
- 纯函数/无副作用
- 高阶函数/闭包
响应式编程:
Observable
- 观察者模式
- 迭代器模式
- Promise/EventTarget 超集
操作符
响应式编程的“compose"
- 合并
- 过滤
- 转化
- 异常处理
- 多播
总结
领域特定语言
领域特定语言(Domain-Specific Language,DSL)是一种针对特定领域设计的计算机程序语言。与通用编程语言(如C++、Java和Python)相比,DSL 更加专注于解决某一特定领域的问题,具有更高的表达能力和易用性。
如:SQL,HTML和CSS等
语言运行过程: