automaticprogramming
採用自動化手段進行程式設計的技術和過程。後引申為採用自動化手段進行軟體開發的技術和過程。在後一種意義上宜稱為軟體自動化。其目的是提高軟體生產率和軟體產品質量。
自動程式設計一詞具有多種涵義。按廣義的理解,自動程式設計是儘可能藉助計算機系統(特別是自動程式設計系統)進行軟體開發的過程。軟體開發指的是,從問題的非形式描述,經形式的軟體功能規格說明、設計規格說明,到可執行的程式代碼、調試,及至確認、交付使用的全過程。按狹義的理解,自動程式設計是從形式的軟體功能規格說明到可執行的程式代碼這一過程的自動化。按縱向理解,低級自動化是從軟體設計規格說明到可執行的程式代碼這一過程的自動化,系統只起程式人員的作用;中級自動化是從形式的軟體功能規格說明、設計規格說明,直到可執行的程式代碼這一過程的自動化,系統除了起程式人員的作用外,還起設計人員、系統分析人員的作用;高級自動化是從非形式的問題描述,經形式的軟體功能規格說明、軟體設計規格說明,直到可執行的程式代碼這一全過程的自動化,系統除了起程式人員、軟體設計人員、系統分析人員的作用外,還起領域專家的部分作用。按橫向理解,在上述各種縱向理解級別上,根據人工干預的程度,又可區分各種不同的自動化級別。
從關鍵技術來看,自動程式設計的實現途徑可歸結為演繹綜合、程式轉換、實例推廣,以及過程實現等4種。①演繹綜合。其理論基礎是,數學定理的構造式證明可等價於程式推導。對要生成的程式,用戶給出它的輸入、輸出數據必須滿足的條件,條件以某種形式語言(如謂詞演算)陳述。對於所有這些滿足條件的輸入,要求定理證明程式證明存在一個滿足輸出條件的輸出,從該證明中析取出所欲生成的程式。這一途徑的優點是理論基礎堅實,但迄今只析取出一些較小的樣例,較難用於較大規模的程式。②程式轉換。將一規格說明或程式轉換成另一功能等價的規格說明或程式。從抽象級別的異同來看,可區分縱向轉換與橫向轉換。前者是由抽象級別較高的規格說明或程式轉換成與之功能等價的抽象級別較低的規格說明或程式;後者是在相同抽象級別上的規格說明或程式間的功能等價轉換。③實例推廣。藉助反映程式行為的實例來構作程式。一般有兩種方法。一種是輸入/輸出對法:藉助給出一組輸入/輸出對,逐步導出適用於一類問題的程式。另一種是部分程式軌跡法:通過所給實例的運行軌跡,逐步導出程式。這一途徑的思想誘人,為用戶稱道,但欲歸納出一定規模的程式,難度頗大。④過程實現。在對應規格說明中的各個成分,其轉換目標的相應成分明確,而且相應的轉換映射也明確的前提下,該映射可藉助過程實現。目前一般採取設計甚高級語言(如SETL),其中含有全稱量詞,存在量詞等,以便於書寫軟體設計規格說明的成分。但是,SETL本身還不能算是功能規格說明語言,不能算是功能性語言。這一途徑的實現效率較高,困難點在於從非算法性成分到算法性成分的轉換。因此,迄今採用這一途徑的系統一般自動化程度不高,很難實現從功能規格說明到可執行的程式代碼的自動轉換。
相關詞條
-
程式設計基礎
《程式設計基礎》是由清華大學出版社出版發行,謝書良主編,針對從來沒有接觸過程式設計的讀者編寫的零起點入門教材。
內容簡介 作者簡介 圖書目錄 -
程式設計基礎[劉白林著作]
《程式設計基礎》是由劉白林所著,2010年03月由清華大學出版社出版的圖書。
1.圖書信息 2.圖書信息 3.圖書信息 內容提要 目錄 -
結構程式設計
結構程式設計是按照一定的原則和原理,組織和編制正確而且易讀的程式的軟體技術。
結構程式設計 正文 配圖 相關連線 -
面向對象程式設計
面向對象編程(ObjectOrientedProgramming,OOP,面向對象程式設計)是一種計算機編程架構。OOP的一條基本原則是電腦程式是由單...
基本理論 歷史 設計方法 特點 學科套用 -
ACM程式設計大賽
ACM程式設計大賽是大學級別最高的腦力競賽,素來被冠以程式設計的奧林匹克的尊稱。大賽自1970年開始至今已有40年歷史,是世界範圍內歷史最悠久、規模最大...
歷史背景 比賽目的 評分辦法 競賽規則 賽事階段 -
GoogleAndroid程式設計指南
該書介紹Android作業系統以及如何使用Android SDK進行程式設計,適用於Windows、Linux與Mac OS X三種作業系統。該書第1章...
內容簡介 目錄 -
程式設計方法與最佳化
程式設計的一般方法 程式設計的表示方法 程式設計最佳化的方法
圖書信息 作者簡介 內容簡介 目錄 -
邏輯程式設計
邏輯程式設計將邏輯直接作為程式設計語言並將計算作為受控推理的一種程式設計技術。
介紹 沿革 優點 歷史 現狀