解释vs 编译
1、解释:
1)根据源程序中语句的顺序,直接地逐句进行分析解释,并立即执行。
2)举个例子,犹如同声传译者,在屋子里直接一句一句的翻译,不同国家的议员(好比计算机),翻译员翻译一句,他立马接收一句,一步到位,立马做出回应,即执行程序。
2、编译:
1)跟解释最本质的区别是:翻译和执行是分开进行的。编译器先把源程序的高级语言翻译成计算机语言进行保存,当程序翻译完成时,计算机直接利用翻译完成的机器语言运行。所以速度会比解释快很多。
2)就好比今天大老板突然要这精通语言的小秘书一个任务“这个文件,我明天就要,你回去给我翻译好了,我直接拿去开会。”,秘书只能熬夜加班,把文件全部给翻译出来,供大boss使用。
3)值得注意的是,这位秘书精通英译汉,但是汉译英的能力欠佳,所以反编译过程不能转转回成原先的高级语言。只能“大概齐”==功能上等价的汇编程序。
3、贴近生活:
计算机也如同人一样,好比有些人接收语音信号,有些时候要一句一句的在大脑里反应(程序解释过程),有时候可以整段整段翻译完成直接转成神经信号,然后利用这些翻译完成的信号直接做出反应(翻译过程)。
编译过程:
蜀道难,总得多绕几个弯才能登峰。
1、重要关卡要务:
1) 词法分析:任务是识别单词(即标识符、常数、保留字,以及各种运算符、标点符号等),以单词内部为基本单位,解析单词结构。
2) 语法分析:是编译程序的核心部分,主要任务是根据语言的语法规则,检查源程序是否合乎语法。语法分析的目的是把单词进行分类,掌握单词是怎样组成语句的,以及语句又是如何组成程序的。
3) 语义分析:进一步检查合法程序结构的语义正确性,语义错误
4) 中间代码生成:简单的记号标记,与具体机器无关
2、贴近生活:
大脑接收信号的过程中 vs 编译的过程
1)我们会去倾听这段话有没有单词拼写、标点使用错误(词法分析)
2)再是判断这段由n个单词组成的话,有没有语法错误啊?例如我们的英语,就经常分析语法错误。(语法分析)
3)再来,就是语义分析,比如海上是个繁华的城市,词法分析、语法分析是判断不出错误的,但语义分析这关肯定是过不去了。(语义分析)
归根结底:
把计算机比作人,打个比方:人有记忆中枢,神经中枢,这两大系统就好比计算机的存储系统和编译过程。把声音、图像各种信号脑子里一存,有些长久的就放内存里,有些经常需要拿出来回忆的就放Cache里。神经中枢就是好比计算机对程序的编译,你有听见一句话,立马解释做出反应,也有可能反应比较“内秀”,听了半天,翻译好了,再反应。然后翻译的过程,肯定就有对信号的一系列判断,词、语法、语义是否正确。那判断的有什么标准吗?是该主谓宾+状语呢,还是动词打头表命令呢?这就是我们下面即将粉墨登场的“文法”大官人! 敬请期待。