複製鏈接
請複製以下鏈接發送給好友

語言處理系統

鎖定
程序設計語言處理系統隨被處理的語言及其處理方法和處理過程的不同而異。不過,任何一個語言處理系統通常都包含有一個翻譯程序,它把一種語言的程序翻譯成等價的另一種語言的程序。被翻譯的語言和程序分別稱為源語言源程序,翻譯生成的語言和程序分別稱為目標語言和目標程序
中文名
語言處理系統
外文名
Language processing system
功    能
對軟件語言進行處理的程序子系統
對    象
機器語言

語言處理系統簡介

除了機器語言外,其他用任何軟件語言書寫的程序都不能直接在計算機上執行,都需要對它們進行適當的處理。語言處理系統的作用是把用軟件語言書寫的各種程序處理成可在計算機上執行的程序,或最終的計算結果,或其他中間形式。
不同級別的軟件語言有不同的處理方法和處理過程。關於需求級、功能級、設計級和文檔級軟件語言的處理方法和處理過程是軟件語言、軟件工具和軟件開發環境的重要研究內容之一。關於實現級語言即程序設計語言的處理方法和處理過程發展較早,技術較為成熟,其處理系統是基本軟件系統之一。這裏,語言處理系統僅針對程序設計語言的處理而言。關於需求級、功能級、設計級、和文檔級語言的處理請參見需求定義語言,功能定義語言,設計性語言,軟件過程和軟件工具。
按照不同的源語言、目標語言和翻譯處理方法,可把翻譯程序分成若干種類。從彙編語言機器語言的翻譯程序稱為彙編程序,從高級語言到機器語言或彙編語言的翻譯程序稱為編譯程序。按源程序中指令或語句的動態執行順序,逐條翻譯並立即解釋執行相應功能的處理程序稱為解釋程序。除了翻譯程序外,語言處理系統通常還包括正文編輯程序宏加工程序,連接編輯程序和裝入程序等。

語言處理系統發展過程

隨着程序設計語言的變化和發展,語言處理系統也跟着由小到大、由簡單到複雜的變化和發展。最初人們直接用機器語言來描述問題的解法,這種程序無需任何處理就能直接在計算機上運行。但是這樣的編程方式太繁瑣,極易出錯,效率極低,是非常不可取的。
在計算機發展的早期,人們就在努力設法改變這種編程方式。開始時傾向於準備好一個由一些常用的例程程序組成的庫,並借用一些代碼來引用該庫中的例行程序。後來改用一些字符或語言來表示這些代碼,這樣就成了符號語言的雛形。在此基礎上,人們努力使機器語言符號化。機器語言發展成了彙編語言。語言的這一發展導致要求有一翻譯程序彙編語言程序翻譯成機器語言程序,這種翻譯程序稱為彙編程序
緊隨彙編語言和彙編程序之後發展的是自動編譯器。在自動編譯器中,程序人員用的語言更接近通常的數學表示體系。20世紀50年代初出現的第一批自動編譯器都十分初步,它們只允許簡單的單目運算數據元素的命名方式有很多限制,然而它們促進了對高級語言處理系統和通用的翻譯過程的研究。 20世紀50年代中期出現了FORTRAN等一批高級語言,與此相適用的語言處理程序解釋程序編譯程序也相繼開發成功。
隨着編譯技術的進步和社會對編譯程序需求的不斷增長,50年代末有人開始研究編譯程序的自動生成工具,提出並研製編譯程序的編譯程序,它的功能是從任一語言的詞法規則、語法規則和語義解釋出發,自動產生該語言的編譯程序。研製一個功能完全且實用的編譯程序的編譯程序是很困難的。多數編譯程序的編譯程序都是一些專用編程序生成系統,如自動生成詞法分析程序的掃描程序生成系統,自動生成語法分析程序的語法分析程序生成系統。
60年代起,不斷有人開始使用自展技術來構造編譯程序。自展的主要特徵是用被編譯的語言來書寫該語言自身的編譯程序。自展的思想最早在50年代中間就有人提出,到1971年,PASCAL的編譯程序用自展技術生成後,其影響越來越大。
隨着並行技術和並行語言的發展,處理並行語言的並行編譯技術正在深入研究之中,將串行程序轉換成並行程序的自動並行編譯技術也正在深入研究之中。

語言處理系統分類

按照處理方法,語言處理系統可分為編譯型解釋型和混合型三類。
編譯型語言處理系統是採用編譯方法的語言處理系統。解釋型語言處理系統是採用解釋方法的語言處理系統。混合型語言處理系統是兼有編譯和解釋兩種方法的語言處理系統。
多數高級語言都有一些不能在編譯時刻確定而要到運行時刻才能確定的特性。因此,與這些特徵相關聯的語言成分等價的目標代碼在編譯時刻不能全部生成,需要到運行時才能全部生成。這些語言成分只能採用解釋方法處理。多數解釋程序都是先對源程序進行處理,把它轉換成某種中間形式,然後對中間形式的代碼進行解釋,而不是直接對源程序進行解釋。這就是説,多數高級語言處理系統既非純編譯型,也非純解釋型,而是編譯和解釋混合型。

