孫汝萍
(巴音郭楞職業(yè)技術(shù)學(xué)院,新疆 庫爾勒 841000)
當(dāng)前軟件開發(fā)工作中常用的幾種編程語言有Java,C,C++,C#等。 它們的功能迥異,對軟件開發(fā)所產(chǎn)生的影響也存在顯著差異。 本研究對這幾種編程語言進(jìn)行介紹并作對比分析,深度把握其各自的特征并加以合理利用,進(jìn)而產(chǎn)生更好的軟件優(yōu)化效果。
Java 編程語言的重要特征之一是面向?qū)ο?其具有簡單性、分布式、安全性、平臺獨立與可移植性、多線程和動態(tài)性等多種特性,這些特點使其超越其他幾種編程語言,具有較大的靈活性,應(yīng)用范圍非常廣泛,在桌面應(yīng)用程序、Web 應(yīng)用程序、分布式系統(tǒng)和嵌入式系統(tǒng)應(yīng)用程序的編寫中扮演著重要角色,是目前熱度較高的編程語言之一,備受程序員青睞。 Java 編程語言的應(yīng)用環(huán)境通常是 Windows、Mac OS、Linux、Solaris 等系統(tǒng)或平臺。 隨著互聯(lián)網(wǎng)技術(shù)的日益進(jìn)步,自1995 年上線以來,Java 編程語言的各項功能也一直在不斷更新和豐富。
Java 編程語言能夠自動處理對象的引用和間接引用,自動收集無用單元,減少存儲管理低效的問題,集中更多的時間和精力用于研發(fā)。
Java 編程語言利用類來組織程序,具有一定的體系和層次,面向?qū)ο蟮奶攸c決定了其在應(yīng)用時要注意數(shù)據(jù)及控制方法。 特有的擴(kuò)展組合構(gòu)成了多樣的程序包,便于用戶個性化使用[1]。
Java 編程語言利用網(wǎng)絡(luò)可以充分發(fā)揮分布運(yùn)載的移植功能,實現(xiàn)隨處運(yùn)行。 這類分布式語言使其能實現(xiàn)多層次的網(wǎng)絡(luò)連接以及基于Socket 類支持可靠的流,為用戶生成分布式客戶機(jī)和服務(wù)器[2]。
與常見的機(jī)器碼不同,Java 編程語言的編譯程序能生成字節(jié)碼,能將目標(biāo)文件格式和相應(yīng)的代碼有效傳送至多個平臺,支持在運(yùn)行系統(tǒng)中運(yùn)行。 Java 的解釋性功能使其具有快速原型和容易試驗的優(yōu)勢,能實現(xiàn)快速的程序開發(fā)。
Java 編程語言雖然實現(xiàn)了對迅雷等工具的控制以及dll 的調(diào)用,但要應(yīng)用Java 編程語言本地接口或第三方程序,也存在諸多缺點。 Java 編程語言本地接口的應(yīng)用需要使用到VC 代碼,這具有一定的復(fù)雜性,且第三方程序技術(shù)目前仍存在許多缺陷[3]。
C#語言是由微軟開發(fā)出的一款簡單、通用且面向?qū)ο蟮默F(xiàn)代編程語言,是編寫.Net 應(yīng)用程序的主要語言,是為完全開源的跨平臺服務(wù)而研發(fā)出的一種高級程序設(shè)計語言。
由于C#語言是完全面向?qū)ο?不存在全局函數(shù)和全局變量情況,類是其所有函數(shù)、變量和常量的載體,支持開發(fā)環(huán)境初始化,因此,C#語言不具有多重繼承性的特點。 這一特點支持其能用更少的代碼寫出效率更高、更不容易出錯的簡易運(yùn)行程序,極大地減輕了程序員的工作量。
C#語言的內(nèi)置特性使得它可以將任何組件轉(zhuǎn)化為XML 網(wǎng)絡(luò)服務(wù),并借助Internet 這一路徑為任何操作系統(tǒng)上的任意程序所調(diào)用,是一款支持新出網(wǎng)絡(luò)編程標(biāo)準(zhǔn)的現(xiàn)代編程語言。
C#語言的缺點是支持跨平臺較晚,不便于搜索,在一些細(xì)節(jié)上不如Java 編程語言簡潔和流暢,對于一些開源的應(yīng)用支持較弱,例如新浪微博。
C++是一款較早的編程語言,由Bjame Stroustrup于1983 年開發(fā)完成,是C 語言的一套增強(qiáng)方案。 C++應(yīng)用范圍較為廣泛,多支持軟件和游戲開發(fā)。 嚴(yán)格來說,C++也被稱為帶有類功能的C 語言,其適用性較高,兼具面向?qū)ο?、面向過程和泛型編譯等語法,因而功能更為復(fù)雜,學(xué)習(xí)起來難度更大。
C++的跨平臺性較好,允許程序員對應(yīng)用程序進(jìn)行靈活調(diào)整,能充分發(fā)揮計算機(jī)的全部性能,對開發(fā)環(huán)境適應(yīng)性也較強(qiáng),沒有特別嚴(yán)格的需求。
C++規(guī)模龐大且具有大量較為復(fù)雜的功能交互方式,其中關(guān)鍵字有84 個,學(xué)習(xí)起來也相對困難。 在編寫程序時,C++多種功能的知識儲備能為程序員提供多樣的功能子集,使開發(fā)人機(jī)交互類型的應(yīng)用程序變得更為簡單、快捷。
C++面向?qū)ο蟮墓δ芫哂? 個特點:封裝、繼承和多態(tài)。 具體來說,封裝,是指將對象的屬性和行為捆綁為一個邏輯單元的機(jī)制;繼承,可以極大地減少代碼的重復(fù)使用,減輕編寫的工作量;多態(tài),本質(zhì)上是指允許父類指針指向子類對象的地址。 這樣能夠開發(fā)出更多低耦合的程序,減少程序開發(fā)中各個層的聯(lián)系。
C 語言是一種較早的、面向過程的、較為抽象的計算機(jī)程序設(shè)計語言,也是當(dāng)前應(yīng)用較為廣泛的底層開發(fā)編程語言之一,在應(yīng)用頻率逐漸減少的情況下仍是不可或缺的一種基礎(chǔ)性編譯語言。 C 語言能以較為簡易的方式對一些低級存儲器進(jìn)行編譯和處理,可以在任何運(yùn)行環(huán)境下進(jìn)行高效率程序設(shè)計。 相對于其他幾種算法而言,C 語言運(yùn)算更為靈活且表達(dá)式語言簡潔,其算法順序采用順序結(jié)構(gòu),自上而下依次執(zhí)行,能輕松處理和編譯低級存儲器。
C 語言的面向過程特征使其可以隨時調(diào)試,設(shè)計程序時可選擇多種功能交互方式,即時性較強(qiáng),能極大地減少重寫算法的工作量。
在常用的幾種編程語言中,由于C 語言的算法種類豐富且代碼簡潔,故C 語言編寫的程序代碼容量最小。 例如常用的辦公軟件WPS 和Microsoft Word,二者的功能類似,然而用C 語言編寫的WPS 的安裝文件要比Microsoft Word 文件容量小很多且只有50 MB 左右,而Microsoft Word 則超過500 MB。
C 語言的指針特性使得開發(fā)者可以賦予操作系統(tǒng)刪除、新建、修改系統(tǒng)文件的功能,這樣會使軟件運(yùn)行速度加快。
C 語言設(shè)計較為自由,沒有設(shè)置過多的編譯規(guī)則,因而在編寫時很少受到標(biāo)準(zhǔn)的評判,編寫速度雖然快但不容易判斷對錯,容易產(chǎn)生漏洞,同時也存在開發(fā)過程危險性高、開發(fā)周期長等缺點。 C 語言面向過程的特點導(dǎo)致其無法承擔(dān)大型項目的編寫,容易出現(xiàn)崩潰的現(xiàn)象,而一旦出現(xiàn)錯誤,則需要調(diào)整設(shè)計語言的框架。
本研究列舉的幾種編程語言各有特點,同時又存在錯綜復(fù)雜的繼承、衍生與創(chuàng)新的功能。 筆者梳理了以下幾種編程語言的特點和關(guān)系,如表1 所示。
表1 Java 編程語言、C#語言、C++、C 語言的幾種重要特性比較
由以上分析和比較可以看出,各類算法都具有各自的優(yōu)勢和缺點,在具體開發(fā)程序時,可以根據(jù)功能需求進(jìn)行選取。 在開發(fā)底層基礎(chǔ)系統(tǒng)時,考慮到穩(wěn)定性和運(yùn)行速度,C/C++語言是較為理想的選擇;在開發(fā)應(yīng)用軟件時,考慮到靈活性和正確性,則可以選擇具有跨平臺和結(jié)構(gòu)功能的C#語言和Java 編程語言。 科學(xué)合理地選擇編程語言,對于系統(tǒng)開發(fā)和軟件開發(fā)是必要的前提。