atitit 编程语言课程 v1 t55.docx 1. 编程语言概念(what 5 1.1. 自然语言与编程语言的关系 5 1.2. 开发中常用的编程语言 5 1.3. 编程语言代际 5 1.4


atitit 编程语言课程 v1 t55.docx

 

 

1. 编程语言概念(what 5

1.1. 自然语言与编程语言的关系 5

1.2. 开发中常用的编程语言 5

1.3. 编程语言代际 5

1.4. 编程语言能力模型金字塔 6

2. 学习编程语言的用途 7

2.1. 词法分析,语法分析 语义分析 7

2.2. 数据挖掘提取抽取 7

2.3. 大力提升可读 提升开法效率 7

2.4. other 7

3. 怎么(how)去了解一门编程语言 7

3.1. 语法角度 7

3.2. 运行时环境vm runtime角度 7

3.3. 核心类库标准库角度 7

3.4. 外部库 7

4. 编程语言种类 7

4.1. 命令式语言(特点是一条条语句 7

4.2. 函数式语言.(sql 8

4.3. 声明式语言(h5 xml css等 8

4.4. 逻辑式语言,,不必考虑实现过程而只需考虑定义和结果 8

4.5. 标签式语言(h5 xml 8

4.6. 通用语言与dsl 8

4.7. 全功能语言与弱功能表达式语言 8

5. 编程语言常见内部构成与概念 9

5.1. 基础语法 标识符与保留字 9

5.2. 注释 与 运算符 9

5.3. 变量6属性 三大流程 10

5.4. 异常控制流程 10

5.5. 表达式(中缀前缀表达式 10

5.6. 运算符 10

5.7. 数据类型 10

5.8. 函数 and 返回值 10

5.9. 5.13.循环(loop), 5.14. 递归(recursion), 5.15.遍历(traversal), 5.16.迭代(iterate). 11

5.10. 泛型 11

5.11. 类型系统(强类型  弱类型 11

6. 编译 11

6.1. 词法分析 语法分析 语义分析 11

6.2. Ast语法树 11

6.3. 预编译头机制  import模式 11

6.4. 前端编译 11

6.5. JIT 后端编译/即时(JIT)编译 12

6.6. 静态提前编译(Ahead Of Time,AOT编译) 12

6.7. 增量编译 vs 全量编译 13

6.8. 编译模式 忽略模式 恢复模式 vs停止模式 13

6.9. 编译api 14

6.10. 动态执行java文件源码 14

7. 一些原则理论 14

8. 语言实现 14

9. 类与对象实现 章节 15

9.1. class模板 15

9.2. dock type 15

9.3. 动态对象 15

9.4. 对象持久性(object persistence 15

10. 内部数据结构章节 16

10.1. Map  字典(Dictionary) 16

10.2. List   Set 自定义对象 16

10.3. Sql语言常用的表结构,行,字段 16

11. 函数式 章节 16

12. dsl 章节 17

13. 核心类库 语言标准库 18

13.1. 数学函数  字符串 时间日期 18

13.2. Io(显示器 文件等 18

13.3. 基本数据结构Collect集合等 18

13.4. 表达式支持 正则表达式 18

13.5. 注解反射等元数据api  Anno reflect 18

14. 运行环境高级功能 18

14.1. 并发与锁机制 章节 18

14.2. api设计 章节 19

14.3. gc资源释放 章节 19

14.4. 调试技术 章节 20

14.5. 反射 章节 20

14.6. 动态类加载 20

14.7. 异常处理 章节 20

14.8. 事件机制 章节 21

15. 常见类库api=—————- 21

15.1. 标准库 章节 21

15.2. io输入输出 章节 21

15.3. 重构 章节 章节 22

15.4. 开发规范 章节 22

15.5. 序列化 章节 22

16. ioc 章节 22

17. 性能提升 章节 22

18. gui 章节 22

19. other 章节 23

20. mvc 章节 23

21. ide 章节 23

22. exop互操作接口 章节 23

22.1. 源码组织管理 章节 23

23. 常用协议 章节 23

24. 常用web服务器 章节 23

25. 代码管理与同步 章节 23

26. 安全与加密 章节 23

27. 架构知识 章节 24

28. 文字处理 章节 25

28.1. 汉字处理 25

28.2. 正则表达式 25

28.3. auth 25

28.4. 全文检索 25

28.5. tie树 25

28.6. 规则查询 25

28.7. 参见图像处理知识图谱 25

29. 图像处理 章节 25

30. uml 章节 26

31. web体系 章节 26

32. 简单的图像处理 章节 26

33. vm 章节 26

34. 字符编码 章节 26

35. bug管理 章节 26

36. api标准化 章节 27

37. 常用算法 章节 27

38. 软件工程 章节 27

39. 设计模式 章节 27

40. 标准化 章节 27

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.3. 40.8.ansi 40.9.omg 28

40.4. BCP,即Best Current Practice 28

41. 语言高级机制—————— 28

41.1. event对象  事件机制 28

41.2. xml序列化 29

41.3. php hash序列化 29

41.4. json序列化 29

41.5. 二进制序列化 29

41.6. 循环引用解决 29

41.7. base64 29

41.8. bin2txt 29

42. 编程原则准则 章节 30

42.1. S.O.L.I.D原则(oo fp) 3 30

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.8. 5. Other原则 4 31

42.9. 5.1. 可读性优先原则 4 31

42.10. 5.2. 拥抱变化原则  扩展性 4 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.19. 5.11. 隐藏实现细节原则 5 33

42.20. 5.12. 避免过早优化原则 5 33

42.21. 5.13. 得墨忒耳定律 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

42.31. 5.23. 抽象原则 6 35

42.32. 6. 《编程法则》二十一条 6 35

43. datastruts数据结构 章节 35

 

 

 

 

 

  1. 编程语言概念(what
    1. 自然语言与编程语言的关系

 

特点对比

特点

自然语言

程序语言

长度对比

冗长

精简 高度抽象化

精确度

不精确

精确

界限

不明确

界限是明确

语句数量

有限的

无限

语法

宽松

严格的语法(Syntax)规则

 

 

 

 

 

 

 

形式语言有严格的语法(Syntax)规则,例如,3+3=6是一个语法正确的数学等式,而3=+6$则不是,H2O是一个正确的分子式,而2Zz则不是。语法规则是由关于符号(Token)和结构(Structure)的规则所组成的。Token的概念相当于自然语言中的单词和标点、数学式中的数和运算符、化学分子式中的元素名和数字。关于Token的规则称为词法(Lexical)规则,而关于语句结构的规则称为语法(Grammar)规则。 [2] 

    1. 开发中常用的编程语言

Js python sql xml html css java 正则表达式 工作流 注解 shell json

 

    1. 编程语言代际

1g>>2g>>3g(java c#) >>3.5g( 脚本类js python 等)>>>4g( sql h5 正则表达式等)>>5g( 自然语言或类似人工智能语言

 

 

    1. 编程语言能力模型金字塔

 

形式语言的概念到了诺姆·乔姆斯基,就形成了一个新的理论(乔姆斯基谱系)。这个谱系把形式语言分成四种:
文法 语言 自动机 产生式规则
0-型 递归可枚举语言 图灵机 无限制
1-型 上下文相关语言 线性有界非确定图灵机 αAβ -> αγβ
2-型 上下文无关语言 非确定下推自动机 A -> γ
3-型 正规语言 有限状态自动机 A -> aB A -> a

这四种语言中,从上到下的语言是变得越来越容易用公式表达,但是表达能力也越来越弱。到了最后一种语言,已经变成最普通的正规语言了。

计算机编程语言是属于2-型,即上下文无关语言(context-free grammar)。只有这种语言,才可以用我们现在研究出来的编译器进行编译,也只有用这种语言写出来的代码,才可以经过编译器的解释之后被电脑理解。

 

  1. 学习编程语言的用途
    1. 词法分析,语法分析 语义分析
    2. 数据挖掘提取抽取
    3. 大力提升可读 提升开法效率
    4. other
  2. 怎么(how)去了解一门编程语言
    1. 语法角度
    2. 运行时环境vm runtime角度

同样都是java ,android和pc版本的不同

同样都是js语言 ,浏览器端和后端node运行环境的不同

    1. 核心类库标准库角度
    2. 外部库
  1. 编程语言种类 
    1. 命令式语言(特点是一条条语句

缺点:细节化,对于层次结构表达不明显

    1. 函数式语言.(sql 
    2. 声明式语言(h5 xml css等
    3. 逻辑式语言,,不必考虑实现过程而只需考虑定义和结果

注解 meta

    1.  标签式语言(h5 xml
    2. 通用语言与dsl
    3. 全功能语言与弱功能表达式语言

 

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

 

人们可能会问,用人工智能语言解决问题与传统的方法有什么区别呢? 

传统方法通常把问题的全部知识以各种的模型表达在固定程序中,问题的求解完全在程序制导下按着预先安排好的步骤一步一步(逐条)执行。解决问题的思路与冯.诺依曼式计算机结构相吻合。当前大型数据库法、数学模型法、统计方法等都是严格结构化的方法。 

对于人工智能技术要解决的问题,往往无法把全部知识都体现在固定的程序中。通常需要建立一个知识库(包含事实和推理规则),程序根据 环境和所给的输入信息以及所要解决的问题来决定自己的行动,所以它是在环境模式的制导下的推理过程。这种方法有极大的灵活性、对话能力、有自我解释能力和 学习能力。这种方法对解决一些条件和目标不大明确或不完备,(即不能很好地形式化,不好描述)的非结构化问题比传统方法好,它通常采用启发式、试探法策略 来解决问题。

 

 

其实,每种编程语言的设计都有

独到之处,体现了每种语言的精髓,在融汇百家之后积累下来的正是方法论。

 

 

  1.  编程语言常见内部构成与概念 
    1. 基础语法 标识符保留字

 标识符由字母、数字、下划线组成

    1. 注释 与 运算符

 

 

    1. 变量6属性 三大流程
  1. 名字/别名
  2. 地址/左值
  3. 值/右值
  4. 类型
  5. 作用域
  6. 生存期/生命期

 

 

 

 

    1. 异常控制流程

流程图(Flow Chart

多分支结构

    1. 表达式(中缀前缀表达式
    1. 运算符
    1. 数据类型

Lambda 表达式

方法引用

生命周期

Cohesion

耦合Coupling

过程

    1. 函数 and 返回值

 

    1. 5.13.循环(loop), 5.14. 递归(recursion), 5.15.遍历(traversal), 5.16.迭代(iterate).

 

 

 

    1. 泛型

环境变量

s-exp

    1. 类型系统(强类型  弱类型

 

弱类型优点是简单快捷。。Map和自定义bean类型。。对比

 

 

  1. 编译
    1. 词法分析 语法分析 语义分析
    2. Ast语法树
    3. 预编译机制  import模式 
    4. 前端编译

把Java源码文件(.java)编译成Class文件(.class)的过程;

    1. JIT 后端编译/即时(JIT)编译

      通过Java虚拟机(JVM)内置的即时编译器(Just In Time Compiler,JIT编译器);在运行时把Class文件字节码编译成本地机器码的过程;

“热点代码”(Hot Spot Code)编译成与本地平台相关的机器码,并进行各种层次的优化;

    1. 静态提前编译(Ahead Of Time,AOT编译)

 程序运行前,直接把Java源码文件(.java)编译成本地机器码的过程;

 

    1. 增量编译 vs 全量编译
    2. 编译模式 忽略模式 恢复模式 vs停止模式

    1. 编译api
    2. 动态执行java文件源码

 

  1. 一些原则理论

 

solid原则

  1. 语言实现 

词法分析

fsm状态机

正则表达式

词性标注

语法分析

ast

语义分析

内部DSL实现模式

外部DSL

生成AST

BNF

正则表达式表的词法分析器

递归下降法语法解析器

解释器

表达式生成器

嵌套函数

方法级联

状态机fsm

 

  1. 类与对象实现 章节
    1. class模板
    1. dock type

is-a has-a

mix in

oo三大特性

solid原则

抽象方法

抽象类和

单根继承

单例

动态绑定(dynamic binding

    1. 动态对象
    1. 对象持久性(object persistence

对象实现

多继承

多态

反射api加载

方法重载

访问方法(accessor method)和

封装

覆盖(Overriding

构造方法

构造函数

环境变量

基于原型

继承

接口用interface

类加载

菱形继承

魔术方法

魔术属性

设置方法(mutator method)

实例

属性读写

外部文件加载

析勾方法

消息

消息传递

延迟绑定方法

自动语句加载

字节数组加载