问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

编译器的历史

发布网友 发布时间:2022-08-01 15:09

我来回答

1个回答

热心网友 时间:2024-12-03 03:36

20世纪50年代,IBM的John Backus带领一个研究小组对FORTRAN语言及其编译器进行开发。但由于当时人们对编译理论了解不多,开发工作变得既复杂又艰苦。与此同时,Noam Chomsky开始了他对自然语言结构的研究。他的发现最终使得编译器的结构异常简单,甚至还带有了一些自动化。Chomsky的研究导致了根据语言文法的难易程度以及识别它们所需要的算法来对语言分类。正如Chomsky架构(Chomsky Hierarchy),它包括了文法的四个层次:0型文法、1型文法、2型文法和3型文法,且其中的每一个都是其前者的特殊情况。2型文法(或上下文无关文法)被证明是程序设计语言中最有用的,而且今天它已代表着程序设计语言结构的标准方式。分析问题(parsing problem,用于上下文无关文法识别的有效算法)的研究是在60年代和70年代,它相当完善的解决了这个问题。它已是编译原理中的一个标准部分。
有限状态自动机(Finite Automation)和正则表达式(Regular Expression)同上下文无关文法紧密相关,它们与Chomsky的3型文法相对应。对它们的研究与Chomsky的研究几乎同时开始,并且引出了表示程序设计语言的单词的符号方式。
人们接着又深化了生成有效目标代码的方法,这就是最初的编译器,它们被一直使用至今。人们通常将其称为优化技术(Optimization Technique),但因其从未真正地得到过被优化了的目标代码而仅仅改进了它的有效性,因此实际上应称作代码改进技术(Code Improvement Technique)。
当分析问题变得好懂起来时,人们就在开发程序上花费了很大的功夫来研究这一部分的编译器自动构造。这些程序最初被称为编译器的编译器(Compiler-compiler),但更确切地应称为分析程序生成器(Parser Generator),这是因为它们仅仅能够自动处理编译的一部分。这些程序中最著名的是Yacc(Yet Another Compiler-compiler),它是由Steve Johnson在1975年为Unix系统编写的。类似的,有限状态自动机的研究也发展了一种称为扫描程序生成器(Scanner Generator)的工具,Lex(与Yacc同时,由Mike Lesk为Unix系统开发)是这其中的佼佼者。
在20世纪70年代后期和80年代早期,大量的项目都贯注于编译器其它部分的生成自动化,这其中就包括了代码生成。这些尝试并未取得多少成功,这大概是因为操作太复杂而人们又对其不甚了解。
编译器设计最近的发展包括:首先,编译器包括了更加复杂算法的应用程序它用于推断或简化程序中的信息;这又与更为复杂的程序设计语言的发展结合在一起。其中典型的有用于函数语言编译的Hindley-Milner类型检查的统一算法。其次,编译器已越来越成为基于窗口的交互开发环境(Interactive Development Environment,IDE)的一部分,它包括了编辑器、连接程序、调试程序以及项目管理程序。这样的IDE标准并没有多少,但是对标准的窗口环境进行开发已成为方向。另一方面,尽管在编译原理领域进行了大量的研究,但是基本的编译器设计原理在近20年中都没有多大的改变,它正迅速地成为计算机科学课程中的中心环节。
在20世纪90年代,作为GNU项目或其它开放源代码项目标一部分,许多免费编译器和编译器开发工具被开发出来。这些工具可用来编译所有的计算机程序语言。它们中的一些项目被认为是高质量的,而且对现代编译理论感兴趣的人可以很容易的得到它们的免费源代码。
大约在1999年,SGI公布了他们的一个工业化的并行化优化编译器Pro64的源代码,后被全世界多个编译器研究小组用来做研究平台,并命名为Open64。Open64的设计结构好,分析优化全面,是编译器高级研究的理想平台。
编译器相关专业术语:   1. compiler编译器;编译程序 2. on-line compiler 连线编译器 3. precompiler 预编译器 4. serial compiler 串行编译器 5. system-specific compiler 特殊系统编译器 6. Information Presentation Facility Compiler 信息展示设施编译器 7. Compiler Monitor System 编译器监视系统

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
手机为啥投屏不到电视上 投屏到电视机上为什么不行了呢? 什么是超买状态,如何看出—个股票处于超买状态了? 用电脑怎么弄表格在电脑上制作表格怎么制作 ...明细帐、财务报表,带公式,EXCELE格式的文件,能发给我吗谢_百度... 电脑出入库表格怎么做作为一个仓管员excel表格如何做出入库存库存电脑会... 你好,可以发下库存管理的EXCEL表格么?衣服面料辅料都要统计,谢谢!麻烦... 电脑怎么制作电子表格如何用电脑制作表格 你好,能给我发一份出纳excel 做账模板现金流水账表格 芝麻香鸡有什么值得推荐的做法? 我该怎么办【口腔溃疡,白塞病?】 我要咨询的【脑供血不足】 请分析下化验单 用什么方法能验出一个人是否携带遗传的白血病 雷士产品报价的参考大全 我叫mt2怎么升级快 《我叫MT2》公会怎么升级快 我叫mt2怎么升级快 我叫MT2升级攻略 vivo快捷小游戏怎么才能按出来 简介vivo快捷键怎么调出来 vivoy31s半屏了怎么办? 储气瓶证丢失了咋办 气瓶充装作业人员证丢了怎么办 《气瓶证》怎么补办 车用气瓶合格证丢了多少钱补办 车用气瓶使用登记证怎么补办 女人做梦梦见抓鱼是什么意思 女人做梦梦见抓鱼有什么预兆 oppoa55怎么调出来底下按键 夫妻犯六冲怎么办,夫妻犯六冲怎么化解呢 请问女天两了梦见自己与大姑姐在自己屋檐下摘柿子这是怎么回事? 一般性规范文件分为哪几类 我的理想四年级作文 梦见走在田间小路是什么意思 梦见很多人走小宅路 怎么在vivo手机上登? 昨晚梦见一只像猩猩又不像的小怪物,梦里说是什么圣物,跑到我家里来,想 ... 梦见在校园澡堂里死了好多人 梦见在澡堂洗澡别人都死了,只有我活着 梦见洗澡堂墙壁里面有女人家尸体梦见去澡堂的路上就有个女人尸体睡见... 投资移民签证助理一般做什么 签证助理是干什么的 要去面试环球雅思的签证文案助理,请问一般这样的职位会考些什么,怎么准 ... 新加坡的楼面助理是做什么的?月薪1800新币??SP签证~~~ 本人应届生,在留学机构做留学顾问助理前景怎么样,上升渠道如何,望资 ... 早鸟票和普通票的区别 手机360老是显示获取ROOT失败 360root权限获取怎么不行 手机按键怎么设置 手机按键设置的方法 一张移动卡两三个月没充话费也没用可以拿去注销嘛? 竹子怎么样开发,挖掘财富? 本人承包了三千亩竹山想开个竹子加工厂请高人指点从事哪方面加工附加...