白青海
(1.內(nèi)蒙古民族大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,內(nèi)蒙古 通遼 028043;2.內(nèi)蒙古民族大學(xué) 計(jì)算機(jī)應(yīng)用技術(shù)研究所,內(nèi)蒙古 通遼 028043)
當(dāng)前,計(jì)算機(jī)語(yǔ)言層出不窮,五花八門,各自都有自己的應(yīng)用領(lǐng)域,各自都有自己的特點(diǎn)和優(yōu)缺點(diǎn).文章通過(guò)九種計(jì)算機(jī)語(yǔ)言,包括Python、Java、C、C++、JavaScript、C#、Ruby、PHP 以及Objective-C 的對(duì)比研究,對(duì)于每種編程語(yǔ)言,從由它打造的頂級(jí)應(yīng)用成果、相關(guān)職位的平均薪酬(美國(guó))以及該語(yǔ)言的優(yōu)勢(shì)與弊端等方面給出這幾種語(yǔ)言的對(duì)比研究,為今后從事計(jì)算機(jī)編程的人員可以提供一些參考.
(1)Java:Java無(wú)疑是目前市場(chǎng)需求量最大的語(yǔ)言.它的用途非常廣泛,可以用來(lái)開發(fā)Android&iOS應(yīng)用、視頻游戲開發(fā)、桌面GUIs開發(fā)等.它的缺點(diǎn)是:占用內(nèi)存高于C++、學(xué)習(xí)曲線不是很友好,應(yīng)用啟動(dòng)時(shí)間較長(zhǎng)等.盡管如此,依然無(wú)法阻擋java前進(jìn)的腳步,Java工程師的需求量也是遠(yuǎn)遠(yuǎn)大于其他語(yǔ)言.
(2)Python:近年來(lái)隨著人工智能AI的普及[1],Python的熱度不斷增長(zhǎng).它學(xué)習(xí)起來(lái)相對(duì)簡(jiǎn)單,上手難度低,擁有很廣泛的工具及功能庫(kù).它可以用于web 開發(fā)、視頻游戲開發(fā)、桌面GUIs 和軟件開發(fā)等.目前Rasp-berry Pi等新興平臺(tái)已經(jīng)將其作為開發(fā)基礎(chǔ).同樣,Python的缺點(diǎn)也很多:比如速度慢、移動(dòng)領(lǐng)域表現(xiàn)糟糕.由于是動(dòng)態(tài)語(yǔ)言,因此需要進(jìn)行更多測(cè)試,并且會(huì)帶來(lái)某些只在特定運(yùn)行中出現(xiàn)的錯(cuò)誤.不過(guò),Python還將隨著物聯(lián)網(wǎng)技術(shù)的普及進(jìn)一步發(fā)展.
(3)C語(yǔ)言:C語(yǔ)言作為多數(shù)程序員入門接觸的第一種語(yǔ)言,目前來(lái)看表現(xiàn)只能算一般[2,3].C語(yǔ)言是一種通用型命令式計(jì)算機(jī)編程語(yǔ)言,你可以用它開發(fā)操作系統(tǒng)、開發(fā)軟件和硬件設(shè)備[4,5].它的優(yōu)勢(shì)很多:比如可移植性強(qiáng),體型小巧,幾乎所有的現(xiàn)代編程語(yǔ)言都脫胎于C語(yǔ)言,也就是說(shuō),如果你了解了C語(yǔ)言,你會(huì)很容易掌握其他類語(yǔ)言.它的缺點(diǎn)是:沒(méi)有OOPs概念,不提供命名空間功能.
(4)C++:C++是一種面向?qū)ο蟮木幊陶Z(yǔ)言,被廣泛視為最出色的大規(guī)模應(yīng)用構(gòu)建語(yǔ)言[6].它可以用來(lái)開發(fā)軟件、搜索引擎、操作系統(tǒng)、視頻游戲等.跟Java比較起來(lái),C++的編程過(guò)程并不友好,但它很靈活.缺點(diǎn)是,C++的學(xué)習(xí)難度較大[7-8].
(5)C#:C#是一種強(qiáng)大而靈活的編程語(yǔ)言,事實(shí)上C#的功能僅限于我們的想象力.它可以用來(lái)開發(fā)windows應(yīng)用、企業(yè)級(jí)業(yè)務(wù)應(yīng)用、軟件開發(fā)等[9].C#全面集成了.net庫(kù),可轉(zhuǎn)換性強(qiáng),需求也極其旺盛.它的缺點(diǎn)是學(xué)習(xí)曲線很陡峭,不具備跨平臺(tái)的能力,因此不大適合新手學(xué)習(xí).
(6)JavaScript:移動(dòng)時(shí)代的到來(lái),使得JavaScript的需求量增加了很多.它可以做很多事情:網(wǎng)站前端、分析、功能控件、web交互.JavaScript的速度很快、容易學(xué)習(xí),它還可以與其它多種語(yǔ)言協(xié)作.缺點(diǎn)是JavaScript沒(méi)有名稱空間,很難模塊化,不太適合開發(fā)大型程序.
(7)Ruby:Ruby 是屬于面向?qū)ο蟮耐ㄓ眯驼Z(yǔ)言,可以用來(lái)開發(fā)桌面GUIs、web 應(yīng)用和開發(fā)等.Ruby 的庫(kù)和工具很多,社區(qū)也很龐大.但Ruby也有很多問(wèn)題,比如運(yùn)行速度慢、缺乏說(shuō)明文檔等.
(8)PHP:PHP 有很多用途,比如WordPress 插件、web開發(fā)、創(chuàng)建包含數(shù)據(jù)庫(kù)功能的頁(yè)面等.它易于上手、社區(qū)龐大、數(shù)據(jù)庫(kù)豐富.但是由于學(xué)習(xí)門檻過(guò)低,導(dǎo)致項(xiàng)目中存在大量的經(jīng)驗(yàn)不足的開發(fā)者,某些開源代碼甚至已經(jīng)存在十余年之久.目前市場(chǎng)對(duì)PHP的需求量也不及其他語(yǔ)言.
(9)Objective-C:Objective-C是一款通用型面向?qū)ο缶幊陶Z(yǔ)言[10],其本質(zhì)上是將Smalltalk類消息的收發(fā)機(jī)制添加到C 語(yǔ)言當(dāng)中.其目前為蘋果公司在OSX 及iOS 操作系統(tǒng)上的主要編程語(yǔ)言,并配合各自的API.如果希望以iOS或者OSX應(yīng)用為開發(fā)方向,可以選擇該語(yǔ)言.人才市場(chǎng):a.崗位聚集城市:紐約、芝加哥及舊金山.b.薪資:平均年薪為11萬(wàn)美元.c.崗位數(shù)量:崗位數(shù)量約為21 000個(gè).圖1為采用計(jì)算機(jī)語(yǔ)言從事相關(guān)工作的平均薪資,圖2為采用計(jì)算機(jī)語(yǔ)言從事相關(guān)工作的崗位數(shù)量.
圖1 采用計(jì)算機(jī)語(yǔ)言從事相關(guān)工作的平均薪資Fig. 1 Average salary for related work in computer language
圖2 采用計(jì)算機(jī)語(yǔ)言從事相關(guān)工作的崗位數(shù)量Fig. 2 Number of jobs using computer language to engage in related jobs
當(dāng)下計(jì)算機(jī)編程語(yǔ)言總數(shù)達(dá)到幾萬(wàn)種,但是最流行、最受歡迎的編程語(yǔ)言大致有十幾種.文章通過(guò)對(duì)這些最流行、最受歡迎的計(jì)算機(jī)語(yǔ)言的對(duì)比,給出它們各自的特性.從計(jì)算機(jī)語(yǔ)言的優(yōu)勢(shì)與弊端等方面給出這幾種語(yǔ)言的對(duì)比分析,為今后從事計(jì)算機(jī)編程的人員提供一些參考.