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