中國鎢工業

[拼音]:zidong chengxu sheji

[英文]:automatic programming

原指採用自動化手段進行程式設計的技術和過程,後引伸為在軟體研製過程中將仍由人工進行的某些階段加以自動化的過程和所採用的技術。這一概念的含義是逐漸發展變化的。軟體的研製由提出問題開始,經歷需求定義、設計、程式編寫、測試諸階段。這些階段是一系列描述的演變,從最初的問題描述,逐步精化,直至能用某一特定語言描述如何實現這一目標。自動程式設計旨在使這一轉換過程自動化,使程式設計者以更自然、更高階的語言告訴計算機要做什麼,而不必細緻地規定如何去做。利用自動程式設計系統,可以在設計過程中減少許多錯誤,提高所要實現的系統的可靠性,並在這個系統的整個生存週期中有效地利用時間、人力和機器等各種資源。

在計算機技術發展初期,編譯程式的出現被認為是自動程式設計方面的一大進展。1956年,美國國際商業機器公司(IBM)建立的第一個編譯程式FORTRAN就曾被稱為自動程式設計系統。

隨著技術的進步,自動程式設計的內容在不斷變化。已建立的實驗系統包括規格說明、目標語言、問題範圍和採用方法四方面基本內容。

規格說明

解決的問題是:以某種方式告知計算機,所需要的是什麼樣的程式,要求這一程式做什麼。提交規格說明的方式有如下三種。

(1)形式規格說明:可以認為是由一種超高階的程式語言書寫的檔案。這種語言的語法和語義是精確的、無歧義的,精確而完全地指出程式所要做的工作。一般形式規格說明通常不採用人-機互動對話方式,個別系統也有例外。

(2)示例陳述:試圖通過足夠多的例子表明某一程式所要做的工作。系統根據這些例子自動構造出符合這些要求的程式。陳述中可包括程式的輸入-輸出效能,也可包括程式對某一輸入的處理軌跡。這種方法還存在不少困難,方法很少是完備的。因為僅僅通過若干個例子,並不能充分描述在所有情況下程式的性態。

(3)自然語言:使用者使用自然語言陳述程式要做的工作。這種方法常採用互動對話方式。

目標語言

自動程式設計系統用以表示最後構造成的程式的語言。有一些系統往往採用如LISP、PL/I、GPSS等高階語言作為目標語言。

問題範圍

所欲生成的程式應用的範圍。例如NLPQ系統處理的問題都是有關排隊方面的程式;PSI系統處理的則是有關符號計算(包括表處理、搜尋和排列、資料的存放和檢索等)。問題範圍與規格說明有關,並對系統採用的方法有很大影響。

採用方法

各種實驗系統採用的方法不盡一致,可歸納為下列幾個方面。

(1)定理證明:對要生成的程式,使用者給出它的輸入、輸出資料必須滿足的條件。條件以某種形式語言(如謂詞演算)陳述。對於所有這些滿足條件的輸入,要求定理證明程式給出證明,即證明存在一個滿足輸出條件的輸出,從該證明中析取出所欲生成的程式。

(2)程式轉換:研究如何將某一程式的規格說明或描述等價轉換為另一種描述。轉換的目的是將一個用超高階語言(容易寫)的程式,轉換為用低階(易於實現)的語言表示的程式。

(3)知識工程:這種方法同樣適用於自動程式設計以外的人工智慧的許多應用範圍。它涉及到知識識別和編碼問題,通常是指將一些有關的知識以一種特殊的規則形式的資料結構加以表示,以便加入知識庫或從知識庫中撤除。

(4)傳統的問題求解方法:應用人工智慧的一般方法以目標為指導來選擇和應用一系列運算元。

在自動程式設計方面已有一些不同的實驗性的系統。例如,NLPQ是第一個使用自然語言對話的系統,它可以解答使用者提出的有關排隊模擬等方面的問題。PSI系統包括一些子系統,它強調將不同的程序和知識來源整體化,應用範圍為符號程式設計 (非數值)。DEDALUS系統要求使用者一開始就給出有關所需程式的完備描述。系統從一個擁有許多轉換規則的知識庫中,重複使用這些規則,產生一系列描述,直至最後生成目標程式。