编程范式丨青训营笔记

58 阅读2分钟

前端的主要编程语言是JavaScript, 融合了多种编程范式的语言,灵活度非常高

编程语言

为什么需要编程语言

image.png 机器语言、汇编语言、高级语言

image.png

典型的高级语言

(1)C/C++

C“中级语言”过程式语言代表

·可对位,字节,地址直接操作

·代码和数据分离倡导结构化编程

·功能齐全

image.png

C++:面向对象语言代表

·C with Classes

·继承

·权限控制

·虚函数

·多态

image.png

(2)Lisp:函数式语言代表

·与机器无关

·列表:代码即数据

·闭包

image.png

(3)JavaScript

基于原型和头等函数的多范式语言

·过程式

·面向对象

·函数式

·响应式*

网站开发、服务器开发、控制脚本语言

image.png

编程范式

什么是编程范式

image.png

常见编程范式

A、命令式:程序员如何操作机器,改变状态

  ·过程式:操作用过程进行分组
  
  (自顶向下、结构化编程)

自顶向下: image.png 结构化编程:

image.png

JS中的面向过程:

image.png

面向过程式编程有什么缺点:

(1)算法与数据关联弱;(2)不利于修改和补充;(3)不利于代码重用 程序差错困难,

  ·对象式:根据操作和对应的状态进行分组
 (封装、继承、多态、依赖注入*)

封装:关联数据和算法

image.png

继承:无需重写的情况下进行功能扩充

image.png

多态:不同的结构可以进行接口共享,进而达到函数复用

image.png

依赖注入*:去除代码耦合

image.png

面向对象编程五大特点:

image.png

B、声明式:声明想要的结果,不指定具体操作

image.png

  函数式编程

ramdajs image.png

(1)一等函数

image.png

(2)纯函数

优势:可缓存、可移植、可测试、可推理、可并行

image.png

(3)Currying

image.png

(4)组合

image.png

(5)Functor

可以当做容器的类型,容器支持对容器内元素进行操作

image.png

(6)Monad 可以去除嵌套容器的容器类型 常用monad:Array.flatMap Promise.then

image.png

(7)Applicative

image.png

  响应式编程

工具库:RxJS image.png

(1)Observable

·观察者模式

·迭代器模式

·Promise/EventTarget超集*

image.png

(2)操作符

image.png

(3)Monad

image.png

编程范式总结

image.png

领域特定语言

概念:

image.png

语言运行

image.png

lexer

SQL Token分类:

·注释

·关键字

·操作符

·空格

·字符串

·变量

image.png

image.png

Parser_语法规则

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

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

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

image.png

Parser_LL

image.png

Parser_LR

image.png

tools

image.png

visitor

image.png

课程总结

image.png