终于开始恶补CS的基础课程----Computer Architecture,这门以前深恶痛绝的课程。没办法,作为一个SE的学生,对于硬件总是很反感的。
自己使用的Textbook是Tanenbaum的那本计算机组成 结构化方法第五版,自从看过那本Computer Networks第四版之后,就对这个荷兰老头子的书产生了浓厚的兴趣,头一次见到写的这样风趣而且不乏深度的教材,让我头一次看一本计算机的书看的不可自拔。
本以为Chapter One只是一些简要的介绍,没想到第一页就解决了我以前一直不明白的一个问题:Differences between Compilation and Interpretation~
简单的说吧,假设有一台计算机,它只支持语言L0进行编程操作,然而L0却很难,一般的人根本搞不懂,于是便有高人发明了语言L1,它抽象了L0的许多功能,而且比L0更加简单易用,但这时候问题来了,计算机只认识L0不认识L1,这怎么办呢?
于是便碰到了一个语言转化的问题,也就是如何将高易用性的L1转化成计算机认识的L0呢?
这个转化过程,就扯到了翻译和解释这两个概念:
假设现在有一个用L1编写的程序PL1
一种方法是把用PL1翻译(Compile)成一个等价的L0指令序列,计算机通过执行这个L0指令序列,来完成原来的那个PL1的功能,这个过程叫做翻译。
另外一种方法,就是用L0写一个程序(也就是解释器 Interpreter),把用PL1输入数据,然后一边顺序检查PL1的每条指令,一边顺序直接执行等效的L0指令序列,从而完成PL1的功能,这个过程就叫做解释(Interpretation)。
翻译和解释其实都是通过执行PL1所对应的L0指令序列来实现的,其中的区别在于,翻译的时候需要先把整个PL1转化成L0指令序列,然后执行这个L0指令序列,而解释的时候,PL1中的每条L1指令在被检查和译码后会立即执行。因此,解释的速度一般要比翻译快,然而,解释的实现也要比翻译难。
(关于编译的原理,这是一门很复杂的学科,建议参考龙书的第二版和一些关于自动机的书)
2008年10月7日星期二
订阅:
博文评论 (Atom)

没有评论:
发表评论