水資源系統工程

[拼音]:chengxu sheji yuyan

[英文]:programming language

用於書寫計算機程式的語言。語言的基礎是一組記號和一組規則。根據規則由記號構成的記號串的總體就是語言。在程式設計語言中,這些記號串就是程式。程式設計語言有三個方面的因素,即語法、語義和語用。語法表示程式的結構或形式,亦即表示構成語言的各個記號之間的組合規律,但不涉及這些記號的特定含義,也不涉及使用者。語義表示程式的含義,亦即表示按照各種方法所表示的各個記號的特定含義,但不涉及使用者。語用表示程式與使用者的關係。

語言的好壞不僅影響到程式使用是否方便,而且涉及到程式人員所寫程式的質量。

基本成分

語言的種類千差萬別。但是,一般說來,基本成分不外四種。

(1)資料成分:用以描述程式中所涉及的資料;

(2)運算成分:用以描述程式中所包含的運算;

(3)控制成分:用以表達程式中的控制構造;

(4)傳輸成分:用以表達程式中資料的傳輸。

分類

按語言級別,有低階語言和高階語言之分。低階語言包括字位碼、機器語言和組合語言。它的特點是與特定的機器有關,功效高,但使用複雜、繁瑣、費時、易出差錯。其中,字位碼是計算機唯一可直接理解的語言,但由於它是一連串的字位,複雜、繁瑣、冗長,幾乎無人直接使用。機器語言是表示成數碼形式的機器基本指令集,或者是操作碼經過符號化的基本指令集。組合語言是機器語言中地址部分符號化的結果,或進一步包括巨集構造。

高階語言的表示方法要比低階語言更接近於待解問題的表示方法,其特點是在一定程式上與具體機器無關,易學、易用、易維護。當高階語言程式翻譯成相應的低階語言程式時,一般說來,一個高階語言程式單位要對應多條機器指令,相應的編譯程式所產生的目標程式往往功效較低。

按照使用者要求,有過程式語言和非過程式語言之分。過程式語言的主要特徵是,使用者可以指明一列可順序執行的運算,以表示相應的計算過程。例如,FORTRAN,COBOL,ALGOL60等都是過程式語言。非過程式語言的含義是相對的,凡是使用者無法指明表示計算過程的一列可順序執行的運算的語言,都是非過程式語言。著名的例子是表格的生成程式(RPG)。它實質上不是語言,使用者只須指明輸入和預期的輸出,無須指明為了得到輸出所需的過程。

按照應用範圍,有通用語言和專用語言之分。目標非單一的語言,稱為通用語言,例如 FORTRAN、COBOL、ALGOL60 等都是通用語言。目標單一的語言稱為專用語言,如APT等。

按照使用方式,有互動式語言和非互動式語言之分。具有反映人-機互動作用的語言成分的稱為互動式語言,如BASIC語言就是互動式語言。語言成分不反映人-機互動作用的稱非互動式語言,如FORTRAN、COBOL、ALGOL60、PASCAL等都是非互動式語言。

按照成分性質,有順序語言、併發語言和分佈語言之分。只含順序成分的語言稱為順序語言,如 FORTRAN、COBOL 等都屬順序語言。含有併發成分的語言稱為併發語言,如併發PASCAL、MODULA和ADA等都屬併發語言。考慮到分佈計算要求的語言稱為分佈語言,如MODULA*便屬分佈語言。

傳統的程式設計語言大都以·諾伊曼式的計算機為設計背景,因而又稱為諾伊曼式語言。J.巴克斯於1977年提出的函式式語言,則以非諾伊曼式的計算機為設計背景,因而又稱為非諾伊曼式語言。

主要語言舉例

(1)APT(Automatically Program-med Tools)──自動數控程式:第一個專用語言,用於數控機床加工,1956。

(2)FORTRAN(FORmula TRANslation)──公式翻譯程式設計語言:第一個廣泛使用的高階語言,為廣大科學和工程技術人員使用計算機創造了條件,1956。

