1)简述编译程序与翻译程序、汇编程序的联系与区别。
翻译程序指把高级语言源程序翻译成机器语言源程序(目标代码)的软件。翻译程序有两种:一种是编译程序,它将高级语言源程序一次性全部翻译成目标程序,每次执行程序时,只要执行目标程序。另一种是解释程序,它的执行过程是翻译一句执行一句,并且不会生成目标程序。
编译程序是先完整编译后运行的程序,如C、C++等;解释程序是一句一句翻译且边翻译边执行的程序,如JavaScript、Python等。如图
汇编程序也是一种语言翻译程序,它把汇编语言源程序翻译成机器语言程序。
编译程序与汇编程序的区别:如果源语言是诸如C、C++、Java等“高级语言”,而目标语言是诸如汇编语言或机器语言之类的“低级语言”,这样的一个翻译程序称为编译程序。如果源语言是汇编语言,而目标语言是机器语言,这样的一个翻译程序称为汇编程序。
2)编译过程包括哪几个主要阶段及每个阶段的主要功能。
编译阶段也常常划分为两大步骤,分析步骤和综合步骤 分析步骤和综合步骤 分析步骤是指对源程序的分析 -线性分析(词法分析或扫描) -层次分析(语法分析) -语义分析 综合步骤是指后端的工作,为目标程序的生成而进行的综合。
3)简述解释程序与编译程序的区别。
编译程序能生成目标程序,而解释程序不能。编译程序是整体编译完了,再一次性执行。而解释程序是一边解释,一边执行。 解释一句后就提交计算机执行一句,并不形成目标程序。就像外语翻译中的“口译”一样,说一句翻一句,不产生全文的翻译文本。编译器是把源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机可以直接以机器语言来运行此程序,速度很快。而解释器则是只在执行程序时,才一条一条的解释成机器语言给计算机来执行,所以运行速度是不如编译后的程序运行的快的。这是因为计算机不能直接认识并执行我们写的语句,它只能认识机器语言(是二进制的形式)。
4)了解新开源的华为方舟编译器(https://www.openarkcompiler.cn/home),理解并谈谈它的基本思想与采用的技术路线,以及它对安卓软件生态会有什么影响
众所周知,搭载安卓系统的手机在经过长时间的使用之后,经常会出现使用卡顿和图像传输延后以及网络连接不畅等问题。长期以来这个问题一直没能彻底解决,方舟编译器或许是这个问题的终结者。其实,方舟编译器是华为历经多年打造出来的秘密武器,也许大家不是很了解什么是方舟翻译器,举个例子好了,当我们碰到外国人并且语言不通的时候,这个时候就需要一个中介作为翻译传递互相的信息。
简单来说,方舟编译器就是可以将高级语言比如Java,直接编译成变成机器码的技术。它最大的优势就在于绕过了安卓系统的VM(虚拟机),从使得应用可以像苹果引以为傲的iOS系统一样,转化出的机器码可以直接由CPU运算,从而使得运行效率大大提升。
更详细的说,现在的安卓手机采用的是动态编译,在手机上进行编译,往往有部分程序需要一边转换一边执行,影响程序执行的效率。而方舟编译器是采用全新的系统及应用的编译和运行机制,对所有的 Java 语义全部做到静态编译,直接将Java 语言“翻译”成机器语言,代替高资源消耗的动态编译。所以相比起单纯的翻译机器来说,华为方舟编译器更像是让您直接获得了语言能力,对比单纯作为翻译中介,更将运行效率大幅度提升,从根本上改善安卓系统运行慢的弊端。
根据华为实验室的测试数据,EMUI 9.1 在仅仅对系统组件 System Server 应用了华为方舟编译器后,系统操作流畅度提升 24%,系统响应性能提升 44%。同时,新浪微博极速版在应用方舟编译器之后,操作流畅度最高提升了60%。根据华为的监测数据来看,方舟编译器可以说是给安卓系统带来了一场革命性的升级变革,着实让业界侧目。