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
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
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) |
实例 |
属性读写 |
外部文件加载 |
析勾方法 |
消息 |
消息传递 |
延迟绑定方法 |
自动语句加载 |
字节数组加载 |