编程语言
高级语言、汇编语言和机器语言
“中级语言”
C(“中级语言”,过程式语言代表)
可对位、字节,地址直接操作;代码和数据分离倡导结构化编程;功能齐全:数据类型和控制逻辑多样化;可移植能力强。
面向对面语言代表
C with Classes;继承;权限控制;虚函数;多态
函数式语言代表
Lisp
与机器无关;列表:代码即数据;闭包
基于原型和头等函数的多范式语言、
Javascript
过程式;面向对象;函数式;响应式
程序语言特性
是否允许副作用;操作的执行顺序;代码组织;状态管理;语法和词法
编程范式
命令式:面向对象;面向过程
声明式:函数式;响应式
过程式编程
自顶向下;结构化编程
面向过程问题
数据与算法关联弱;不利于修改和扩充;不利于代码重用
面向对象编程
封装;继承;多态;依赖注入
面向对象编程五大原则
单一职责原则SRP(Single Responsibility Principle)
开放封闭原则OCP(Open - Close Principle)
里式替换原则LSP(the Liskov Substitution Principle LSP)
依赖倒置原则DIP(the Dependency Inversion Principle DIP)
接口分离原则ISP(the Interface Segregation Principle ISP)
函数式编程
函数是“第一等公民”;纯函数(无副作用);高阶函数/闭包
函数式编程Functor
可以当作容器的类型,类型支持对容器内元素进行操作
函数式编程Monad
可以去除嵌套容器的容器类型
函数式编程Applicative
直接对两个容器直接操作
函数式编程优势
可缓存;可移植;可测试;可推理;可并行
响应式编程
异步/离散的函数式编程
数据流;
操作符:过滤;合并;转化;高阶
响应式编程Observable
观察者模式;迭代器模式;Promise/EventTarget 超集
领域特定语言
Domain-specific language(DSL):应用于特定领域的语言