C语言是中级语言过程式语言代表:可对位、字节、地址直接操作;代码和数据分离倡导结构化编程;功能齐全;数据类型和逻辑多样化;可移植能力强。C++是面向对象的语言代表:拥有继承,权限控制,虚函数和多态的特性。Lisp是函数式语言代表,具有与机器无关,代码即数据,闭包的特征。JavaScript是基于原型和头等函数的多范式语言,具有过程式,面向对象,函数式和响应式的特征。
编程范式:可以根据程序语言特性对其进行分类:是否有副作用;操作的执行顺序;代码组织;状态管理和语法和词法。常见的编程范式分为命令式和声明式。命令式分为面向对象和面向过程;声明式分为函数式和响应式。过程式的编程特点为自顶向下和结构化编程。面向过程的问题:数据与算法关联弱(随着程序语句的增加,每一条语句的关联性降低,并且不方便查找),不利于修改和扩充,不利于代码重用。面向对象编程的特点:封装(对关联数据和算法进行绑定),继承(无需重写即可进行功能扩充),多态(不同的结构可以进行接口共享,进而达到函数复用)和依赖注入(去除代码耦合:耦合特定实现,声明依赖、实现,最后得到注入对象。)面向对象编程的五大原则:单一职责原则。开放封闭原则,里氏替换原则,依赖倒置原则和接口分离原则。面向对象编程的问题是它总是附带着所有他需要的隐含环境。例如:你想要一个香蕉,但最后获得的往往是一个大猩猩拿着一个香蕉,还有整个丛林。函数式编程的优势是可缓存,可移植,可测试,可推理,可并行。响应式编程是异步、离散的函数式编程,主要操作是数据流和操作符;操作符的功能有合并、过滤、转化、异常处理和多播。领域特定语言是应用于特定领域的语言,例如HTML和SQL。SQL Token分类有注释,关键字,操作符,空格。字符串和变量。Parser语法规则有Parser LL:从左到右检查,从左到右构建语法树;Parser LR是从左到右检查,从右到左构建语法树。