编译原理的发展史
编译器与编译工具概述
摘要:
编译器是将便于人编写,阅读,维护的高级计算机语言翻译为计算机能解读、运行的低阶机器语言的程序。编译是从源代码(通常为高阶语言)到能直接被计算机或虚拟机执行的目标代码(通常为低阶语言或机器语言)的翻译过程。
一.编译器的概述
1. 编译器的概念
编译器是将便于人编写,阅读,维护的高级计算机语言翻译为计算机能解读、运行的低阶机器语言的程序。编译器将原始程序作为输入,翻译产生使用目标语言的等价程序。源代码一般为高阶语言如 Pascal、C++、Java 等,而目标语言则是汇编语言或目标机器的目标代码,有时也称作机器代码。
2. 编译器的发展历史
上世纪50年代,IBM 的John Backus 带领一个研究小组对FORTRAN 语言及其编译器进行开发。与此同时,Noam Chomsky 开始了他对自然语言结构的研究。Chomsky 的研究导致了根据语言文法的难易程度以及识别它们所需要的算法来对语言分类。正如现在所称的Chomsky 架构(Chomsky Hierarchy ),它包括了文法的四个层次:0型文法、1型文法、2型文法和3型文法,且其中的每一个都是其前者的特殊情况。2型文法被证明是程序设计语言中最有用的,而且今天它已代表着程序设计语言结构的标准方式。分析问题(用于上下文无关文法识别的有效算法)的研究是在60年代和70年代,它相当完善的解决了这个问题。现在它已是编译原理中的一个标准部分。 在70年代后期和80年代早期,大量的项目都贯注于编译器其它部分的生成自动化,这其中就包括了代码生成。这些尝试并未取得多少成功,这大概是因为操作太复杂而人们又对其不甚了解。
编译器设计最近的发展包括:首先,编译器包括了更加复杂算法的应用程序它用于推断或简化程序中的信息。其次,编译器已越来越成为基于窗口的交互开发环境(Interactive Development Environment,IDE )的一部分,它包括了编辑器、连接程序、调试程序以及项目管理程序。
在九十年代,作为GNU 项目或其它开放源代码项目标一部分,许多免费编译器和编译器开发工具被开发出来。大约在1999年,SGI 公布了他们的一个工业化的并行化优化编译器Pro64的源代码,后被全世界多个编译器研究小组用来做研究平台,并命名为Open64。Open64的设计结构好,分析优化全面,是编译器高级研究的理想平台。
3.编译器的种类
编译器可以生成用来在与编译器本身所在的计算机和操作系统(平台)相同的环境下运行的目标代码,这种编译器又叫做“本地”编译器。另外,编译器也可以生成用来在其它平台上运行的目标代码,这种编译器又叫做交叉编译器。交叉编译器在生成新的硬件平台时非常有用。“源码到源码编译器”是指用一种高阶语言作为输入,输出也是高阶语言的编译器。例如: 自动并行化编译器经常采用一种高阶语言作为输入,转换其中的代码,并用并行代码注释对它进行注释(如OpenMP )或者用语言构造进行注释(如FORTRAN 的DOALL 指令)。
二.编译工具
1.C 语言对应的编译器——VS2008
C 语言对应的编译器可以用VS2003、 VS2005、VS2008 、TC 等,以最新版本的Visual Studio 2008为例
Microsoft Visual Studio 2008 使开发人员能够快速创建高质量、用户体验丰富而又紧密联系的应用程序,充分展示了 Microsoft 开发智能客户端应用程序的构想。借助 Visual Studio 2008,采集和分析信息将变得更为简单便捷,业务决策也会因此变得更为有效。任何规模的组织都可以使用 Visual Studio 2008 快速创建能够利用 Windows Vista 和 2007 Office system 的更安全、更易于管理并且更可靠的应用程序。
Visual Studio 2008 在三个方面为开发人员提供了关键改进: 1.快速的应用程序开发 2.高效的团队协作 3.突破性的用户体验
Visual Studio 2008 提供了高级开发工具、调试功能、数据库功能和创新功能,帮助在各种平台上快速创建当前最先进的应用程序。
2005 年,微软发布了 Visual Studio 2005。.NET 字眼从各种语言的名字中被抹去,但是这个版本的 Visual Studio 仍然还是面向 .NET 框架的(版本2.0)。它同时也能开发跨平台的应用程序,如开发使用微软操作系统的手机的程序等。总体来说是一个非常庞大的软件,甚至包含代码测试功能。
Visual Studio 9 目前可以确定的是支持建立于 DHTML 基础上的 AJax 技术,这种微软在
Visual InterDev 时代提出的基于异步的客户端动态网页技术在当年并没有像微软预期中的那么流行起来,反而随着 GMail 等应用而东山再起,渐渐成为主流网络应用之一。同时 Visual Studio 9 会强化对于数据库的支持以及微软新的基于工作流(Workflow )的编程模型。预计为了保持与 Office 系列的统一,Visual Studio 9 的名称为 Visual Studio 2008。
2. C++语言对应的编译器——Microsoft Visual C++ 6.0 Visual C++是一个集成环境的C++编译器,功能很多。还有 Borland C++ Buider C++编译器,比较小巧实用。 C++ Buider 也是C++编译器,是另一个公司的产品。
Microsoft Visual C++ 6.0功能特点:
几乎所有世界级的软件,从业界领先的Web 浏览器到面向任务的企业应用,都是使用Microsoft Visual C++开发系统来开发的。要用C++来开发Windows 和Web 上的高性能应用程序,Visual C++是效率最高的首选工具。Visual C++ 6.0在不牺牲灵活性、性能和控制力度的同时,给C++带来更高水平的生产效率。除了IntelliSense Technology(智能感应技术)和Edit and Continue (即编即调)等显著缩短开发时间的新特性外,Visual C++ 6.0还为Web 开发和企业开发提供更良好的支持。Microsoft Visual C++ 6.0专业版的健壮的构件开发、强大的数据库工具和完备的Internet 支持将使您从中受益,创建出策略性的商务解决方案来。
有了这些显著缩短开发时间的新特性,您可以享受到一种全新水平的工作效率。编码所费的时间减少了,编译所费的时间减少了,调试所费的时间也减少了,一句话,创建应用程序所费的时间减少了,同时还可以享受到更多的构件重用。
获得令人目眩的速度。本已是速度的标准的Visual C++如今更上一层楼,Visual C++ 6.0在多处进行了最优的调整,这样的结果是:开发者可以创建出可能范围内的最小最快的构件和应用。
3.JAVA 语言对应的编译器——eclipse
JCreater 、JBuilder 、eclipse 、myeclipse 、netbean 这几个是主流,eclipse 和myeclipse(eclipse的扩展功能更多) 是主流中的主流。
JBudler Eclipse 属于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 在内,很多大的软件公司基于eclipse 开发了其自己的软件产品,这无疑得益于eclipse 良好的结构。