atitit 编程语言课程 v1 t55.docx
4.4. 逻辑式语言,,不必考虑实现过程而只需考虑定义和结果 8
5.9. 5.13.循环(loop), 5.14. 递归(recursion), 5.15.遍历(traversal), 5.16.迭代(iterate). 11
6.6. 静态提前编译(Ahead Of Time,AOT编译) 12
9.4. 对象持久性(object persistence 15
13.5. 注解反射等元数据api Anno reflect 18
15. 常见类库api=---------------- 21
40.1. 40.1.ecma标准 40.2.iso标准 40.3.apache fund 28
40.2. 40.4.jcp jsr 40.5.gbk 40.6.rfc 40.7.w3c 28
40.4. BCP,即Best Current Practice 28
41. 语言高级机制------------------ 28
42.2. 3.1. Single Responsibility Principle (SRP)–职责单一原则 3 30
42.3. 3.2. Open/Closed Principle (OCP)–开闭原则 3 30
42.4. 3.3. Liskov substitution principle (LSP)–里氏代换原则 3 30
42.5. 3.4. Interface Segregation Principle (ISP)–接口隔离原则 3 30
42.6. 3.5. Dependency Inversion Principle(DIP)–依赖倒置原则 3 31
42.7. 4. Dky法则 dry kiss yagni 3 31
42.11. 5.3. :迪米特法则最少知识原则”(Principle of Least Knowledge) 4 31
42.12. 5.4. 迪米特法则(Law?ofDemeter,?LOD) 4 32
42.13. 5.5. Don’t Repeat Yourself(DRY) 4 32
42.14. 5.6. Keep It Simple, Stupid (KISS) 4 32
42.15. 5.7. Program to an interface, not an implementation4 32
42.16. 5.8. You Ain’t Gonna Need It(YAGNI) 4 32
42.17. 5.9. 最小惊讶原则 遵守标准约定注释说什么代码就做什么 5 32
42.18. 5.10. 最小化耦合原则与最大内聚 5 33
42.22. 5.14. Common Closure Principle(CCP)–共同封闭原则 5 33
42.23. 5.15. Common Reuse Principle (CRP)–共同重用原则 5 33
42.24. 5.16. Hollywood Principle–好莱坞原则 5 34
42.25. 5.17. High Cohesion & Low/Loose coupling & –高内聚,低耦合6 34
42.26. 5.18. Convention over Configuration(CoC)–惯例优于配置原则 惯例优先原则6 34
42.27. 5.19. Acyclic Dependencies Principle (ADP)–无环依赖原则 6 34
42.28. 5.20. Postel's law伯斯塔尔法则 后向兼容性设计 6 35
42.29. 5.21. 软件,就像所有技术一样,具有天然的政治性。代码必然会反映作者的选择、偏见和期望。 6 35
42.30. 5.22. 首先为人类设计,其次为机器设计。 6 35
特点对比
特点 | 自然语言 | 程序语言 |
长度对比 | 冗长 | 精简 高度抽象化 |
精确度 | 不精确 | 精确 |
界限 | 不明确 | 界限是明确 |
语句数量 | 有限的 | 无限 |
宽松 | 严格的语法(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( 自然语言或类似人工智能语言
形式语言的概念到了诺姆·乔姆斯基,就形成了一个新的理论(乔姆斯基谱系)。这个谱系把形式语言分成四种:
文法 语言 自动机 产生式规则
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) |
实例 |
属性读写 |
外部文件加载 |
析勾方法 |
消息 |
消息传递 |
延迟绑定方法 |
自动语句加载 |
字节数组加载 |