程式設計語言的概念,程式設計語言的發展,程式設計語言的分類,常見程式語言,選擇程式設計語言的標準,選擇程式設計語言的準則,優先選取高級語言,儘量選取面向對象語言,
程式設計語言的概念
程式設計語言是人與計算機交流的工具。編寫程式的過程也稱為編程或編碼,是根據軟體分析和設計模型及要求,編寫計算機理解的運行程式的過程。目前,已經有眾多的程式設計語言,它們各具特點和適用環境與範圍,而其中只有少量的程式設計語言得到廣泛套用。因此,選擇符合軟體特徵的程式設計語言是一項重工作。
程式設計語言的發展
(1)
第一代語言。是與機器硬體密切相關的機器語言和彙編語言。從電子計算機出現時開始使用,因其與硬體操作相對應.所以其語言種類幾乎與計算機種類相同。
(3)
第三代語言。第三代語言直接支持結構化構件,並且具有很強的過程能力和數據結構能力,包括結構化語言和面向對象語言,如結構化程式語言有C等,面向對象的語言有C++、Java、Delphi等。它大致分為通用高級語言、面向對象的語言和專用語言。
(4)
第四代語言。第四代語言屬於超高級程式設計語言,雖然它與其他語言一樣用其語法形式表示控制和數據結構,但不再涉及很多算法性細節。它具有如下特徵:強大的數據管理能力,可對資料庫進行有效的存取、查詢和其他相關操作;提供一組高效的、非過程化的命令,組成語言的基本語句;可以滿足多功能、一體化的要求。目前,使用最廣泛的第四代語言是資料庫查詢語言SQL,它支持用戶以複雜的方式運算元據庫。另外,一些決策支持語言、原型語言、形式化規格說明語言,甚至計算機環境中的一些工具也被認為屬於第四代語言的範疇。
程式設計語言的分類
程式設計語言種類很多,可從不同的角度對其進行分類。
1)以語言層次可分為面向機器的語言和面向問題的語言。
(1)面向機器的語言。依賴於具體的機器硬體結構,其語句和計算機的硬體操作相對應,包括機器語言和彙編語言。機器語言由二進制的0、1代碼指令系統構成,它是計算機唯一可以直接識別和執行的語言。其指令系統因機器而異,不同機器具有不同的機器語言,這類語言難學難記。彙編語言是符號化的機器語言,語句符號與機器指令直接對應,雖然其易讀性、易理解性相對機器語言已經有了很大的改善.但依然編寫出的程式難讀、難維護、易出錯、通用性差,因此,一般不套用於上層套用軟體開發。面向機器的語言具有可直接訪問系統接口、程式運行效率高等優點,可在某些特殊領域或需要的環境中使用。
(2)面向問題的語言。面向問題的語言也稱為高級語言,這類語言脫離了具體機器的硬體環境的限制,直接面向所要解決的套用問題。高級語言使用的概念和符號與自然語言比較相近,便於掌握和理解,並具有通用性強、編程效率高、代碼可閱讀性強、易於修改和維護等特點,因而在現代軟體開發過程中被廣泛使用。
2)以語言適用性可分為通用語言和專用語言
(2)專用語言。專用語言是為了某種特殊套用而設計的具有獨特語法形式的語言。它局限於某些特殊的套用領域,套用範圍比較窄。如APL—Array Processing Language是為數組和向量運算設計的簡潔而功能很強的語言,卻幾乎不提供結構化的控制結構和數據類型。
3)以語言面向分為面向過程的語言和面向對象的語言。
(1)面向過程的語言。面向過程的語言即傳統的結構化程式設計語言,該類語言強調程式設計算法和數據結構,基本思想可概括為程式等於數據結構加上算法,如C語言等。
(2)面向對象的語言。面向對象的語言是目前最為流行的一類高級語言。它引入了現實生活中對象的觀念,提供了封裝、繼承、多態、訊息等機制。這類語言有Small Talk、
C++、
Java和
C#等。
4)高級語言的常見分類
(1)從套用特點分,高級語言又可分為通用語言、現代語言和專用語言三類。
①通用語言。它們的特點是出現早、套用廣泛。有大量軟體庫,為最廣泛的人所熟悉和接受。屬於這類語言的有BASIC、FORTRAN、COBOL和ALGOL等。這些語言創始於20世紀50年代或20世紀60年代,部分性能已老化。
②現代語言。現代語言也稱為結構化語言。其特點是直接提供結構化的控制結構,具有很強的過程能力和數據結構能力。ALGOL是最早的結構化語言,同時它又是基礎語言,由它派生出來的Pascal、C以及Ada等語言已套用在非常廣泛的領域中。
③專用語言。專用語言是指為某種特殊套用而設計的獨特語言。
(2)從語言的內在特點分.高級語言還可分為系統實現語言、靜態高級語言、塊結構高級語言和動態高級語言四類。
①系統實現語言。系統實現語言從彙編語言發展改進而來,可提供控制語句和變數類型檢驗等功能,但是同時也容許程式設計師直接對硬體進行操作。C語言就是著名的系統實現語言。
②靜態高級語言。可給程式設計師提供控制語句和變數說明的機制,但是程式設計師不能直接控制由編譯程式生成的機器操作。其特點是靜態地分配存儲。這種存儲分配方法雖方便了編譯程式的設計和實現,但對使用這類語言的程式設計師施加了較多限制。因為這類語言是第一批出現的高級語言.所以使用非常廣泛.其中FORTRAN和COBOL仍然在某些領域使用。
③塊結構高級語言。其特點是提供有限形式的動態存儲分配,存儲管理系統支持程式運行,每當進入或退出程式塊時。存儲管理系統分配存儲或釋放存儲。程式塊是程式中界限分明的區域,每當進入一個程式塊時就中斷程式執行,以便分配存儲,如Pascal和ALGOL等。
④動態高級語言。其特點是動態地完成所有存儲管理,即執行個別語句可能引起分配存儲或釋放存儲。一般地說,這類語言的結構和靜態的或塊結構的高級語言的結構不同,實際上這類語言中任何兩種語言的結構彼此間很少類似。這類語言一般是為特殊套用而設計的,不屬於通用語言。
常見程式語言
常用程式語言具有其各自的特點。
(1)C語言。既具有高級語言的特徵,又具有低級語言的功能,被廣泛套用於系統軟體、嵌入式套用軟體。
(2)C++語言。在C語言基礎上發展起來的一種面向對象編程,C++提供了類、多態、異常處理、模板、標準類庫等。C++既融合了面向對象的能力,又與C語言兼容,保留了C語言的許多重要特性。維護了大量已開發的C庫、C工具以及C源程式的完整性。
(3)Objective—C語言。它是在C語言的基礎上.加入面向對象特性擴充而成的通用型高級程式語言。主要套用於Mac OS X和iOS系統及其相關API(如Cocoa、Cocoa Touch)的開發,目前主要支持的編譯器有GCC與Clang。
(4)Java語言。作為一種面向對象編程,其語法結構與C++類似。Java在虛擬機上運行,通過為不同的平台提供虛擬機,實現了Java跨平台的特性。Java被廣泛套用於伺服器端程式和移動設備程式中。
(5)C#語言。C#語言是一種完全面向對象的語言,是主要套用在.NET平台上的編程浯言。
(6)PHP語言。PHP為Personal Home Page的縮寫,最初只是一套簡單的Perl腳
本,用於跟蹤訪問主頁的用戶的信息。目前PHP提供了大量用於構建動態網站的功能,成為Web伺服器端的程式主流程式語言。
(7)Python。一種互動式的、面向對象、跨平台的解釋語言。
(8)
VB與VB.NET語言。VB是一種
面向對象、可視化的程式語言。用於開發Windows桌面應用程式和Web應用程式。Visual Basic.NET是下一代的Visual Basic,它基於VB並被重新沒計以便使更加容易開發基於網路的分散式套用。
(9)JavaScript是一種解釋性的腳本語言,功能強大,主要用於實現Web頁面客戶端功能。
選擇程式設計語言的標準
選擇程式設計語言的準則
選擇程式語言主要考慮的因素和準則包括以下幾個方面。
(1)適合軟體套用領域。應儘量選取適合軟體具體處理業務的套用領域的語言。
(2)適合軟體運行環境。要選取機器上能運行且具有相應支持軟體的語言。
(3)軟體開發人員熟悉。主要知識水平以及心理因素包括:開發人員的專業知識,掌握程式設計的能力水平等;開發人員對某種語言或工具的熟悉程度。應特別注意選擇語言時,儘量避免受外界的影響,一味追求新語言。
(4)有助於性能實現。主要結合軟體T程具體性能要求考慮,如果實時系統對回響速度有特殊要求,就應選擇C語言等。
(5)算法和計算複雜性簡便。可根據不同語言的特點,選取能夠適應軟體項目算法和計算複雜性的語言,並儘量簡便。
(6)數據結構的複雜性低。要根據不同語言構造數據結構類型的能力選取合適的語言。
優先選取高級語言
由於一種程式語言無法滿足軟體的各種需求,所以在選擇與評價時,先查看問題需求,權衡其要求及其重要性,然後有針對性地根據其特性選取程式設計語言。合適的程式設計語言可使編程簡便、測試量少、閱讀和維護容易。
通常優先選擇高級語言,主要是因為高級語言明顯優於低級語言。用高級語言編寫程式比用彙編語言生產率提高几倍甚至十幾倍。高級語言使用的符號和概念更符合人們的習慣。高級語言一般都允許用戶給程式變數和子程式賦予含義鮮明的名字。通過名字很容易將程式對象與其所代表的實體進行聯繫。所以,用高級語言編寫的程式更容易閱讀、測試、調試和維護。只在以下一些特殊的套用領域才放棄選用:對程式執行時間和使用空間都有很嚴格限制的情況;需要產生任意的甚至非法的指令序列;體系結構特殊的微處理機,以致在這類機器上通常不能實現高級語言編譯程式;執行高級語言編譯的程式,執行時間效率非常關鍵的部分代碼。
儘量選取面向對象語言
面向對象編程方法是目前主流的且最有發展前景的程式設計方法。選擇面向對象語言的關鍵是語言的一致表達能力、可重用性及可維護性。而且,便於實現面向對象技術。從面向對象的角度看,能夠更完整、更準確地表達問題域語義的面向對象語言的語法是非常重要的開發人員在選擇面向對象語言時,還應著重考慮以下實際因素。
(1)可重用性。採用面向對象方法開發軟體的基本目的和主要優點,是通過重用提高軟體生產率,因此,應優先選用能最完整、最準確地表達問題域語義的面向對象語言。
(2)代碼重構是軟體進化的重要手段。Martin Fowler將重構定義為對軟體內部結構的修改,使之更易於理解和修改,但不改變軟體的對外可見的行為。需要重構的代碼主要包括如下:
①重複代碼。重複的代碼不僅影響運行速度,而且需要重複修改。
②函式過長。在面向對象的編程中,函式通常不需要超過一屏。如果出現這種情況,可能是因為使用了過程化編程方式。
③循環過長或嵌套過深。最好將過長循環體變成獨立函式,可有效降低循環的複雜度。
④類的內聚性差。若發現某類是一些不相關的功能集合,可將此類分解成多個類,每個類包括一個邏輯桐關的功能集合。
⑤方法傳遞過多參數。通常很好抽象的函式應較簡短,不應有過多參數。
(3)類庫和開發環境。將語言、開發環境和類庫3個因素綜合,共同決定可重用性。考慮類庫時,不僅應考慮類庫的提供,還應考慮類庫中提供了哪些有價值的類。在開發環境中,還應提供使用方便的具有強大聯想功能的類庫編輯工具和瀏覽工具。
(4)適應發展趨勢。未來仍處於主導地位,不會很快被淘汰。
(5)其他因素。具有面向對象分析、設計和編程技術所能提供的培訓服務;在使用面向對象語言期間能提供售後服務;能提供給開發人員使用的開發T具、開發平台、發行平台;對機器性能和記憶體的需求;集成已有軟體的容易程度等。