摘 要:在探討合理選擇編程語(yǔ)言的重要作用基礎(chǔ)上,詳細(xì)的分析了幾種主要編程語(yǔ)言的特點(diǎn)以及適應(yīng)環(huán)境,并結(jié)合手機(jī)應(yīng)用開(kāi)發(fā)的實(shí)際需要,提出了選擇合適的語(yǔ)言需要考慮的因素,為手機(jī)應(yīng)用開(kāi)發(fā)中編程語(yǔ)言的選擇提供原則參考。
關(guān)鍵詞:手機(jī)應(yīng)用開(kāi)發(fā);編程語(yǔ)言;語(yǔ)言選擇
1 合理選擇編程語(yǔ)言的重要作用
隨著移動(dòng)媒體技術(shù)的迅速發(fā)展,手機(jī)軟件行業(yè)得到了快速的崛起。當(dāng)前,我國(guó)已經(jīng)進(jìn)入了移動(dòng)互聯(lián)技術(shù)快速發(fā)展的時(shí)代,移動(dòng)終端的應(yīng)用軟件開(kāi)發(fā)過(guò)程中,編程語(yǔ)言占據(jù)著十分重要的作用,也是軟件開(kāi)發(fā)的底層基石。而這需要在深入了解各編程語(yǔ)言的基礎(chǔ)上合理選擇編程語(yǔ)言進(jìn)行軟件開(kāi)發(fā)。因?yàn)榫幊陶Z(yǔ)言種類(lèi)較多,當(dāng)前開(kāi)發(fā)手機(jī)應(yīng)用軟件的語(yǔ)言主要包括C,C++,C#,Java,OC,.Net,Delphi,Power Builder等。在軟件開(kāi)發(fā)的過(guò)程中合理選擇編程語(yǔ)言是應(yīng)用軟件開(kāi)發(fā)工作之前需要處理的問(wèn)題。因此,有必要在對(duì)當(dāng)前使用的各種語(yǔ)言的特點(diǎn)、優(yōu)勢(shì)以及應(yīng)用環(huán)境進(jìn)行分析的基礎(chǔ)上,論述如何開(kāi)展編程語(yǔ)言的選擇,以便滿足應(yīng)用軟件開(kāi)發(fā)的效率、質(zhì)量、成本等相關(guān)功能。
2 常用主要編程語(yǔ)言的特點(diǎn)以及適應(yīng)環(huán)境
了解編程語(yǔ)言的主要特點(diǎn),分析其優(yōu)缺點(diǎn)是合理選擇編程語(yǔ)言的基礎(chǔ),同時(shí)也是保證軟件開(kāi)發(fā)工作得以順利開(kāi)展的基本手段。
2.1 C語(yǔ)言
C語(yǔ)言是一種介于匯編語(yǔ)言與高級(jí)語(yǔ)言之間的編程語(yǔ)言,通常被稱作中級(jí)語(yǔ)言,其集成了高級(jí)語(yǔ)言與匯編語(yǔ)言的諸多優(yōu)勢(shì)。最初,C語(yǔ)言主要用于UNIX 系統(tǒng)的軟件開(kāi)發(fā)工作中,但隨著其應(yīng)用范圍的擴(kuò)展以及人們對(duì)其功能認(rèn)識(shí)程度的深入,到20世紀(jì)九十年代,C語(yǔ)言已經(jīng)在其他的操作系統(tǒng)中得到了廣泛應(yīng)用。
總的來(lái)講,C語(yǔ)言的特點(diǎn)主要體現(xiàn)在這樣幾個(gè)方面:其一,C語(yǔ)言是一種結(jié)構(gòu)化的語(yǔ)言,因此具有清晰的層次,這對(duì)于當(dāng)前層次化、模塊化的應(yīng)用程序編寫(xiě)極為有利,同時(shí)也有利于后續(xù)手機(jī)應(yīng)用程序的維護(hù)與調(diào)試;其二,C語(yǔ)言自身不但具有豐富的數(shù)據(jù)類(lèi)型,而且運(yùn)算符號(hào)多樣化,能夠與計(jì)算機(jī)的物理地址直接進(jìn)行數(shù)據(jù)交換,便于在編輯過(guò)程中進(jìn)行位操作;其三,C語(yǔ)言具有較高的使用效率,而且能夠通過(guò)移植的方式應(yīng)用到各種手機(jī)中,這有利于根據(jù)用戶的不同需要形成各種不同的版本;其四,因?yàn)橥ㄟ^(guò)C語(yǔ)言可以實(shí)現(xiàn)位操作以及具體的字節(jié)操作,因此可以直接利用C語(yǔ)言實(shí)現(xiàn)對(duì)硬件操作的編寫(xiě),這有利于保證代碼的整體質(zhì)量,便于程序執(zhí)行效率的提高。C語(yǔ)言目前主要用于手機(jī)底層開(kāi)發(fā)以及手機(jī)平臺(tái)軟件的開(kāi)發(fā)。
2.2 C++語(yǔ)言
貝爾實(shí)驗(yàn)室于1986年開(kāi)發(fā)了C++語(yǔ)言,通過(guò)將數(shù)九封裝起來(lái)的方式減少了程序中的變量數(shù)目,減少了其給程序應(yīng)用帶來(lái)的負(fù)面影響,提高了程序的整體運(yùn)行可靠性。另外,C++語(yǔ)言所具有的多繼承機(jī)制能夠?qū)Ψ治鰧?duì)象相關(guān)行為及具體屬性進(jìn)行及時(shí)的描述。雖然C++語(yǔ)言在一定程度上是C語(yǔ)言的繼承和擴(kuò)展,但是需要將之當(dāng)作為一種新的語(yǔ)言予以處理。
在應(yīng)用過(guò)程中,要注意C++語(yǔ)言自身的特點(diǎn):它是基于對(duì)象的封裝、繼承語(yǔ)言,具有多態(tài)性的特點(diǎn)??偟膩?lái)講,C++語(yǔ)言在C語(yǔ)言的基礎(chǔ)上得到擴(kuò)展,因此其自身具有與C語(yǔ)言的諸多特點(diǎn),但同時(shí)因?yàn)橐肓嗣嫦驅(qū)ο蟮木幊汤砟?,因此能夠滿足更大型的項(xiàng)目編輯的需要,例如能夠進(jìn)行系統(tǒng)級(jí)的編程,所以C++更多的用于手機(jī)系統(tǒng)和游戲的開(kāi)發(fā)。
2.3 Java語(yǔ)言
與C++語(yǔ)言相比,Java語(yǔ)言在簡(jiǎn)潔程度、安全性方面有更明顯的優(yōu)勢(shì):其一,簡(jiǎn)潔性,該項(xiàng)特點(diǎn)與C++語(yǔ)言類(lèi)似,但是其中減少了在利用C++語(yǔ)言編程過(guò)程中容易出現(xiàn)程序執(zhí)行錯(cuò)誤的問(wèn)題,例如內(nèi)存管理錯(cuò)誤、指針錯(cuò)誤等問(wèn)題;其二,Java語(yǔ)言屬于完全面向?qū)ο蟮恼Z(yǔ)言,與SmallTalk具有類(lèi)似的特點(diǎn),但是在內(nèi)存管理方面具有更明顯的優(yōu)勢(shì);其三,分布式的數(shù)據(jù)處理方式,在 Java語(yǔ)言當(dāng)中,其自身就包含了支持基于TCP/IP協(xié)議的子庫(kù),這有利于其網(wǎng)絡(luò)分布式處理,提高了程序的運(yùn)行效率;其四,穩(wěn)健性,Java語(yǔ)言中包含的類(lèi)型檢查功能可以幫助軟件開(kāi)發(fā)人員在開(kāi)發(fā)初期發(fā)現(xiàn)低級(jí)別的錯(cuò)誤從而減少后期開(kāi)發(fā)過(guò)程中才發(fā)現(xiàn)錯(cuò)誤導(dǎo)致的成本增加問(wèn)題,降低了內(nèi)存中出現(xiàn)錯(cuò)誤的概率。另外,除了上述相關(guān)的特點(diǎn)之外,Java語(yǔ)言還具有可移植性、解釋性高、運(yùn)行性能強(qiáng)以及多線程處理的特點(diǎn)。當(dāng)前,Java語(yǔ)言主要應(yīng)用于Android手機(jī)系統(tǒng)應(yīng)用開(kāi)發(fā)和手機(jī)軟件后臺(tái)服務(wù)的開(kāi)發(fā)工作中。
2.4 C#語(yǔ)言
C#語(yǔ)言具有精確、簡(jiǎn)單以及使用安全的特點(diǎn),同時(shí)能夠面向?qū)ο筮M(jìn)行編程,是典型的.net語(yǔ)言。具體來(lái)講,C#語(yǔ)言的特點(diǎn)為:其一,完全基于面向?qū)ο蟮木帉?xiě)方式;其二,能夠很好的支持網(wǎng)絡(luò)分布式處理,即在程序執(zhí)行處理的過(guò)程中,程序是在分布網(wǎng)絡(luò)中的服務(wù)器、客戶機(jī)中執(zhí)行的,完全適應(yīng)分布式計(jì)算機(jī)網(wǎng)絡(luò)處理的應(yīng)用需要;其三,其具有完全的穩(wěn)健性特點(diǎn),在對(duì)程序錯(cuò)誤以及運(yùn)行錯(cuò)誤檢查方面具有與Java相一致的功能,同時(shí)也是采用自動(dòng)內(nèi)存管理機(jī)制;其四,C#語(yǔ)言的應(yīng)用靈活度較高,在正常情況下,C#語(yǔ)言是不應(yīng)用指針的,但是當(dāng)用戶在實(shí)際應(yīng)用過(guò)程中可以將指針打開(kāi),并在程序編輯過(guò)程中應(yīng)用;其五,C#語(yǔ)言的整體安全性較高,是基于.net平臺(tái)提供的安全系統(tǒng)。
另外,C#語(yǔ)言同時(shí)還兼具可移植、解釋、高效運(yùn)行、組件模式等特點(diǎn),是Java之后的又一種新型的應(yīng)用語(yǔ)言。加之在微軟操作系統(tǒng)的支持下,C#語(yǔ)言的應(yīng)用存在更加明顯的優(yōu)勢(shì)及特點(diǎn)。當(dāng)前,C#主要應(yīng)用于windowsPhone系列手機(jī)系統(tǒng)的應(yīng)用開(kāi)發(fā)。
2.5 Objective-C語(yǔ)言
隨著iPhone、iPad銷(xiāo)量的迅速提升,Objective-C語(yǔ)言在編程語(yǔ)言榜逐年上升。Objective-C語(yǔ)言通常寫(xiě)作ObjC,它具有簡(jiǎn)潔、靈活的特點(diǎn),也是面向?qū)ο缶幊陶Z(yǔ)言。它獨(dú)有的內(nèi)存管理機(jī)制,使得開(kāi)發(fā)的應(yīng)用程序可占用更少的內(nèi)存空間,使程序運(yùn)行流暢,更適合移動(dòng)終端的應(yīng)用開(kāi)發(fā)。ObjC語(yǔ)言中的框架、多態(tài)、協(xié)議、類(lèi)別等不同于其他語(yǔ)言的強(qiáng)大特性,可以實(shí)現(xiàn)靈活高效安全的編程開(kāi)發(fā)。當(dāng)前,ObjC語(yǔ)言主要應(yīng)用于Mac OS X系統(tǒng)和Iphone等移動(dòng)終端的程序開(kāi)發(fā)。
綜上所述,各種語(yǔ)言都具有其自身的特點(diǎn)和優(yōu)勢(shì),在具體的應(yīng)用過(guò)程中需要根據(jù)所編寫(xiě)程序的特點(diǎn)以及實(shí)際需要選擇最合適的程序語(yǔ)言,這樣才能有效的降低程序編寫(xiě)工作量,提高程序編寫(xiě)的效率。
3 選擇合適的編程語(yǔ)言需要考慮的因素
值得一提的是,在進(jìn)行手機(jī)應(yīng)用軟件編程開(kāi)發(fā)的過(guò)程中,除了移動(dòng)終端的客戶端軟件開(kāi)發(fā),更重要的是后臺(tái)服務(wù)器、數(shù)據(jù)庫(kù)的開(kāi)發(fā)支持,所以編程語(yǔ)言的選擇直接關(guān)系到整個(gè)應(yīng)用體系的整體質(zhì)量、運(yùn)行效率等關(guān)鍵指標(biāo)。作為軟件編程與開(kāi)發(fā)的一個(gè)重要構(gòu)成部分,軟件編程語(yǔ)言的選擇將直接影響到后臺(tái)服務(wù)的有效性與應(yīng)用軟件的實(shí)用性。因此,在選擇編程語(yǔ)言的過(guò)程中只選擇已經(jīng)熟悉的語(yǔ)言,或者是單純的選擇最先進(jìn)的語(yǔ)言作為編程語(yǔ)言的方式都不是合理的選擇。在實(shí)際的應(yīng)用軟件開(kāi)發(fā)過(guò)程中,都需要綜合考慮多個(gè)方面的因素,例如語(yǔ)言應(yīng)用范圍、編程難度、軟件的后期應(yīng)用便捷性等因素。下面結(jié)合實(shí)際的相關(guān)經(jīng)驗(yàn),提出編程選擇語(yǔ)言過(guò)程中需要注意的相關(guān)問(wèn)題。
3.1 應(yīng)用軟件的整體架構(gòu)形式
在軟件編寫(xiě)過(guò)程中,為了保證整體結(jié)構(gòu)的一致性,所選擇的編程語(yǔ)言為同一種語(yǔ)言。但是,在軟件編寫(xiě)過(guò)程中,經(jīng)常需要選擇多用語(yǔ)言,這主要是因?yàn)樵谕粋€(gè)項(xiàng)目中可能出現(xiàn)在不同的結(jié)構(gòu)中出現(xiàn)功能、規(guī)模以及編譯難度的差異,需要選擇合適難度的編譯語(yǔ)言來(lái)進(jìn)行程序的編寫(xiě)。這就需要在軟件編譯過(guò)程中對(duì)語(yǔ)言進(jìn)行合理的調(diào)整。還需要注意的是,即使在編譯同一個(gè)軟件,最合適的語(yǔ)言并非一直不變,可能隨著技術(shù)的成熟,之前被淘汰的語(yǔ)言會(huì)成為最合適的語(yǔ)言。這些都需要根據(jù)實(shí)際的編譯環(huán)境予以合理考慮。
3.2 選擇擅長(zhǎng)的編譯語(yǔ)言
雖然在程序的編寫(xiě)過(guò)程中嘗試使用新的語(yǔ)言屬于一種良好的創(chuàng)新行為,但是在應(yīng)用軟件編寫(xiě)過(guò)程中,因?yàn)槎酁樯虡I(yè)項(xiàng)目,不屬于研究型的項(xiàng)目。為了提高編寫(xiě)效率和質(zhì)量,應(yīng)該選擇自己所熟悉的語(yǔ)言、擅長(zhǎng)的語(yǔ)言作為編寫(xiě)工具,從而有利于保證軟件的整體編寫(xiě)進(jìn)度,避免因?yàn)榫帉?xiě)困難而出現(xiàn)項(xiàng)目進(jìn)度受阻的問(wèn)題。誠(chéng)然,在選擇自己所擅長(zhǎng)的語(yǔ)言時(shí),同樣會(huì)出現(xiàn)遭遇困難的問(wèn)題,而且會(huì)在特定的結(jié)構(gòu)功能編寫(xiě)時(shí)需要用到陌生的語(yǔ)言。
3.3 考慮到軟件應(yīng)用的計(jì)算成本
在應(yīng)用軟件編寫(xiě)過(guò)程中,要考慮到密碼學(xué)、圖形處理、統(tǒng)計(jì)分析、視頻處理等都需要對(duì)手機(jī)硬件資源的消耗要求極高,因此包含以上技術(shù)的應(yīng)用將影響到手機(jī)系統(tǒng)的整體運(yùn)行效率。所以,在軟件編寫(xiě)過(guò)程中要針對(duì)這些模塊,使用靜態(tài)形式的編譯語(yǔ)言。因此,就需要選擇一個(gè)快速的處理語(yǔ)言,例如JAVA、ObjC、C#等語(yǔ)言,這即為最佳的選擇。
3.4 軟件中是否關(guān)系到子流程和多文件管理
若軟件的主要功能是代替人工進(jìn)行重復(fù)的手工勞動(dòng),則在程序編寫(xiě)過(guò)程中的每一個(gè)細(xì)節(jié)都需要選擇合適的程序。軟件開(kāi)發(fā)人員只需要將其中的細(xì)節(jié)組合起來(lái),完成對(duì)其中各個(gè)子程序、子文件進(jìn)行集中管理。在軟件開(kāi)發(fā)的過(guò)程中,對(duì)其中的腳本語(yǔ)言,例如Python、vbscript、javascript等,要合理選擇其中的功能管理模塊,從而提高操作的整體靈活度、簡(jiǎn)潔性。
3.5 所開(kāi)發(fā)系統(tǒng)的硬件資源規(guī)模
并不是所有語(yǔ)言都能夠在任何的硬件環(huán)境下使用,需要考慮到硬件資源的整體規(guī)模。雖然當(dāng)前手機(jī)硬件資源基本能夠滿足手機(jī)應(yīng)用的需要,但是對(duì)于某些應(yīng)用軟件而言,硬件資源的限制依然較為嚴(yán)苛,例如手機(jī)攝像頭,GPS定位相關(guān)的應(yīng)用軟件等。所以,在程序編寫(xiě)過(guò)程中通??梢赃x擇對(duì)硬件資源限制級(jí)別較低的語(yǔ)言,例如C/C++、ObjC等語(yǔ)言。
3.6 應(yīng)用軟件后續(xù)是否需要進(jìn)行重復(fù)修改
不論使用何種匯編語(yǔ)言,編譯形成之后的軟件都可以快速的進(jìn)行需要的重構(gòu)與調(diào)整。尤其是部分程序在應(yīng)用的過(guò)程中需要對(duì)功能進(jìn)行擴(kuò)展和調(diào)整,選擇能夠進(jìn)行程序原型重構(gòu)的語(yǔ)言就顯得十分重要。這時(shí),選擇動(dòng)態(tài)類(lèi)語(yǔ)言,結(jié)合諸多不相關(guān)的庫(kù),能夠顯著顯示這些語(yǔ)言的優(yōu)勢(shì),例如Python、vbscript等,能夠通過(guò)軟件應(yīng)用過(guò)程中的數(shù)據(jù)類(lèi)型檢查替代編譯期間的檢查,提高了軟件的整體布局及功能擴(kuò)展效率。
3.7 是否需要進(jìn)行海量的位操作
大量的協(xié)議相關(guān)工作以及文件格式處理都需要進(jìn)行位操作。因此,開(kāi)發(fā)人員必須針對(duì)手機(jī)應(yīng)用軟件的特點(diǎn)進(jìn)行充分的考慮,需要進(jìn)行大量位操作時(shí),需要選擇支持簡(jiǎn)單位操作,而且能夠提供豐富數(shù)據(jù)類(lèi)型的編程語(yǔ)言,例如C語(yǔ)言、C#、JAVA等。
4 結(jié)語(yǔ)
編程語(yǔ)言是實(shí)現(xiàn)手機(jī)應(yīng)用程序開(kāi)發(fā)的基礎(chǔ),是保證算法功能得以實(shí)現(xiàn)的基礎(chǔ)。合理的選擇編程語(yǔ)言,對(duì)于提高手機(jī)應(yīng)用的運(yùn)行效率、縮短編程周期、減少編程成本具有十分重要的作用。而每種語(yǔ)言具有其自身的特點(diǎn)和適應(yīng)環(huán)境特點(diǎn),因此在編程語(yǔ)言的選擇過(guò)程中要選擇合適的語(yǔ)言。
[參考文獻(xiàn)]
[1]馬潔.計(jì)算機(jī)應(yīng)用軟件開(kāi)發(fā)中選擇的編程語(yǔ)言[J].電腦知識(shí)與技術(shù).2013(8).
[2]李強(qiáng).計(jì)算機(jī)軟件開(kāi)發(fā)語(yǔ)言的選擇探討[J].電子制作.2013(9).
[3]李滎.探析編程語(yǔ)言在計(jì)算機(jī)應(yīng)用軟件開(kāi)發(fā)中的選擇[J].消費(fèi)電子.2013(20).