(3)FLOW-MATIC:第一個適用於商用資料處理的語言,其語法與英語語法類似,1956。

(4)IPL-V(Information Processing Language V)──資訊處理語言-V:第一個表處理語言,可看成是一種適用於表處理的假想計算機上的組合語言,1958。

(5)COMIT(COmpilerMassachusetts Institute of Technology)──馬薩諸塞州理工學院編譯程式:第一個現實的串處理和模式匹配語言,1957。

(6)COBOL(COmmonBusinessOrientedLan-guage)──面向商業的通用語言:使用最廣泛的商用語言,1960。

(7)ALGOL60(ALGOrithmic Language 60)──演算法語言60:程式設計語言由技藝轉向科學的重要標誌,其特點是區域性性、動態性、遞迴性和嚴謹性,1960。

(8)LISP(LISt Processing)──表處理語言:引進函式式程式設計概念和表處理設施,在人工智慧的領域內廣泛使用,1960。

(9)JOVIAL(Jules Own Version of IAL)──國際演算法語言的朱爾斯文字:第一個具有處理科學計算、輸入-輸出邏輯資訊、資料儲存和處理等綜合功能的語言。多數JOVIAL編譯程式都是用JOVIAL書寫的,1960。

(10)GPSS(General-Purpose Systems Simulator)──通用系統模擬語言:第一個使模擬成為實用工具的語言,1961。

JOSS(Johnniac Open-Shop System)──瓊尼阿克開放系統:第一個互動式語言,它有很多方言,曾使分時成為實用,1964。

FORMAC (FORmulaMAnipulationCompiler)──公式處理編譯程式:第一個廣泛用於需要形式代數處理的數學問題領域內的語言,1964。

SIMULA (SIMUlation LAnguage)──模擬語言:主要用於模擬的語言,是ALGOL60的擴充,1966。SIMULA67是1967年SIMULA的改進。其中引進的“類”概念,是現代程式設計語言中“模組”概念的先聲。

APL/360 (A Programming Language)──程式設計語言360:一種提供很多高階運算子的語言,可使程式人員寫出甚為緊湊的程式,特別是涉及到矩陣計算的程式,1967。

PASCAL(PhilipsAutomatic Sequence CAL-culator)──菲利浦自動順序計算機語言:在ALGOL60的基礎上發展起來的重要語言,其最大特點是簡明性與結構化,1971。

PROLOG(PROgramming in LOGic):一種處理邏輯問題的語言。它已廣泛用於關係資料庫、數理邏輯、抽象問題求解、自然語言理解等多種領域,1973。

ADA:一種現代模組化語言,屬於ALGOL-PASCAL語言族,但有較大變動。其主要特徵是強型別化和模組化,便於實現個別編譯,提供類屬設施,提供異常處理,適於嵌入式應用,1979。

除了上面列舉的語言外,還有一些較為通用的語言,特別是BASIC、PL/1、SNOBOL、ALGOL68等。BASIC雖然簡單易學,使用廣泛,但其中沒有什麼新概念,而且並不是第一個互動式語言。PL/1的設計思想來源於JOVIAL,其功能來源於FORTRAN、COBOL、ALGOL60,具有中斷表處理等設施。SNOBOL是一種好的語言,對COMIT中若干概念做了明顯的改進。ALGOL68在語言成分和描述方法方面雖有所創新,但應用尚不廣泛。

發展趨勢

程式設計語言是軟體的重要方面。它的發展趨勢是模組化、簡明性和形式化。

(1)模組化:不僅語言具有模組成分,程式由模組組成,而且語言本身的結構也是模組化的。

(2)簡明性:涉及的基本概念不多,成分簡單,結構清晰,易學易用。

(3)形式化:發展合適的形式體系,以描述語言的語法、語義、語用。

參考書目

徐家福:《系統程式設計語言》,科學出版社,北京,1983。

J.E.Sammet, Programming Languages:History andFundamentals,Prentice Hall, Englewood Cliffs,New Jersey,1969.