您好,欢迎访问三七文档
编译技术发展综述计算机科学与软件学院计算机1302蔡元昊1311611517引言:编译程序构造的原理和技术一直属于最近公布的核心知识领域,已成为计算机科学必备的专业基础知识。而且编译程序的构造是计算机科学中一个非常成功的分支,也是最早获得成功的分支之一,他所建立的理论和技术方法值得人们深入研究和学习。摘要:编译程序是计算机的核心系统之一,是掌握计算机理论和软件技术的关键知识,编译原理合计数为人们理解计算机语言。创造优秀的软件奠定了理论基础。扩展了视野,开辟了捷径。编译原理和技术可以应用在其他诸如软件建模语言、硬件描述语言。脚本语言等的翻译方面:在集成化软件开发环境以及软件安全一直有着广泛的应用。而且,编译原理的研究有力的推动了计算机科学、计算机工程、软件开发以及人机工程的研究和发展。编译原理是计算机专业的一门重要专业课,旨在介绍编译程序构造的一般原理和基本方法。内容包括语言和文法、词法分析、语法分析、语法制导翻译、中间代码生成、存储管理、代码优化和目标代码生成。一、早期编译技术的发展编译器是将一种语言翻译为另一种语言的计算机程序。编译器将源程序(sourcelanguage)编写的程序作为输入,而产生用目标语言(targetlanguage)编写的等价程序。通常地,源程序为高级语言(high-levellanguage),如C或C++,而目标语言则是目标机器的目标代码(objectcode,有时也称作机器代码(machinecode)),也就是写在计算机机器指令中的用于运行的代码。这一过程可以表示为:源程序→编译器→目标程序在20世纪40年代,由于冯·诺伊曼在存储-程序计算机方面的先锋作用,编写一串代码或程序已成必要,这样计算机就可以执行所需的计算。开始时,这些程序都是用机器语言(machinelanguage)编写的。机器语言就是表示机器实际操作的数字代码,例如:C70600000002表示在IBMPC上使用的Intel8x86处理器将数字2移至地址0000(16进制)的指令。但编写这样的代码是十分费时和乏味的,这种代码形式很快就被汇编语言(assemblylanguage)代替了。在汇编语言中,都是以符号形式给出指令和存储地址的。例如,汇编语言指令MOVX,2就与前面的机器指令等价(假设符号存储地址X是0000)。汇编程序(assembler)将汇编语言的符号代码和存储地址翻译成与机器语言相对应的数字代码。汇编语言大大提高了编程的速度和准确度,人们至今仍在使用着它,在编码需要极快的速度和极高的简洁程度时尤为如此。但是,汇编语言也有许多缺点:编写起来也不容易,阅读和理解很难;而且汇编语言的编写严格依赖于特定的机器,所以为一台计算机编写的代码在应用于另一台计算机时必须完全重写。发展编程技术的下一个重要步骤就是以一个更类似于数学定义或自然语言的简洁形式来编写程序的操作,它应与任何机器都无关,而且也可由一个程序翻译为可执行的代码。例如,前面的汇编语言代码可以写成一个简洁的与机器无关的形式x=2第一个编译程序的出现是在20世纪50年代早期,多数早期的编译工作是将算术公式翻译成机器代码。用现在的标准来衡量,当时的编译程序能完成的工作十分初步,如只允许简单的单目运算,数据元素的命名方式有很多限制。然而它们奠定了对高级语言编译系统的研究和开发的基础。20世纪50年代中期出现了FORTRAN等一批高级语言,相应的一批编译系统开发成功。随着编译技术的发展和社会对编译程序需求的不断增长,20世纪50年代末有人开始研究编译程序的自动生成工具,提出并研制编译程序的编译程序。它的功能是以任一语言的词法规则、语法规则和语义解释出发,自动产生该语言的编译程序。目前很多自动生成工具已广泛使用,如词法分析程序的生成系统LEX,语法分析程序的生成系统YACC等。20世纪60年代起,不断有人使用自展技术来构造编译程序。自展的主要特征是用被编译的语言来书写该语言自身的编译程序。1971年,PASCAL的编译程序用自展技术生成后,其影响就越来越大。随着并行技术和并行语言的发展,处理并行语言的并行编译技术,将串行程序转换成并行程序的自动并行编译技术也正在深入研究之中。另外嵌入式应用迅速增长的需求,推动了交叉编译技术的发展.还有系统芯片设计方法和关键EDA技术的研究,也带动了专用语言VHDL等及其编译技术的不断深化。在70年代后期和80年代早期,大量的项目都贯注于编译器其它部分的生成自动化,这其中就包括了代码生成。这些尝试并未取得多少成功,这大概是因为操作太复杂而人们又对其不甚了解。编译器设计最近的发展包括:首先,编译器包括了更加复杂算法的应用程序它用于推断或简化程序中的信息。其次,编译器已越来越成为基于窗口的交互开发环境(InteractiveDevelopmentEnvironment,IDE)的一部分,它包括了编辑器、连接程序、调试程序以及项目管理程序。在九十年代,作为GNU项目或其它开放源代码项目标一部分,许多免费编译器和编译器开发工具被开发出来。随着芯片研制,国内还有若干单位也在开展基于GCC生成面向特定芯片的编译器工作。编译器包括了更加复杂算法的应用程序它用于推断或简化程序中的信息;这又与更为复杂的程序设计语言的发展结合在一起。其中典型的有用于函数语言编译的Hindley-Milner类型检查的统一算法。其次,编译器已越来越成为基于窗口的交互开发环境(InteractiveDevelopmentEnvironment,IDE)的一部分,它包括了编辑器、连接程序、调试程序以及项目管理程序。这样的IDE标准并没有多少,但是对标准的窗口环境进行开发已成为方向。另一方面,尽管近年来在编译原理领域进行了大量的研究,但是基本的编译器设计原理在近20年中都没有多大的改变。大约在1999年,SGI公布了他们的一个工业化的并行化优化编译器Pro64的源代码,后被全世界多个编译器研究小组用来做研究平台,并命名为Open64。Open64的设计结构好,分析优化全面,是编译器高级研究的理想平台。3.编译器的种类编译器可以生成用来在与编译器本身所在的计算机和操作系统(平台)相同的环境下运行的目标代码,这种编译器又叫做“本地”编译器。另外,编译器也可以生成用来在其它平台上运行的目标代码,这种编译器又叫做交叉编译器。交叉编译器在生成新的硬件平台时非常有用。“源码到源码编译器”是指用一种高阶语言作为输入,输出也是高阶语言的编译器。例如:自动并行化编译器经常采用一种高阶语言作为输入,转换其中的代码,并用并行代码注释对它进行注释(如OpenMP)或者用语言构造进行注释(如FORTRAN的DOALL指令)。二.编译工具1.C语言对应的编译器——VS2008C语言对应的编译器可以用VS2003、VS2005、VS2008、TC等,以最新版本的VisualStudio2008为例Microsoft®VisualStudio®2008使开发人员能够快速创建高质量、用户体验丰富而又紧密联系的应用程序,充分展示了Microsoft开发智能客户端应用程序的构想。借助VisualStudio2008,采集和分析信息将变得更为简单便捷,业务决策也会因此变得更为有效。任何规模的组织都可以使用VisualStudio2008快速创建能够利用WindowsVista™和2007Officesystem的更安全、更易于管理并且更可靠的应用程序。VisualStudio2008在三个方面为开发人员提供了关键改进:1.快速的应用程序开发2.高效的团队协作3.突破性的用户体验VisualStudio2008提供了高级开发工具、调试功能、数据库功能和创新功能,帮助在各种平台上快速创建当前最先进的应用程序。2005年,微软发布了VisualStudio2005。.NET字眼从各种语言的名字中被抹去,但是这个版本的VisualStudio仍然还是面向.NET框架的(版本2.0)。它同时也能开发跨平台的应用程序,如开发使用微软操作系统的手机的程序等。总体来说是一个非常庞大的软件,甚至包含代码测试功能。VisualStudio9目前可以确定的是支持建立于DHTML基础上的AJax技术,这种微软在VisualInterDev时代提出的基于异步的客户端动态网页技术在当年并没有像微软预期中的那么流行起来,反而随着GMail等应用而东山再起,渐渐成为主流网络应用之一。同时VisualStudio9会强化对于数据库的支持以及微软新的基于工作流(Workflow)的编程模型。预计为了保持与Office系列的统一,VisualStudio9的名称为VisualStudio2008。2.C++语言对应的编译器——MicrosoftVisualC++6.0VisualC++是一个集成环境的C++编译器,功能很多。还有BorlandC++BuiderC++编译器,比较小巧实用。C++Buider也是C++编译器,是另一个公司的产品。MicrosoftVisualC++6.0功能特点:几乎所有世界级的软件,从业界领先的Web浏览器到面向任务的企业应用,都是使用MicrosoftVisualC++开发系统来开发的。要用C++来开发Windows和Web上的高性能应用程序,VisualC++是效率最高的首选工具。VisualC++6.0在不牺牲灵活性、性能和控制力度的同时,给C++带来更高水平的生产效率。除了IntelliSenseTechnology(智能感应技术)和EditandContinue(即编即调)等显著缩短开发时间的新特性外,VisualC++6.0还为Web开发和企业开发提供更良好的支持。MicrosoftVisualC++6.0专业版的健壮的构件开发、强大的数据库工具和完备的Internet支持将使您从中受益,创建出策略性的商务解决方案来。有了这些显著缩短开发时间的新特性,您可以享受到一种全新水平的工作效率。编码所费的时间减少了,编译所费的时间减少了,调试所费的时间也减少了,一句话,创建应用程序所费的时间减少了,同时还可以享受到更多的构件重用。获得令人目眩的速度。本已是速度的标准的VisualC++如今更上一层楼,VisualC++6.0在多处进行了最优的调整,这样的结果是:开发者可以创建出可能范围内的最小最快的构件和应用。3.JAVA语言对应的编译器——eclipseJCreater、JBuilder、eclipse、myeclipse、netbean这几个是主流,eclipse和myeclipse(eclipse的扩展功能更多)是主流中的主流。JBudlerEclipse属于IDE,是集成开发环境(IDE)!IDE是集成了编译,检错,自动查找错误,深度反检查功能的辅助开发工具。就是说,只要属于java的IDE,都会把sun的编译器集成到它里面来。而JBudler与Eclipse等这些开发工具更多的是体现在对不同层面java开发提供了不同的强大功能。比如:MyEclipse强势在web开发的便捷。JBudler对GUI更强大。eclipse是一个非常著名的集成开发工具,其自身功能强大而易用。更为重要的是,软件本身是一个开放源代码的项目,由一个国际组织进行管理,很多大公司都是这个组织的成员,包括IBM和Borland等著名的软件开发商,事实上,eclipse本来是IBM开发的工具,是由IBM将其贡献给开放源代码社区的。正因为如此,任何人都可以免费获得eclipse开发环境,而不需要支付任何费用。eclipse的另一个非常重要的特点是其提供了非常灵活的扩展能力,事实上,eclipse可以被称作一个开发平台,它提供了丰富的接口可以扩展其本身。eclipse本身是使用Java开发的,开发人员可以简单的按照其规范开发eclipse的插件,就可以在eclipse平台上增加更多的功能。大量的开发人员基于eclipse开发了插件,比如C++开发、UML设计、J2EE开发等都有相应的插件。事实上,包括IBM在内,很多大的软件公司基于ecli
本文标题:编译技术发展综述
链接地址:https://www.777doc.com/doc-2069081 .html