程式設計語言
出自 MBA智库百科(https://wiki.mbalib.com/)
程式設計語言(PDL/Programming Language)
目錄 |
什麼是程式設計語言[1]
程式設計語言是用於書寫電腦程式的語言。語言的基礎是一組記號和一組規則。根據規則由記號構成的記號串的總體就是語言。在程式設計語言中,這些記號串就是程式。程式設計語言有3個方面的因素,即語法、語義和語用。語法表示程式的結構或形式,亦即表示構成語言的各個記號之間的組合規律,但不涉及這些記號的特定含義,也不涉及使用者。語義表示程式的含義,亦即表示按照各種方法所表示的各個記號的特定含義,但不涉及使用者。
程式設計語言是指用來編譯、解釋、處理各種程式時所使用的機器語言,它包括彙編語言、解釋程式、編譯程式及高級語言等,如Visual Basic(簡稱VB)、Visual C++(簡稱VC)、Delphi等。
程式設計語言的發展[2]
程式設計語言是人們為了描述計算過程而設計的一種具有語法語義描述的記號。程式設計語言與現代電腦共同誕生、共同發展,至今已有60餘年的歷史,早已形成了規模龐大的家族。進入20世紀80年代以後,隨著電腦的日益普及和性能的不斷改進,程式設計語言也相應得到了迅猛發展。
最早的第一代程式設計語言是機器語言。機器語言是一種用二進位代碼“0”和“1”表示的、能被電腦直接識別和執行的語言,它是一種低級語言。用機器語言編寫的程式稱為電腦機器語言程式,這種程式不便於記憶、閱讀和書寫。每一種機器都有自己的機器語言,即電腦指令系統,因此沒有通用性。
第二代程式設計語言是彙編語言。彙編語言是一種用助記符表示的面向機器的程式設計語言,即符號化的機器語言,如用助記符ADD表示加法、STORE表示存數操作等。用彙編語言編製的程式稱為彙編語言程式,機器不能直接識別和執行,必須由彙編程式翻譯成機器語言程式(目標程式)才能運行。彙編語言適用於編寫直接控制機器操作的底層程式,它與機器類型密切相關。因此,機器語言和彙編語言都是面向機器的語言,一般稱為低級語言。
第三代程式設計語言是所謂的高級語言。高級語言是一種比較接近自然語言和數學表達式的電腦程式設計語言,是“面向用戶的語言”。一般用高級語言編寫的程式稱為“源程式”,電腦不能直接識別和執行,必須把用高級語言編寫的源程式翻譯成機器指令才能執行,通常有編譯和解釋兩種方式。編譯是將源程式整個編譯成目標程式,然後通過連接程式將目標程式連接成可執行程式。解釋是將源程式逐句翻譯,翻譯一句執行一句,邊翻譯邊執行,不產生目標程式,由電腦執行解釋程式自動完成。
1956年由美國科學家John Backus領導的小組設計的FORTRAN語言是高級語言的開端,由於它的簡潔和高效,成為此後幾十年科學和工程計算程式開發的主流語言。但FORTRAN是面向電腦專業人員的語言,為了普及電腦語言,使電腦應用更為大眾化,之後又出現了BASIc語言。
隨著電腦技術的發展和應用的深入,在20世紀70年代,由結構化程式設計的思想孵化出了兩種結構化程式設計語言:Pascal和C。其中Pascal語言強調可讀性,使其至今仍為學習演算法和數據結構等軟體基礎知識的首選教學語言;而C語言強調語言的簡潔和高效,使之成為幾十年中主流的軟體開發語言。
隨著面向對象程式設計思想的普及,20世紀80年代,由AT&T貝爾實驗室在C語言的基礎上設計並實現的c++語言成為眾多面向對象語言中的代表。隨後,c++和其他高級語言如BAsIC、Pascal等,結合可視化的界面編程技術、面向對象思想及資料庫技術,產生了所謂的第四代語言——面向對象語言,如Ⅵsual Basic、Delphi、Visual c++、c++Builder等。
程式設計語言的分類[3]
從發展進程可分為面向機器的語言和高級語言。
(1)面向機器的語言(機器語言、彙編語言):依賴於結構,其指令系統隨機器而異、生產效率低、容易出錯、難以維護。
(2)高級語言:使用的概念和符號與人們通常使用的比較接近,一條語句往往對應若幹條機器指令,其特性不依賴於特定的電腦。
從應用特點可做如下分類:
(1)基礎語言:如Basic、FORTRAN、COBOL、ALGOL等,歷史悠久、應用廣泛。
(2)結構化語言:具有為某種特殊應用而設計的、獨特的、很強的過程能力和數據結構能力的特點,如PL/l,Pascal,C,Ada等。
(3)專用語言:具有為某種特殊應用而設計的獨特語法形式,應用範圍較寬,如APL(數據和向量運算)、BLISS(開發編譯程式和操作系統)、FORTH(開發微處理機軟體)、LISP和Prolog(適合於人工智慧領域)。
從語言的內在特點可做如下分類:
(1)系統實現語言:提供控制語句和變數類型檢測等功能,同時允許程式員直接使用機器操作,如C。
(2)靜態高級語言:提供某些控制語句和變數說明的機制,但程式員不能直接控制,由編譯程式生成的機器操作,靜態分配存儲,如COBOL、FORTH。
(3)塊結構高級語言:提供有限的動態存儲分配,如ALGOL、Pascal。
(4)動態高級語言:動態地完成所有存儲管理,即執行個別語句可能分配或釋放存儲,如某些專用語言。
(5)甚高級語言(4GL):以數據或知識為基礎,以對集合的處理代替對單個記錄或元素的處理,能支持對大型資料庫進行高效處理的機制,如SQL。
程式設計語言的特性[3]
程式設計語言具有心理工程及技術等特性。
(1)心理特性:歧義性、簡潔性、局部性、順序性、傳統性。
(2)工程特性:可移植性,開發工具的可利用性,軟體的可重用性、可維護性。
(3)技術特性:支持結構化構造的語言有利於減少程式環路的複雜性,使程式易測試、易維護。
程式設計語言的選擇[3]
程式設計語言特點不同,適用領域也不同,以下從不同角度介紹選擇的方法。
1、項目的應用領域
(1)科學工程計算。需要大量的標準庫函數,以便處理複雜的數值計算,可供選用的語言有FORTRAN語言、C語言等。
(2)數據處理與資料庫應用。SQL為IBM公司開發的資料庫查詢語言,4GL稱為第4代語言。
(3)實時處理。實時處理軟體一般對性能的要求很高,可選用的語言有彙編語言、Ada語言等。
(4)系統軟體。如果編寫操作系統、編譯系統等系統軟體時,可選用彙編語言、C語言、Pascal語言和Ada語言。
(5)人工智慧。如果要完成知識庫系統、專家系統、決策支持系統、推理工程、語言識別、模式識別等人工智慧領域內的系統,應選擇Prolog、Lisp語言。
2、軟體開發的方法
有時編程語言的選擇依賴於開發的方法,如果要用快速原型模型來開發,要求能快速實現原型,因此宜採用4GL。如果是面向對象方法,宜採用面向對象的語言編程。
3、軟體執行的環境
良好的編程環境不但能有效提高軟體生產率,同時能減少錯誤,有效提高軟體質量。
4、演算法和數據結構的複雜性
科學計算、實時處理和人工智慧領域中的問題演算法較複雜,而數據處理、資料庫應用、系統軟體領域的問題,數據結構.比較複雜,因此選擇語言時可考慮是否有完成複雜演算法的能力,或者有構造複雜數據結構的能力。
5、軟體開發人員的知識
編寫語言的選擇與軟體開發人員的知識水平及心理因素有關,開發人員應仔細地分析軟體項目的類型,敢於學習新知識,掌握新技術。