什么是自动程序设计?

什么是自动程序设计?,第1张

什么是自动程序设计?

[拼音]:zidong chengxu sheji

[外文]:automatic programming

原指采用自动化手段进行程序设计的技术和过程,后引伸为在软件研制过程中将仍由人工进行的某些阶段加以自动化的过程和所采用的技术。这一概念的含义是逐渐发展变化的。软件的研制由提出问题开始,经历需求定义、设计、程序编写、测试诸阶段。这些阶段是一系列描述的演变,从最初的问题描述,逐步精化,直至能用某一特定语言描述如何实现这一目标。自动程序设计旨在使这一转换过程自动化,使程序设计者以更自然、更高级的语言告诉计算机要做什么,而不必细致地规定如何去做。利用自动程序设计系统,可以在设计过程中减少许多错误,提高所要实现的系统的可靠性,并在这个系统的整个生存周期中有效地利用时间、人力和机器等各种资源。

在计算机技术发展初期,编译程序的出现被认为是自动程序设计方面的一大进展。1956年,美国国际商业机器公司(IBM)建立的第一个编译程序FORTRAN就曾被称为自动程序设计系统。

随着技术的进步,自动程序设计的内容在不断变化。已建立的实验系统包括规格说明、目标语言、问题范围和采用方法四方面基本内容。

规格说明

解决的问题是:以某种方式告知计算机,所需要的是什么样的程序,要求这一程序做什么。提交规格说明的方式有如下三种。

(1)形式规格说明:可以认为是由一种超高级的程序语言书写的文件。这种语言的语法和语义是精确的、无歧义的,精确而完全地指出程序所要做的工作。一般形式规格说明通常不采用人-机交互对话方式,个别系统也有例外。

(2)示例陈述:试图通过足够多的例子表明某一程序所要做的工作。系统根据这些例子自动构造出符合这些要求的程序。陈述中可包括程序的输入-输出性能,也可包括程序对某一输入的处理轨迹。这种方法还存在不少困难,方法很少是完备的。因为仅仅通过若干个例子,并不能充分描述在所有情况下程序的性态。

(3)自然语言:用户使用自然语言陈述程序要做的工作。这种方法常采用交互对话方式。

目标语言

自动程序设计系统用以表示最后构造成的程序的语言。有一些系统往往采用如LISP、PL/I、GPSS等高级语言作为目标语言。

问题范围

所欲生成的程序应用的范围。例如NLPQ系统处理的问题都是有关排队方面的程序;PSI系统处理的则是有关符号计算(包括表处理、搜索和排列、数据的存放和检索等)。问题范围与规格说明有关,并对系统采用的方法有很大影响。

采用方法

各种实验系统采用的方法不尽一致,可归纳为下列几个方面。

(1)定理证明:对要生成的程序,用户给出它的输入、输出数据必须满足的条件。条件以某种形式语言(如谓词演算)陈述。对于所有这些满足条件的输入,要求定理证明程序给出证明,即证明存在一个满足输出条件的输出,从该证明中析取出所欲生成的程序。

(2)程序转换:研究如何将某一程序的规格说明或描述等价转换为另一种描述。转换的目的是将一个用超高级语言(容易写)的程序,转换为用低级(易于实现)的语言表示的程序。

(3)知识工程:这种方法同样适用于自动程序设计以外的人工智能的许多应用范围。它涉及到知识识别和编码问题,通常是指将一些有关的知识以一种特殊的规则形式的数据结构加以表示,以便加入知识库或从知识库中撤除。

(4)传统的问题求解方法:应用人工智能的一般方法以目标为指导来选择和应用一系列算子。

在自动程序设计方面已有一些不同的实验性的系统。例如,NLPQ是第一个使用自然语言对话的系统,它可以解答用户提出的有关排队模拟等方面的问题。PSI系统包括一些子系统,它强调将不同的进程和知识来源整体化,应用范围为符号程序设计 (非数值)。DEDALUS系统要求用户一开始就给出有关所需程序的完备描述。系统从一个拥有许多转换规则的知识库中,重复使用这些规则,产生一系列描述,直至最后生成目标程序。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/4724825.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-08
下一篇 2022-11-08

发表评论

登录后才能评论

评论列表(0条)

保存