黃啟恒
(貴陽(yáng)鐵路建設(shè)投資有限公司,貴州 貴陽(yáng) 550081)
目前,我國(guó)計(jì)算機(jī)技術(shù)的發(fā)展有了質(zhì)的飛躍,軟件開發(fā)和應(yīng)用也被應(yīng)用到各行各業(yè)中。隨著計(jì)算機(jī)編程的不斷成熟,編程語(yǔ)言的種類越來越多,能夠選擇的范圍也越來越廣,而每一種計(jì)算機(jī)語(yǔ)言都有著其自身的優(yōu)點(diǎn)和特性,選擇何種編程語(yǔ)言以高效發(fā)揮計(jì)算機(jī)性能、高質(zhì)量完成軟件開發(fā)任務(wù)尤為重要。因此,只有對(duì)各種各樣的編程語(yǔ)言做到全面的了解和分析,才能根據(jù)應(yīng)用環(huán)境和實(shí)際需要選擇最適合的編程語(yǔ)言,以發(fā)揮出該編程語(yǔ)言的最大效用,使其更好地服務(wù)于計(jì)算機(jī)中的軟件系統(tǒng),節(jié)省人力和物力,從而更好地推動(dòng)計(jì)算機(jī)事業(yè)和社會(huì)的發(fā)展。
應(yīng)用需求的多樣化和靈活性催生了編程語(yǔ)言的發(fā)展,而每種語(yǔ)言均有自己獨(dú)特的優(yōu)勢(shì)和專攻領(lǐng)域。通過對(duì)當(dāng)下主流的幾種編程語(yǔ)言特征和應(yīng)用進(jìn)行分析,有助于計(jì)算機(jī)軟件開發(fā)中編程語(yǔ)言的選擇研究。
C編程語(yǔ)言是誕生較早的一種計(jì)算機(jī)編程語(yǔ)言,它的優(yōu)點(diǎn):貼近硬件、代碼量小、執(zhí)行效率高、功能強(qiáng)大。首先,它具備良好完善的使用性能,具有廣泛強(qiáng)大的語(yǔ)言功能,其特點(diǎn)主要表現(xiàn)為通用性強(qiáng)、局限性小,語(yǔ)言方便簡(jiǎn)單,可以適用于不同種類的計(jì)算機(jī)類型。其次,作為編程語(yǔ)言體系中的元老編程語(yǔ)言,相比較其他種類的高級(jí)編程語(yǔ)言,C編程語(yǔ)言更能貼合計(jì)算機(jī)系統(tǒng)、符合計(jì)算機(jī)運(yùn)行規(guī)律,因而執(zhí)行效率高。我們熟知的三大操作系統(tǒng):Windows、Linux、Unix,其內(nèi)核均用C語(yǔ)言編寫。此外,C編程語(yǔ)言自身具備應(yīng)用專業(yè)優(yōu)勢(shì),尤其適用于底層開發(fā),例如嵌入式應(yīng)用、驅(qū)動(dòng)、web服務(wù)等,這種獨(dú)特的優(yōu)勢(shì)有利于C編程語(yǔ)言的發(fā)展和推廣。然而C語(yǔ)言面向過程的特性,使得應(yīng)用程序開發(fā)周期長(zhǎng)。
C++與Visual C++編程語(yǔ)言是為了視窗軟件系統(tǒng)的發(fā)展而研發(fā)的一種編程語(yǔ)言。C++編程語(yǔ)言是C編程語(yǔ)言的進(jìn)化改良版本,它最初是在十九世紀(jì)的貝爾實(shí)驗(yàn)室研發(fā)編制出來的,是一種靜態(tài)數(shù)據(jù)類型檢查的、支持多重編程范式的通用程序設(shè)計(jì)語(yǔ)言。其研發(fā)的主要目的是阻止因程序變量的減少對(duì)計(jì)算機(jī)軟件開發(fā)帶來的不良影響,從而提升編程程序的穩(wěn)定性和牢固性。因此,它在繼承C語(yǔ)言優(yōu)勢(shì)的同時(shí)又融合了面向?qū)ο蟮乃枷?。首先,它完全兼容C語(yǔ)言的特性,可以與基于C編程語(yǔ)言研發(fā)的軟件進(jìn)行銜接;其次,C++與Visual C++編程語(yǔ)言適用于窗口軟件相關(guān)程序的編程,彌補(bǔ)了C編程語(yǔ)言所存在的因工作量大而導(dǎo)致的系統(tǒng)癱瘓的缺陷,提升了窗口編程軟件的編程質(zhì)量和編程效率。C++龐大的語(yǔ)法系統(tǒng)結(jié)合面向?qū)ο蟮木幊趟枷胧沟盟饕獞?yīng)用于應(yīng)用軟件開發(fā),如QQ,網(wǎng)絡(luò)游戲等。
Java編程語(yǔ)言是純面向?qū)ο蟮恼Z(yǔ)言,直觀地反映了現(xiàn)實(shí)生活中的對(duì)象,從而編寫容易;同時(shí)它的跨平臺(tái)性可以做到“一次編譯,到處運(yùn)行”,體現(xiàn)了很好的可移植性。相對(duì)于C++編程語(yǔ)言,Java語(yǔ)言去除C++中難以理解、易混淆的特性,使程序簡(jiǎn)潔嚴(yán)謹(jǐn)。此外,它屬于完全基于對(duì)象的編程語(yǔ)言,更加具有包容性、開放性,允許多種生態(tài)共存,而且封裝性更強(qiáng);其次,Java編程語(yǔ)言提供了對(duì)Web應(yīng)用開發(fā)的支持,更加適合網(wǎng)絡(luò)環(huán)境的生存,如Socket、RMI適應(yīng)于分布式應(yīng)用程序的開發(fā)。在強(qiáng)化安全性的網(wǎng)絡(luò)時(shí)代,Java語(yǔ)言擁有健全的安全攻防機(jī)制,如防惡意代碼攻擊,相比其他語(yǔ)言來說,安全性能指數(shù)較高,更加適合多種多樣的網(wǎng)絡(luò)軟件開發(fā)。最后,Java編程語(yǔ)言還可以與計(jì)算機(jī)中的控制系統(tǒng)相互協(xié)作,互不干擾,例如:Windows系統(tǒng)和Linux系統(tǒng),從而更有利于計(jì)算機(jī)應(yīng)用軟件的開發(fā),保證軟件開發(fā)的質(zhì)量,優(yōu)化應(yīng)用軟件程序。Java集成眾多的優(yōu)勢(shì),擁有龐大的擁護(hù)者,如表1所示,展示了截至2020年3月熱度排名前四的編程語(yǔ)言類型。
表1 tiobe編程語(yǔ)言全球流行榜
Delphi編程語(yǔ)言基于Objiect Pascal,擴(kuò)充了面向?qū)ο蟮哪芰?,并且融合了可視化開發(fā)方法,與visual basic編程語(yǔ)言的應(yīng)用領(lǐng)域有重合,不同之處在于Delphi編程語(yǔ)言具有更快的編譯器,且擁有強(qiáng)大計(jì)算機(jī)數(shù)據(jù)庫(kù)支撐,形成一個(gè)既強(qiáng)大又成熟的計(jì)算機(jī)組件技術(shù)。Delphi編程語(yǔ)言在開發(fā)桌面應(yīng)用程序上展示了良好的先天優(yōu)勢(shì)。
在計(jì)算機(jī)應(yīng)用軟件開發(fā)中,除了上述中常見的四大類編程語(yǔ)言,還有小眾的編程語(yǔ)言,如java script、CUDA、erlang、Ru-by等多種不同的編程語(yǔ)言,盡管這些語(yǔ)言面向的開發(fā)軟件的應(yīng)用較少,但是存在著自身的技術(shù)特長(zhǎng)和技術(shù)優(yōu)勢(shì),因此在一些特殊的應(yīng)用軟件開發(fā)中,通過組合軟件的方式可以優(yōu)化軟件,提升軟件質(zhì)量。
編程語(yǔ)言在原理上大同小異,可以觸類旁通,編程語(yǔ)言沒有絕對(duì)的好與壞,只有適合與否。因此,在計(jì)算機(jī)軟件開發(fā)中應(yīng)綜合考慮業(yè)務(wù)需求、操作系統(tǒng)、可擴(kuò)展性、效率及安全性等方面,選取合適的編程語(yǔ)言以促進(jìn)軟件開發(fā)工作,減少周期和成本。[3-4]
軟件工程研發(fā)流程中的第一道工序即可行性與軟件需求分析,需要從功能、性能、安全性、可操作性多角度綜合考慮。誠(chéng)然,編程語(yǔ)言選擇也是斟酌的主要因素,不同的編程語(yǔ)言主打的行業(yè)與領(lǐng)域不同,不同的性能、開發(fā)周期、成本的要求也促使選擇不同的編程語(yǔ)言。如基于Andriod系統(tǒng)開發(fā),如果開發(fā)的是基于Linux的安卓底層,首先上肯定是C/C++;如果是基于安卓做上層業(yè)務(wù)系統(tǒng)開發(fā),那么應(yīng)選擇Java??梢?,編程語(yǔ)言的特性決定了它的應(yīng)用領(lǐng)域,應(yīng)用需求又促進(jìn)了編程語(yǔ)言的升級(jí),分析和掌握開發(fā)的行業(yè)領(lǐng)域和業(yè)務(wù)需求對(duì)選擇合適的編程語(yǔ)言有重要意義。
系統(tǒng)總體設(shè)計(jì)是軟件開發(fā)中的重要環(huán)節(jié),架構(gòu)設(shè)計(jì)師需要完成軟件架構(gòu)圖、功能模塊、數(shù)據(jù)庫(kù)設(shè)計(jì)等。從軟件界面風(fēng)格、系統(tǒng)穩(wěn)定性、網(wǎng)絡(luò)拓?fù)?、?guī)模、開發(fā)模式等角度綜合考慮進(jìn)行編程語(yǔ)言選擇,需要做好規(guī)劃。正常情況下,一個(gè)應(yīng)用軟件對(duì)應(yīng)一種語(yǔ)言,降低軟件集成的難度;但有些情況下,在開發(fā)一個(gè)應(yīng)用軟件中的不同結(jié)構(gòu)或不同區(qū)域時(shí),由于功能的特殊性和編譯條件的不同,需要同時(shí)綜合多種編程語(yǔ)言。如在處理數(shù)據(jù)庫(kù)對(duì)象時(shí),如果目的是設(shè)置簡(jiǎn)單功能則可選擇Java語(yǔ)言,如果保持軟件的復(fù)雜功能則需要選擇C。此外,編程語(yǔ)言確定后,在整個(gè)軟件的生命周期中也非一成不變,當(dāng)下合適并不代表將來最優(yōu),也存在編程語(yǔ)言替換更新的可能。
編程人員需要根據(jù)編程語(yǔ)言的熟悉度進(jìn)行合理選擇,只有熟悉編程語(yǔ)言,才能更了解該編程語(yǔ)言所具有的優(yōu)勢(shì)、劣勢(shì)及應(yīng)用范圍,才能在應(yīng)用軟件開發(fā)中適當(dāng)?shù)膿P(yáng)長(zhǎng)避短,提升應(yīng)用軟件的質(zhì)量。在一個(gè)應(yīng)用軟件開發(fā)的初期,通常會(huì)有時(shí)間的限制,較為熟悉的編程語(yǔ)言有助于編程人員在短時(shí)間內(nèi)大量編寫程序,有效地估算出應(yīng)用軟件開發(fā)所需要的時(shí)間,從而降低應(yīng)用軟件開發(fā)過程中出現(xiàn)的突發(fā)狀況而打亂開發(fā)計(jì)劃。此外,利用熟悉的編程語(yǔ)言,當(dāng)業(yè)務(wù)和技術(shù)融合恰到好處時(shí),可以激發(fā)編程人員的創(chuàng)作熱情,促進(jìn)編程的靈活度,提升軟件質(zhì)量。
計(jì)算機(jī)應(yīng)用軟件開發(fā)編程語(yǔ)言的選擇除了基于編程語(yǔ)言本身具備的特質(zhì)外,還要把編程語(yǔ)言在應(yīng)用軟件開發(fā)過程中所需要花費(fèi)的開銷列入選擇范圍內(nèi)。在一個(gè)應(yīng)用軟件的開發(fā)過程中,所需要的視頻整理、圖形渲染、數(shù)據(jù)分析、信號(hào)處理等各方面的技術(shù)對(duì)編程語(yǔ)言的處理都有著極高的要求,對(duì)軟件開發(fā)也有著重要的意義。假如在計(jì)算機(jī)應(yīng)用軟件開發(fā)過程中長(zhǎng)時(shí)間的運(yùn)用這些功能,也會(huì)影響到計(jì)算機(jī)內(nèi)部的芯片效率。為了避免這種情況的發(fā)生,則需要選擇一個(gè)具有靜態(tài)類型特點(diǎn)的編程語(yǔ)言,如JAVA編程語(yǔ)言正好與該需求相吻合。
在一個(gè)龐大的編程語(yǔ)言體系中,有著各種高級(jí)的編程語(yǔ)言,一類合適的編程語(yǔ)言能讓開發(fā)人員及時(shí)修改和調(diào)整程序內(nèi)容。當(dāng)編寫人員在頻繁修改應(yīng)用軟件程序時(shí),一種可以實(shí)現(xiàn)快速還原的編程語(yǔ)言應(yīng)成為首選,基于此,則需要使用一種動(dòng)態(tài)的編程語(yǔ)言,動(dòng)態(tài)類型的編程語(yǔ)言能結(jié)合多種不同種類的數(shù)據(jù)庫(kù)使用,且檢查機(jī)制設(shè)置在程序執(zhí)行時(shí),而非編程環(huán)節(jié),從而使動(dòng)態(tài)類型的編程語(yǔ)言適用范圍逐步擴(kuò)大,有利于提升軟件功能的升級(jí)與擴(kuò)展。
總而言之,計(jì)算機(jī)應(yīng)用軟件開發(fā)中編程語(yǔ)言的選擇是一個(gè)繁雜而重要的過程,不同的編程語(yǔ)言對(duì)軟件開發(fā)質(zhì)量影響不同,編程語(yǔ)言的選擇與軟件開發(fā)難度、開發(fā)周期、維護(hù)工作量等有關(guān)。因此,編程語(yǔ)言的選擇應(yīng)綜合實(shí)際開發(fā)中的行業(yè)應(yīng)用、軟件整體架構(gòu),注重的語(yǔ)言特性的了解和開發(fā)人員經(jīng)驗(yàn),選擇熟悉的編程語(yǔ)言以保證軟件質(zhì)量、減少開發(fā)成本。
貴陽(yáng)學(xué)院學(xué)報(bào)(自然科學(xué)版)2020年3期