語言處理系統基本內容

程序設計語言處理系統主要包括正文編輯程序宏加工程序編譯程序彙編程序解釋程序、連接編輯程序、裝入程序、編譯程序的編譯程序、自編譯程序交叉編譯程序和並行編譯程序等。
正文編輯程序用於創建和修改源程序正文文件。一個源程序正文可以編輯成一個文件,也可以分成多個模塊編輯成若干個文件。用户可以使用各種編輯命令通過鍵盤、鼠標器等輸入設備輸入要編輯的元素或選擇要編輯的文件,正文編輯程序根據用户的編輯命令來創建正文文件,或對文件進行各種刪除、修改、移動、複製及打印等操作。
宏加工程序把源程序中的宏指令擴展成等價的預先定義的指令序列。對源程序進行編譯之前應先對源程序進行宏加工。
編譯程序把用高級語言書寫的程序翻譯成等價的機器語言程序或彙編語言程序。變異過程可分為分析和綜合兩個部分。分析部分包括詞法分析語法分析語義分析三步。分析的目的是檢察源程序的語法和語義的正確定,並建立符號表、常數表和中間語言程序等數據對象。綜合的目的是為源程序中的常數、變量數組等各種數據對象分配存儲空間,並將分析的結果綜合成可高效運行的目標程序彙編程序把用彙編語言書寫的程序翻譯成等價的機器語言程序。
解釋程序按源程序中語句的動態執行順序,從頭開始,翻譯一句執行一句,再翻譯一句再執行一句,直至程序執行終止。和編譯方法根本不同的是,解釋方法是邊翻譯邊執行,翻譯和執行是交叉在一起的,而編譯方法卻把翻譯和執行截然分開,先把源程序翻譯成等價的機器語言程序,這段時間稱為編譯時刻,然後再執行翻譯成的目標程序,這段時間稱為運行時刻。正因為解釋程序是邊翻譯邊執行,所以要把源程序及其所處理的數據一起交給解釋程序進行處理。
編譯方法和解釋方法各有優缺點。編譯方法的最大優點是執行效率高,缺點是運行時不能與用户進行交互,因此比較適用於些規模較大或運行時間較長或要求運行效率較高的程序的語言,更適用於寫機器或系統軟件和支撐軟件的語言。解釋方法的優點是解釋執行時能方便的實現與用户進行交互,缺點是執行效率低,因此比較適用於交互式語言。
連接編輯程序將多個分別編譯或彙編過的目標程序段組合成一個完整的目標程序。組合成的目標程序可以是能直接執行的二進制程序,也可以是要再定位的二進制程序。
裝入程序將保存在外存介質上的目標程序以適於執行的形式裝入內存並啓動執行。
編譯程序的編譯程序是產生編譯程序的編譯程序。他接受用某種適當的表示體系描述的某一語言類中任意語言A的詞法規則、語法規則、語義規則和(或)代碼生規則,並從這些描述產生出用目標語言B寫的關於語言A的全部或部分編譯程序。這樣便可顯著提高編譯程序的開發效率。
自編譯程序是用被編譯的語言即源語言自身來書寫的編譯程序。利用自變異技術,可以從一具有自編譯能力的語言L的一個足夠小的子集L0的編譯程序出發,逐步構造出L的編譯程序,也可從L的未優化的編譯程序出發,構造優化的編譯程序。
交叉編譯程序是一種編譯程序,它自身在甲機器上運行,生成的目標代碼是乙機器的代碼。
並行編譯程序是並行語言的編譯程序,或是將串行語言程序並行化的編譯程序,後者又稱為自動並行編譯程序。
一個程序特別是中、大規模的程序難免沒有錯誤。發現並排除源程序中的錯誤是語言處理系統的任務之一。通常源程序的語法錯誤和靜態語義錯誤都是由編譯程序或解釋程序來發現的。排錯能力的大小是評價編譯程序和解釋程序優劣的重要標誌之一。源程序中的動態語義錯誤通常要藉助於在語言中加入某些排錯設施如跟蹤、截斷來發現和排除。處理排錯設施的程序是排錯程序。

語言處理系統瓶頸所在

語言處理系統對於機器翻譯的質量尤為重要。事實上,不論哪種翻譯處理方法,影響機譯發展的最大因素在於譯文的質量。就已有的成就來看,機譯的質量離終極目標仍相差甚遠。
中國數學家、語言學家周海中曾在論文《機器翻譯五十年》中指出:要提高機譯的質量,首先要解決的是語言本身問題而不是程序設計問題;單靠若干程序來做機譯系統,肯定是無法提高機譯質量的。同時,他還指出:在人類尚未明瞭“人腦是如何進行語言的模糊識別和邏輯判斷”的情況下,機譯要想達到“信、達、雅”的程度是不可能的。這也是制約機譯質量提高的一大瓶頸。 [1] 

語言處理系統展望

語言處理系統的發展與軟件語言、軟件工程和軟件技術的發展緊密相連,相互影響,相互促進。隨着軟件語言和軟件技術向可視化多媒體、並行化、智能化、自然化和自動化等方面發展,語言處理系統也向着這些方面發展。
參考資料