编程范式 | 青训营笔记

35 阅读2分钟

课程介绍

  • 课程背景
    • 前端的主要编程语言为JavaScript
    • JavaScript做为一种融合了多种编程范式的语言,灵活性非常高
    • 前端开发人员需要根据场景不同编程范式间自如切换
    • 进一步需要创造领域特点语言抽象业务问题
  • 课程收益
    • 了解不同编程范式的起源和使用场景
    • 掌握JavaScript在不同的编程范式特别是函数式编程范式的使用
    • 掌握创建领域特定语言的相关工具和模式

编程语言

  • 机器语言: 是用二进制代码表示的计算机能直接识别和执行的一种机器指令的集合
  • 汇编语言: 一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言
  • 高级语言: 更接近人类语言,比较易写、易懂,程序编译器编译后才能执行
    • 面向对象代表——C++
    • 函数式代表——lisp
    • 多范式代表——javascript

编程范式

  • 程序语言特性
    • 是否允许副作用
    • 操作的执行顺序
    • 代码组织
    • 状态管理
    • 语法和词法
  • 常见的编程范式

  • 过程式编程
    • 自定向下
    • 结构化编程
    • 问题:
      • 数据与算法关联小
      • 不利于修改和扩充
      • 不利于代码重用
  • 面向对象编程
    • 封装: 关联数据与算法
    • 继承: 无需重写的情况下进行功能扩充
    • 多态: 不同的结构可以进行接口共享,进而达到函数复用
    • 依赖注入: 去除代码耦合
    • 问题: 面向对象编程的语言的问题在于,他总是附带着所有它需要的隐含环境。你想要一个香蕉,但得到的却是一个大猩猩拿着香蕉,而且还有整个丛林
  • 函数式编程
    • 函数是‘第一等公民’
    • 纯函数/无副作用
    • 高阶函数/闭包
    • 优势:
      • 可缓存
      • 可移植
      • 可测试
      • 可推理
      • 可并行
  • 响应式编程
    • Observable
      • 观察者模式
      • 迭代器模式
      • Promise/EventTarget
    • 操作符: 响应式编程的“compose”
      • 合并
      • 过滤
      • 转化
      • 异常传播
      • 多播
    • Monad: 去除嵌套的Observable

领域特定语言

  • 什么是领域特定语言: 应用于特定领域的语言
    • HTML
    • SQL
  • 语言运行