编译原理-02

来源:互联网 发布:淘宝店铺 ip地址 编辑:程序博客网 时间:2024/05/01 18:53

今天无意去听了下斯坦福的编译原理课程。发现和西安交大的课程比,更偏向工程实践。


这明显是中美两国的教学差别。中国的老师主要是数学系风格,美国则是工程师风格。

听课笔记:


Compiler(编译器) 与 Interpreter(解析器)区别

Compile:  

Input :     Source File

Ouput:    Exe程序


Interpreter:    

Input : Source File   + Data

Ouput:  执行结果

通俗的来说, 编译器只负责语言的翻译,比如将C语言翻译成机器语言,或者将高级语法翻译成汇编语言。

而解析器不但负责语言的翻译,还要执行,并输出结果给用户。

即 编译器 Off-line  Interpreter  On-line


编译器主要结构:

词法分析 Lexical Analysis   tokens ( 二元组,Word, Property)

Parsing  自上而下  自下而上 语法树

Semantic Analysis  解决语境与语意   二义性问题

Optimization   Run faster 运行速度  Use Less Resources 资源最少

Code Generation   生成目标代码


为什么要发明新的语言

1》不同的领域有不同的需求

2》主要考虑到教育成本(Programmer Training)  旧语言使用的人越多,适应新功能的成本越高

3》新的语言一般和旧语言比较像 


其实将上面的语言换成开发的产品,很多工程观点是一致的。


国内的课主要是学数学,国外的课让你有更多工程思考。

 

课程地址:

https://www.coursera.org/course/compilers 

英语听力还行的建议去听听。


0 0
原创粉丝点击