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