C——“中级语言”过程式语言代表:
1. 可对位,字节,地址直接操作
2. 代码和数据分离倡导结构化编程
3. 功能齐全:数据类型和控制逻辑多样化
4. 可移植能力强
C++——面向对象语言代表:C with Classes、继承、权限控制、虚函数、多态
Lisp——函数式语言代表:与机器无关、列表:代码即数据、闭包
JavaScript——基于原型和头等函数的多范式语言过程式、面向对象、函数式、响应式
编程语言:
1、机器语言。
2、汇编语言。
3、中级语言:面向对象代表:C。
4、高级语言:面向对象代表:C++
函数式代表:lisp
多范式代表:javascript
程序语言特性:是否允许副作用、操作的执行顺序、代码组织、状态管理、语法和词法
面向过程问题:数据与算法关联弱、不利于修改和扩充、不利于代码重用
面向对象编程:封装、继承、多态(不同的结构可以进行接口共享,进而达到函数复用
)、依赖注入
函数式编程:函数是“第一等公民”;纯函数/无副作用;高阶函数/闭包
Pure Function:优势:可缓存、可移植、可测试、可推理、可并行
Functor:可以当做容器的类型,类型支持对容器内元素进行操作
Monad:可以去除嵌套容器类型
Applicative:直接对两个容器直接操作
响应式编程:异步/离散的函数式编程:数据流、操作符(过滤、合并、转化、高阶
)
Observable:观察者模式、迭代器模式、Promise/EventTarget超集
Parser:推导式:表示非终止符到(非终结符或终结符)的关系
终结符:构成句子的实际内容。可以简单理解为语法分析中的token
非终结符:符号或变量的有效集合。他们表示在句子中不同类型的短语或子句
通过这节课,了解了不同编程范式的起源和适用场景;学习了JavaScript在不同的编程范式特别是函数式编程范式的使用;学习创建领域特定语言的相关工具和模式。虽然看课程可以理解,不过还需要进一步的复习练习。