编程范式|青训营笔记

86 阅读2分钟

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在不同的编程范式特别是函数式编程范式的使用;学习创建领域特定语言的相关工具和模式。虽然看课程可以理解,不过还需要进一步的复习练习。