编译原理_CS143_Standford
Posted by Mars . Modified at
CS143_Standford 编译原理
导论
编译器和解释器 Compiler & Interpreter
解释器: 程序(program)和数据(data)输入,立即输出一个结果(output),过程是在线(online)的。
编译器: 将程序(program)编译成一个可执行文件(exec file),数据传入可执行文件可以产生输出结果,但是这一过程与原程序无关。编译过程是离线offline的。
编译器的组成
- 词法分析(Lexical Analysis): 将程序文本分割成词汇
words
或令牌tokens
; - 解析(Parsing): ;
- 语义分析(Semantic Analysis);
- 优化(Optimization);
- 代码生成(Code Generation);
编程语言的经济学
为什么有如此多的编程语言?
因为不同领域的需求有时候是相互矛盾的,一个语言往往为解决一个领域的问题而研发,将所有需求汇总到一个语言系统是不现实的。
对编程者的训练,是编程语言的主要成本。
这解释了为什么总要设计新语言。因为旧的语言使用者太多,想要快速添加新特性,并让这些旧程序员学会,成本是很高的。一个语言使用者越少,修改越灵活。因此在面临一个新的问题领域时,设计一个新语言并让这个领域的人学习,可能成本会更低。