BUAA 编译作业 练习1

  1. 解释名词术语:

    源项目:用汇编语言或高级语言编写的程序称为源程序。

    目标程序:用目标语言所表示的程序。( 目标语言:可以是介于源语言和机器语言之间的 “中间语言”,可以是某种机器的机器语言,也可以是某机器的汇编语言。)

    翻译程序:将源程序转换为目标程序的程序称为翻译程序。 它是指各种语言的翻译器,包括汇编程序和编译程序, 是汇编程序、编译程序以及各种变换程序的总称

    汇编程序:若源程序用汇编语言书写,经过翻译程序得到用机器语言 表示的程序,这时的翻译程序就称之为汇编程序,这种翻译过 程称为“汇编”(Assemble)。

    编译程序:高级语言的源程序变换为语义等价的某种目标语言程序的程序。

    解释程序:对源程序或编译得到的中间语言进行解释执行的程序。

    遍:指对源程序或源程序的中间形式从头到尾扫描一遍,并做有关的加工处理,生成新的源程序中间形式或目标程序。

  2. 典型的编译系统可划分为哪几个主要的逻辑部分?各部分的主要功能是什么?

    分析部分(词法分析、语法分析、语义分析)+综合部分(目标代码生成、代码优化)

    词法分析:执行以识别单词为目标的简单的语法分析程序。

    语法分析:将根据语法规则将单词进一步组合成大的语法类或语法成分。

    语义分析:确定程序的意义,即通过语法分析程序识别出来的语法成分进一步进行语义分析处理,识别它们的含义。

    代码生成:将源程序的中间形式转换为汇编语言或者机器语言。

    代码优化:获得更高效的目标程序,在确保源代码功能不变的前提下,使目标代码更加简短,以尽量减少存储空间和运行时间。

  3. 什么是编译的前端和后端?为什么要把编译程序分成前端和后端?

    前端:主要由与源语言有关而与目标机无关的那些部分组成(即分析部分),与机器无关的代码优化工作也可通过前端来完成。

    后端:包括编译程序中与目标机有关的部分(即综合部分)。

    好处:采用同一个编译程序的前端,改写其后端可以生成不同目标机上的相同源语言的编译程序。

  4. 通过查资料和调研列举出5个目前常用的高级程序设计语言,简述其特点,并指出是编译型还是解释型或是编译解释型。

    编译型语言:程序在执行之前需要一个专门的编译过程,把程序编译成为机器语言的文件,运行时不需要重新翻译,直接使用编译的结果就行了。程序执行效率高,依赖编译器,跨平台性差些。如C、C++、Delphi等。

    解释型语言:程序不需要编译,程序在运行时才翻译成机器语言,每执行一次都要翻译一次。效率低,依赖解释器,跨平台性好,可单步执行。比如Lisp、APL、Basic等。

    编译解释型语言:先把源程序编译成中间代码,再对中间代码进行解释执行。比如Java、JavaScript、Perl、Python、Ruby、MATLAB等(命令语言、会话语言、网页脚本、服务器脚本以及要求可移植性强而对速度要求不高的语言)。

  5. 介绍一个自己熟悉的编译系统,描述其外部特性(功能、性能等)。

    MTK分布式编译系统:本系统由注册服务器、编译服务器和客户端组成,网内启动一个注册服务器,多个编译服务器。MTK平台文件很多,需要由客户端向服务器分发。一般地,一个客户端与十个服务器联合编译可以达到理想效果。

  6. 补充作业:分析一个你熟悉的编译系统或集成了编译功能的IDE,描述其外部特征(功能、性能等)。

    PyCharm:

    PyCharm是JetBrains支持的特定于Python的IDE。它提供对Python,Web开发用Python和科学开发用Python的支持,它的可靠性,自定义功能以及专用的智能工具使它成为出色的Python IDE。

    但Pycharm没有软件包安装程序来减轻应用程序的负担,且价格相对较高。PyCharm对单个开发人员而言并不那么友好。那些需要低成本或免费的Python IDE来支持特定数据库或科学工具的人将不得不继续寻找。对于初学者来说,各种各样的功能可能是压倒性的。最重要的是,那些没有足够强大功能的计算机的人可能会在运行此IDE时遇到问题。

  7. 中国计算机事业的早期创业史和早期的编译技术创新

    1956年,周总理亲自主持制定的《十二年科学技术发展规划》中 [1] ,就把计算机列为发展科学技术的重点之一,并在1957年筹建中国第一个计算技术研究所。中国计算机事业的起步比美国晚了13年,但是经过毛泽东时代老一辈科学家的艰苦努力,中国与美国的差距不是某些人所歪曲的“被拉大了”,而是缩小了。2002年8月10日,我国成功制造出首枚高性能通用CPU——龙芯一号。此后龙芯二号问世,龙芯三号也正在紧张的研制中。龙芯的诞生,打破了国外的长期技术垄断,结束了中国近二十年无“芯”的历史。【第一代电子管计算机研制(1958-1964年)、第二代晶体管计算机研制(1965-1972年)】

    第一个编译器:IBM Fortran(1957年)、在20世纪60年代计算机架构师和编译器编写者首先开始考虑并行性。

知识点

编译的起源

概念:

源程序 目标程序 翻译程序 汇编程序 编译程序

编译过程:5个基本阶段 【词语义生优】

编译程序:7个逻辑部分 【词语义生优符错】

遍 前端 后端 前后处理器

你可能感兴趣的:(c++)