atitit 编程语言概念与原理
atitit 编程语言概念
4.4. 逻辑式语言,,不必考虑实现过程而只需考虑定义和结果 9
5.9. 5.13.循环(loop), 5.14. 递归(recursion), 5.15.遍历(traversal), 5.16.迭代(iterate). 12
6.6. 静态提前编译(Ahead Of Time,AOT编译) 13
9.4. 对象持久性(object persistence 16
10.1. String(字符串), Integer(整型), Float(浮点型), Boolean(布尔型), Array(数组), Object(对象), NULL(空值)。 17
13.5. 注解反射等元数据api Anno reflect 19
15. 常见类库api=---------------- 22
40.1. 40.1.ecma标准 40.2.iso标准 40.3.apache fund 29
40.2. 40.4.jcp jsr 40.5.gbk 40.6.rfc 40.7.w3c 29
40.4. BCP,即Best Current Practice 29
41. 语言高级机制------------------ 29
42.2. 3.1. Single Responsibility Principle (SRP)–职责单一原则 3 31
42.3. 3.2. Open/Closed Principle (OCP)–开闭原则 3 31
42.4. 3.3. Liskov substitution principle (LSP)–里氏代换原则 3 31
42.5. 3.4. Interface Segregation Principle (ISP)–接口隔离原则 3 31
42.6. 3.5. Dependency Inversion Principle(DIP)–依赖倒置原则 3 32
42.7. 4. Dky法则 dry kiss yagni 3 32
42.11. 5.3. :迪米特法则最少知识原则”(Principle of Least Knowledge) 4 32
42.12. 5.4. 迪米特法则(Law?ofDemeter,?LOD) 4 33
42.13. 5.5. Don’t Repeat Yourself(DRY) 4 33
42.14. 5.6. Keep It Simple, Stupid (KISS) 4 33
42.15. 5.7. Program to an interface, not an implementation4 33
42.16. 5.8. You Ain’t Gonna Need It(YAGNI) 4 33
42.17. 5.9. 最小惊讶原则 遵守标准约定注释说什么代码就做什么 5 33
42.18. 5.10. 最小化耦合原则与最大内聚 5 34
42.22. 5.14. Common Closure Principle(CCP)–共同封闭原则 5 34
42.23. 5.15. Common Reuse Principle (CRP)–共同重用原则 5 34
42.24. 5.16. Hollywood Principle–好莱坞原则 5 35
42.25. 5.17. High Cohesion & Low/Loose coupling & –高内聚,低耦合6 35
42.26. 5.18. Convention over Configuration(CoC)–惯例优于配置原则 惯例优先原则6 35
42.27. 5.19. Acyclic Dependencies Principle (ADP)–无环依赖原则 6 35
42.28. 5.20. Postel's law伯斯塔尔法则 后向兼容性设计 6 36
42.29. 5.21. 软件,就像所有技术一样,具有天然的政治性。代码必然会反映作者的选择、偏见和期望。 6 36
42.30. 5.22. 首先为人类设计,其次为机器设计。 6 36
特点对比
| 特点 | 自然语言 | 程序语言 |
| 长度对比 | 冗长 | 精简 高度抽象化 |
| 精确度 | 不精确 | 精确 |
| 界限 | 不明确 | 界限是明确 |
| 语句数量 | 有限的 | 无限 |
| 宽松 | 严格的语法(Syntax)规则 | |
|
|
|
|
|
|
|
|
形式语言有严格的语法(Syntax)规则,例如,3+3=6是一个语法正确的数学等式,而3=+6$则不是,H2O是一个正确的分子式,而2Zz则不是。语法规则是由关于符号(Token)和结构(Structure)的规则所组成的。Token的概念相当于自然语言中的单词和标点、数学式中的数和运算符、化学分子式中的元素名和数字。关于Token的规则称为词法(Lexical)规则,而关于语句结构的规则称为语法(Grammar)规则。 [2]
Js python sql xml html css java 正则表达式 工作流 注解 shell json
1g>>2g>>3g(java c#) >>3.5g( 脚本类js python 等)>>>4g( sql h5 正则表达式等)>>5g( 自然语言或类似人工智能语言
跨cpu架构,跨os架构,免编译》dsl
更加简单
形式语言的概念到了诺姆·乔姆斯基,就形成了一个新的理论(乔姆斯基谱系)。这个谱系把形式语言分成四种:
文法 语言 自动机 产生式规则
0-型 递归可枚举语言 图灵机 无限制
1-型 上下文相关语言 线性有界非确定图灵机 αAβ -> αγβ
2-型 上下文无关语言 非确定下推自动机 A -> γ
3-型 正规语言 有限状态自动机 A -> aB A -> a
这四种语言中,从上到下的语言是变得越来越容易用公式表达,但是表达能力也越来越弱。到了最后一种语言,已经变成最普通的正规语言了。
计算机编程语言是属于2-型,即上下文无关语言(context-free grammar)。只有这种语言,才可以用我们现在研究出来的编译器进行编译,也只有用这种语言写出来的代码,才可以经过编译器的解释之后被电脑理解。
同样都是java ,android和pc版本的不同
同样都是js语言 ,浏览器端和后端node运行环境的不同
缺点:细节化,对于层次结构表达不明显
注解 meta
-
- 标签式语言(h5 xml
- 通用语言与dsl
- 全功能语言与弱功能表达式语言
3.编程语言的主要的种类 逻辑式语言..函数式语言...命令式语言
在FAQ3里说过,世界上有C和LISP两种编程语言,你现在学了C,以后学了C++、Java、.NET
等等,也仍然只认识了半个世界。LISP和 Haskell构成了另外半个世
4.命令式语言主要组成(运算符与控制结构,if,foreach)
5.函数式语言(全部是函数)
6.逻辑式语言,,不必考虑实现过程而只需考虑定义和结果
例如著名的 prolog。逻辑式语言一般依据成熟的逻辑体系来设计,比如 first-order logic(用于 prolog),因为这样有几点好处:
1)可以进行严密的逻辑推理;
2)可以方便有效地定义 knowledge base,这在专家系统中很重要;
3)开发者不必考虑实现过程而只需考虑定义和结果。这符合专家系统的设计理念。
作者:: 老哇的爪子 Attilax 艾龙, EMAIL:1466519819@qq.com
转载请注明来源: http://blog.csdn.net/attilax
6.1.控制结构将消失,select ,foreach 等...表格将取代select结构
只需考虑定义和结果,表格将取代select结构...
7.第五代语言
第五代语言就是自然语言又被称为知识库语言或人工智能语言,人工智能语言主要有LISP、Prolog
人们可能会问,用人工智能语言解决问题与传统的方法有什么区别呢?
传统方法通常把问题的全部知识以各种的模型表达在固定程序中,问题的求解完全在程序制导下按着预先安排好的步骤一步一步(逐条)执行。解决问题的思路与冯.诺依曼式计算机结构相吻合。当前大型数据库法、数学模型法、统计方法等都是严格结构化的方法。
对于人工智能技术要解决的问题,往往无法把全部知识都体现在固定的程序中。通常需要建立一个知识库(包含事实和推理规则),程序根据 环境和所给的输入信息以及所要解决的问题来决定自己的行动,所以它是在环境模式的制导下的推理过程。这种方法有极大的灵活性、对话能力、有自我解释能力和 学习能力。这种方法对解决一些条件和目标不大明确或不完备,(即不能很好地形式化,不好描述)的非结构化问题比传统方法好,它通常采用启发式、试探法策略 来解决问题。
其实,每种编程语言的设计都有
独到之处,体现了每种语言的精髓,在融汇百家之后积累下来的正是方法论。
标识符由字母、数字、下划线组成
|
|
|
|
|
|
| 流程图(Flow Chart |
| 多分支结构 |
| Lambda 表达式 |
| 方法引用 |
| 生命周期 |
| Cohesion |
| 耦合Coupling |
| 过程 |
|
|
|
|
|
|
|
|
|
| 环境变量 |
| s-exp |
|
弱类型优点是简单快捷。。Map和自定义bean类型。。对比 |
把Java源码文件(.java)编译成Class文件(.class)的过程;
-
- JIT 后端编译/即时(JIT)编译
通过Java虚拟机(JVM)内置的即时编译器(Just In Time Compiler,JIT编译器);在运行时把Class文件字节码编译成本地机器码的过程;
"热点代码"(Hot Spot Code)编译成与本地平台相关的机器码,并进行各种层次的优化;
程序运行前,直接把Java源码文件(.java)编译成本地机器码的过程;
-
- 增量编译 vs 全量编译
- 编译模式 忽略模式 恢复模式 vs停止模式
solid原则
| 词法分析 |
| fsm状态机 |
| 正则表达式 |
| 词性标注 |
| 语法分析 |
| ast |
| 语义分析 |
| 内部DSL实现模式 |
| 外部DSL |
| 生成AST |
| BNF |
| 正则表达式表的词法分析器 |
| 递归下降法语法解析器 |
| 解释器 |
| 表达式生成器 |
| 嵌套函数 |
| 方法级联 |
| 状态机fsm |
| is-a has-a |
| mix in |
| oo三大特性 |
| solid原则 |
| 抽象方法 |
| 抽象类和 |
| 单根继承 |
| 单例 |
| 动态绑定(dynamic binding |
| 对象实现 |
| 多继承 |
| 多态 |
| 反射api加载 |
| 方法重载 |
| 访问方法(accessor method)和 |
| 封装 |
| 覆盖(Overriding |
| 构造方法 |
| 构造函数 |
| 环境变量 |
| 基于原型 |
| 继承 |
| 接口用interface |
| 类加载 |
| 菱形继承 |
| 魔术方法 |
| 魔术属性 |
| 设置方法(mutator method) |
| 实例 |
| 属性读写 |
| 外部文件加载 |
| 析勾方法 |
| 消息 |
| 消息传递 |
| 延迟绑定方法 |
| 自动语句加载 |
| 字节数组加载 |
- 内部数据类型与结构章节
- String(字符串), Integer(整型), Float(浮点型), Boolean(布尔型), Array(数组), Object(对象), NULL(空值)。
- Map 字典(Dictionary)
- List Set 自定义对象
- Sql语言常用的表结构,行,字段
俩者的对应与转换,一般情况下,一行对应一个map,字段对应map。key。。多行对应List
| lambda |
| stream |
| fluce接口 |
| 连锁接口 |
| pipe |
| map & reduce |
| pipeline |
| 高阶函数 |
| 闭包 |
| 表达式特化 |
| 表达式合成 |
| 外循环 |
| 内循环 |
| 惰性求值 |
| 尾递归 |
| yield |
| geneor |
| 一等函数 |
| 惰性计算(lazy evaluation |
| 递归 |
| 只用"表达式 |
| 尾递归,伪递归 |
| first-class types |
| generic types |
| pattern match |
| Guard |
| curry |
| immutable 、mutable |
| 引用透明(Referential transparency)的和没有副作用(No Side Effect)。 |
| continuation |
章节
- 核心类库 语言标准库
Json 语言及的支持,目前只有js实现语言级别的支持支持,java好像也有传言要实现
Xml
Sql linq
Err exception
Mem
Sign
Mizian,
| Volatile 内存屏障 |
| cas |
| atomic |
| 同步关键字 |
| ReentrantLock |
| 自旋锁 |
| 信号量 |
| 互斥锁Mutex |
| 线程死锁 |
| 线程死锁kill |
| 异步 |
| 线程池 |
| task模型 |
| futuretask模式 |
| 毒丸 |
| threadlocalhost |
| 方法连 |
| jquery |
| guava |
| option |
| 面向接口编程 |
| 工厂方法优于构造函数 |
| polyfill |
| dsl命名法 |
| 参考知名api |
| 归一化 |
| 命名参数 |
| 属性风格API |
| 类型自动转换 |
| 通用属性方法attr( like jq) |
| 事件(events) |
| 回调(callbacks) |
| api扩展性 |
| dsl化 |
| what how分离 |
| 函数式接口 |
| 分代 |
| 基于时间 |
| 引用计数 |
| amr |
| watchdog |
| log调试 |
| ide调试 |
| 监测工具 |
| sdk调试支持api |
章节
| 异常捕获策略 |
| 处理策略 |
| 抛出策略 |
| 跨语言异常 |
| 异常转换 |
| 异常序列化 |
| Atitit 异常and 流程控制 |
| 返回码模式 |
| 终止模式 vs 恢复模式 |
| 异常机制的设计原理 |
| 类库实现异常catch |
| Check ex vs unchk ex |
| 业务异常 |
| 异常分类 |
| 重新抛出异常和异常链 |
| 全局异常捕获 |
| 分布式系统的异常处理 |
| 异常传输 |
章节
| 文件的io |
| 网络的io |
| rest接口 |
| http |
| socket |
| console重写 |
| 异常打印string |
| 字符流 |
| 字节流 |
| io体系 |
| 图片的io |
| 二进制io |
| 文本io |
| 字符编码 |
| request |
| response |
| stream |
章节
章节
| gui原理 |
| 界面引擎 |
| 游戏引擎 |
| 布局引擎 |
| 控件系统 |
| 复合控件 |
| pagging翻页控件 |
| css框架 |
| 前端ui框架 |
| css3 |
| 动画 |
| canvas |
| 音视频 |
章节
章节
章节
| rsa |
| 证书 |
| md5 |
| aes |
| 3des |
| 注入 |
| crsf |
| xss |
章节
章节
章节
章节
| gbk |
| utf8 |
| unicode |
| 大头端小头 |
| ansi |
| ascii |
| utf bom |
| bigend |
| littleend |
| cjk |
| charset |
| base64 |
| mime |
章节
| 核心core标准化 |
| 文本处理 |
| 网络处理 |
| 图像处理 |
| 数据库处理 |
| 进程处理 |
| 鼠标键盘管理 |
| 时间处理 |
| 数字处理 |
| 容器 |
章节
章节
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 事件目标(event target |
| 事件传播(event propagation |
| event handler |
| 事件分发器 |
| 事件委托 |
| 事件代理 |
| 事件循环 |
| 事件驱动 vs 轮询机制 |
| 事件队列 |
| vs消息机制 |
| 事件注册 |
| 事件调用 |
| 事件对象模型 |
| 事件冒泡 |
| 事件捕获 |
| 事件底层 中断原理 |
| map |
| list |
| 元祖 |
| turl |
| meta、 |
| dic |
| hashtable |
| hash |
| set |
| array |
| graph |
| linklist |
| tree |
| collect、 |
| queuo |
| stack |
| heap |
| sort |
| 查找搜索 |
| 遍历 |
| fifo |
| datatable |
| 字符串函数 |
| 数学函数库 |
| 日期运算 |
| 聚合函数 |
| 字符函数 |
| 系统函数 |
| 分析函数(高级统计函数 |
| 条件判断函数 |
| 加密函数 |
| 格式化函数 |
参考资料
atititprgrm tech tree编程语言知识点体系 v7 qb20.xlsx
Atitit 数据库 标准库 sdk 函数库 编程语言 mysql oracle attilax总结
Atitit.语言核心类库 与 标准库 的api 区分
Atitit 词法分析,语法分析,编译原理有什么用?
自然语言处理——3.1 形式语言 - 简书.html

浙公网安备 33010602011771号