zoukankan      html  css  js  c++  java
  • 9月4日作业

    1)简述编译程序与翻译程序、汇编程序的联系与区别。

    总体来说,编译语言和汇编语言都是翻译语言的其中一种,都是将一种语言书写的程序翻译成另一种语言的等价程序。

    区别在于,翻译程序中不止有编译程序一种,还存在一种解释程序,它相较于编译程序的区别在于它执行时并不会将源语言全部翻译成目标程序在执行,而是每翻译一句就会立即执行。

         另外的,将源语言为汇编语言的翻译成目标语言为机器语言的翻译程序,被叫做汇编程序。

         而将源语言那种的高级语言翻译成汇编语言或者机器语言那种低级语言的翻译程序,被叫做编译语言。

    2)编译过程包括哪几个主要阶段及每个阶段的主要功能。

    典型的划分方式中会将编译过程划分成如下6各阶段(主要功能也一并列入):

         阶段一---词法分析:逐字符读入源程序,扫描和分解源程序字符流,进而识别出一个个单词。

         阶段二---语法分析:其功能是在词法分析的基础上,,将单词序列分解成各类语法短语。

         阶段三---语义分析:其功能是审查源程序有无语义错误,为代码的生成阶段收集类型信息。

         阶段四---中间代码生成:其功能将源程序翻译成一种结构简单含义明确的内部表达形式,又叫座中间语言,中间代码。

         阶段五---代码优化:其是对上一段的中间代码进行变换改造。

         阶段六---目标代码生成:其功能是将中间代码变换成特定的机器上的绝对指令代码或可重定位的指令代码或汇编指令代码。

    3)简述解释程序与编译程序的区别。

         解释程序相对于编译程序最重要的区别在于:

          1、解释程序不会产生目标程序文件。

          2、不区别翻译阶段和执行阶段。

          3、翻译源程序的每一条语句后直接执行。

          4、程序执行期间一直有解释程序守候。

          5、常用于实现虚拟机。

         总的说,编译程序是先将源程序全部转换成目标程序再执行,而解释程序是每翻译一句就执行一句。

    4)了解新开源的华为方舟编译器(https://www.openarkcompiler.cn/home),理解并谈谈它的基本思想与采用的技术路线,以及它对安卓软件生态会有什么影响。

         简单理解:方舟编译器是一个模块化的工具,用于开发,它可以让开发人员不必写复杂的电脑语言,像Java、PHP、VB、C++等,在编写的时候都有自己的语法,人们用编程语言就可以开发软件了。

         技术思路和路线:就是,它跳过了反锁的虚拟机程序,直接把指令告诉了手机,手机去执行,中间少了一个传话的流程,所以可以明显提升手机的运行效率,如:打开应用的速度,传送文件的速度,拍照的响应速度,甚至开机关机的速度。它要求所有人用这个框架开发应用,它用更高级的可视化操作简化编程时间和流程,然后用统一的指令告诉手机应该怎么做,这中间不管是谁来操作都是一样的流程和格式,所以应用的质量会有明显提升,这不仅是速度上的东西,甚至还可以帮助应用本身减少压缩包的体积,这是一个连锁反应,并且是好的方向。

         对安卓软件生态的影响:我认为如果这个编译器能够正式的全面普及应用,对安卓软件市场将会有相当巨大的正面影响。不过在我看来能否全面普及还是十分不好说的,因为它牵连到了太多人的利益和面子,只有等到谷歌的全面回应了。不得不说资本是一把双刃剑,它既能带动科学技术的发展,有时也会阻碍科学技术的发展,当任何事物有资本融入牵连进来时,都会变得十分复杂,步步受碍。

  • 相关阅读:
    如何使用第三方webservice
    SQL零星技术点:SQL中转换money类型数值转换为字符串问题
    P2664 树上颜色统计 点分治 虚树 树上差分 树上莫队
    SPOJ 1825 经过不超过K个黑点的树上最长路径 点分治
    P4149 距离为K的点对(最少边数) n=200000 点分治
    P2634 树上路径长度为3的倍数的点对数 点分治
    P3806 离线多次询问 树上距离为K的点对是否存在 点分治
    POJ 1741 单次询问树上距离<=K的点对数 点分治
    BZOJ 1016 生成树计数
    BZOJ 1015 并查集&连通块
  • 原文地址:https://www.cnblogs.com/crjia/p/11458066.html
Copyright © 2011-2022 走看看