基本介紹
- 中文名:語言處理系統
- 外文名:Language processing system is a sub-system to process software language.
- 功能:對軟體語言進行處理的程式子系統
- 對象:機器語言
簡介,發展過程,分類,基本內容,瓶頸所在,展望,
簡介
除了機器語言外,其他用任何軟體語言書寫的程式都不能直接在計算機上執行,都需要對它們進行適當的處理。語言處理系統的作用是把用軟體語言書寫的各種程式處理成可在計算機上執行的程式,或最終的計算結果,或其他中間形式。
不同級別的軟體語言有不同的處理方法和處理過程。關於需求級、功能級、設計級和文檔級軟體語言的處理方法和處理過程是軟體語言、軟體工具和軟體開發環境的重要研究內容之一。關於實現級語言即程式設計語言的處理方法和處理過程發展較早,技術較為成熟,其處理系統是基本軟體系統之一。這裡,語言處理系統僅針對程式設計語言的處理而言。關於需求級、功能級、設計級、和文檔級語言的處理請參見需求定義語言,功能定義語言,設計性語言,軟體過程和軟體工具。
按照不同的源語言、目標語言和翻譯處理方法,可把翻譯程式分成若干種類。從彙編語言到機器語言的翻譯程式稱為彙編程式,從高級語言到機器語言或彙編語言的翻譯程式稱為編譯程式。按源程式中指令或語句的動態執行順序,逐條翻譯並立即解釋執行相應功能的處理程式稱為解釋程式。除了翻譯程式外,語言處理系統通常還包括正文編輯程式、宏加工程式,連線編輯程式和裝入程式等。
發展過程
隨著程式設計語言的變化和發展,語言處理系統也跟著由小到大、由簡單到複雜的變化和發展。最初人們直接用機器語言來描述問題的解法,這種程式無需任何處理就能直接在計算機上運行。但是這樣的編程方式太繁瑣,極易出錯,效率極低,是非常不可取的。
在計算機發展的早期,人們就在努力設法改變這種編程方式。開始時傾向於準備好一個由一些常用的例程程式組成的庫,並借用一些代碼來引用該庫中的例行程式。後來改用一些字元或語言來表示這些代碼,這樣就成了符號語言的雛形。在此基礎上,人們努力使機器語言符號化。機器語言發展成了彙編語言。語言的這一發展導致要求有一翻譯程式把彙編語言程式翻譯成機器語言程式,這種翻譯程式稱為彙編程式。
緊隨彙編語言和彙編程式之後發展的是自動編譯器。在自動編譯器中,程式人員用的語言更接近通常的數學表示體系。20世紀50年代初出現的第一批自動編譯器都十分初步,它們只允許簡單的單目運算,數據元素的命名方式有很多限制,然而它們促進了對高級語言處理系統和通用的翻譯過程的研究。 20世紀50年代中期出現了FORTRAN等一批高級語言,與此相適用的語言處理程式、解釋程式和編譯程式也相繼開發成功。
分類
按照處理方法,語言處理系統可分為編譯型解釋型和混合型三類。
多數高級語言都有一些不能在編譯時刻確定而要到運行時刻才能確定的特性。因此,與這些特徵相關聯的語言成分等價的目標代碼在編譯時刻不能全部生成,需要到運行時才能全部生成。這些語言成分只能採用解釋方法處理。多數解釋程式都是先對源程式進行處理,把它轉換成某種中間形式,然後對中間形式的代碼進行解釋,而不是直接對源程式進行解釋。這就是說,多數高級語言處理系統既非純編譯型,也非純解釋型,而是編譯和解釋混合型。
基本內容
正文編輯程式用於創建和修改源程式正文檔案。一個源程式正文可以編輯成一個檔案,也可以分成多個模組編輯成若干個檔案。用戶可以使用各種編輯命令通過鍵盤、滑鼠器等輸入設備輸入要編輯的元素或選擇要編輯的檔案,正文編輯程式根據用戶的編輯命令來創建正文檔案,或對檔案進行各種刪除、修改、移動、複製及列印等操作。
編譯程式把用高級語言書寫的程式翻譯成等價的機器語言程式或彙編語言程式。變異過程可分為分析和綜合兩個部分。分析部分包括詞法分析、語法分析和語義分析三步。分析的目的是檢察源程式的語法和語義的正確定,並建立符號表、常數表和中間語言程式等數據對象。綜合的目的是為源程式中的常數、變數、數組等各種數據對象分配存儲空間,並將分析的結果綜合成可高效運行的目標程式。彙編程式把用彙編語言書寫的程式翻譯成等價的機器語言程式。
解釋程式按源程式中語句的動態執行順序,從頭開始,翻譯一句執行一句,再翻譯一句再執行一句,直至程式執行終止。和編譯方法根本不同的是,解釋方法是邊翻譯邊執行,翻譯和執行是交叉在一起的,而編譯方法卻把翻譯和執行截然分開,先把源程式翻譯成等價的機器語言程式,這段時間稱為編譯時刻,然後再執行翻譯成的目標程式,這段時間稱為運行時刻。正因為解釋程式是邊翻譯邊執行,所以要把源程式及其所處理的數據一起交給解釋程式進行處理。
編譯方法和解釋方法各有優缺點。編譯方法的最大優點是執行效率高,缺點是運行時不能與用戶進行互動,因此比較適用於些規模較大或運行時間較長或要求運行效率較高的程式的語言,更適用於寫機器或系統軟體和支撐軟體的語言。解釋方法的優點是解釋執行時能方便的實現與用戶進行互動,缺點是執行效率低,因此比較適用於互動式語言。
裝入程式將保存在外存介質上的目標程式以適於執行的形式裝入記憶體並啟動執行。
編譯程式的編譯程式是產生編譯程式的編譯程式。他接受用某種適當的表示體系描述的某一語言類中任意語言A的詞法規則、語法規則、語義規則和(或)代碼生規則,並從這些描述產生出用目標語言B寫的關於語言A的全部或部分編譯程式。這樣便可顯著提高編譯程式的開發效率。
自編譯程式是用被編譯的語言即源語言自身來書寫的編譯程式。利用自變異技術,可以從一具有自編譯能力的語言L的一個足夠小的子集L0的編譯程式出發,逐步構造出L的編譯程式,也可從L的未最佳化的編譯程式出發,構造最佳化的編譯程式。
並行編譯程式是並行語言的編譯程式,或是將串列語言程式並行化的編譯程式,後者又稱為自動並行編譯程式。
一個程式特別是中、大規模的程式難免沒有錯誤。發現並排除源程式中的錯誤是語言處理系統的任務之一。通常源程式的語法錯誤和靜態語義錯誤都是由編譯程式或解釋程式來發現的。排錯能力的大小是評價編譯程式和解釋程式優劣的重要標誌之一。源程式中的動態語義錯誤通常要藉助於在語言中加入某些排錯設施如跟蹤、截斷來發現和排除。處理排錯設施的程式是排錯程式。
瓶頸所在
語言處理系統對於機器翻譯的質量尤為重要。事實上,不論哪種翻譯處理方法,影響機譯發展的最大因素在於譯文的質量。就已有的成就來看,機譯的質量離終極目標仍相差甚遠。
中國數學家、語言學家周海中曾在論文《機器翻譯五十年》中指出:要提高機譯的質量,首先要解決的是語言本身問題而不是程式設計問題;單靠若干程式來做機譯系統,肯定是無法提高機譯質量的。同時,他還指出:在人類尚未明了“人腦是如何進行語言的模糊識別和邏輯判斷”的情況下,機譯要想達到“信、達、雅”的程度是不可能的。這也是制約機譯質量提高的一大瓶頸。