为什么需要编程语言
因为需要和机器对话,从而产生了机器语言 汇编语言 中级语言 高级语言
语言代表
中级语言代表 c语言
高级语言代表
面向对象代表 c++
函数式代表:lisp
多范式代表:JavaScript
编程范式有两种:
命令式: 面向过程和面向对象
声明式:函数式和响应式
面向过程的问题:数据与算法关联弱
不利于修改和扩充
不利于代码重用
面向对象编程有五大原则:
单一职责原则
开放封闭原则
里式替换原则
依赖倒置原则
接口分离原则
面向对象的缺点:
需要的需求达到了但是却很臃肿
函数式编程的优点:
可以缓存 可以移植 可以测试 可以推理 可以并行
让代码写起来的程序不臃肿
编程范式分为:
过程式:自顶向下 结构化编程 问题
面向对象: 封装 继承 多态 原则 问题
函数式编程:一等函数 纯函数 curry/compose/functor/monard/applicative
响应式编程:
操作符 monard observable
Domain-specificlanguage(DSL):应用于特定领域的语言 General-purpose language ·HTML
·C/C++
·SQL
·Javascript
lexer SQLToken分类
·注释
·关键字
·操作符
·空格
·字符串
.变量
04Parser_语法规则 上下文无关语法规则
推导式:表示非终结符到(非终结符或终结符)的关系
终结符:构成句子的实际内容。可以简单理解为词法分析中的token。
非终结符:符号或变量的有限集合。它们表示在句子中不同类型的短语或子句
总结:
编程语言为
机器语言 汇编语言 中级语言 高级语言
编程范式分为:
过程式:自顶向下 结构化编程 问题
面向对象: 封装 继承 多态 原则 问题
函数式编程:一等函数 纯函数 curry/compose/functor/monard/applicative
响应式编程:
操作符 monard observable
领域特定语言:lexer parser tools visitor