“世上語言千千萬,我卻獨(dú)愛這一種!”這句話用來形容程序員和編程語言之間的愛恨情仇實(shí)在是再精準(zhǔn)不過了。根據(jù)GitHub 2016年的開源報(bào)告,其上所有開源項(xiàng)目共包含了316種編程語言,這是一個(gè)什么概念呢?舉個(gè)例子來說,世界上共有226個(gè)國家和地區(qū),也就是說編程語言的數(shù)量比國家數(shù)量還多。
想要全部精通這些語言顯然是個(gè)不可能事件,所以編程語言的選擇就有了先后之分。編程語言的好壞之爭(zhēng)娛樂性高于知識(shí)性,所以本文不以好壞論高下,而是以熱度作為參考條件,盤點(diǎn)2017年哪些編程語言最受歡迎。
▲藍(lán)色為Java,紅色為Go,黃色為Swift,綠色為Python,紫色為Kotlin
▲藍(lán)色為PHP,紅色為Ruby,黃色為C++,綠色為C#
上圖是今年話題度比較高的編程語言在Google Trends上的熱度情況,我們從中選取Java、Python、R 、Go以及Kotlin語言來進(jìn)行分析。
Java:編程語言中的“小浣熊”
小浣熊干脆面有一句廣告詞深入人心“一直被模仿,從未被超越!”如果套用在Java身上,那就是“一直被唱衰,從未被打倒。”Java應(yīng)該是被死亡次數(shù)最多的編程語言,每月TIOBE發(fā)布新的榜單,Java都要被拉出來鞭尸,其它編程語言有了哪些新改進(jìn),Java也要出來以死墊背陪跑。
Java 是企業(yè)擁戴的頭號(hào)編程語言,它有三大殺手锏:靜態(tài)類型、更強(qiáng)大的工具,以及具備廣度和深度的庫的生態(tài)系統(tǒng)。任何語言想在這三個(gè)領(lǐng)域完全取代Java都不是短時(shí)間內(nèi)能夠完成的。
今年,關(guān)于Java熱度最高的詞語應(yīng)該就是Java 9的發(fā)布,Java 9又雙叒叕延期的新聞一直傳到了近些日子,發(fā)布時(shí)間才確定下來是9月21日。據(jù)悉,Java 9將會(huì)有9大重要改進(jìn):新模塊系統(tǒng)、支持HTTP/2.0、改進(jìn)的Javadoc、Stream改進(jìn)、使用新的工廠方法更容易地初始化Collections、接口中的私有方法、語言和語法的改進(jìn)、增強(qiáng)處理API、增強(qiáng)處理API。
Python:人生苦短,我用Python
IEEE發(fā)布了2017年編程語言排行榜,Python位居榜首。從去年開始,Python就借著人工智能的東風(fēng),熱度一路船高水漲。Python可以說是一門比較功利的語言,它不復(fù)雜,讀和寫都非常易于使用,因此就有了“人生苦短,我用Python”這句調(diào)侃。
當(dāng)然,Python的流行并不僅限于易于使用,它背后還站著一個(gè)真正的大佬——Google。自2006年起,谷歌就在多個(gè)平臺(tái)和應(yīng)用中大量使用Python。除此之外,Python社區(qū)的活躍度合支持度也非常高,同時(shí),Python在數(shù)據(jù)科學(xué)中的流行度僅次于R語言。
關(guān)于版本問題,Python的功能發(fā)布周期為18個(gè)月。目前Python基金會(huì)正在積極推行Python 3+,據(jù)悉2020年將不再支持Python 2.7。另外,Python 4也正在籌備中,據(jù)其核心開發(fā)人員Nick Coghlan透露,4.0中沒有任何深刻的變化或大的向后兼容性的破壞。
R:你們對(duì)R語言的力量一無所知
雖然,R語言在TIOBE排行榜中一直都在十幾的位置徘徊,但是在IEEE 發(fā)布 2017 年編程語言排行榜中卻位居第六。這說明R語言在編程語言中扮演的角色是“隱形富豪”,很多人對(duì)于R語言的力量一無所知。
在上文中,我們也提到了R語言在數(shù)據(jù)科學(xué)中非常流行,那么R語言可以支持哪些量級(jí)的數(shù)據(jù)集呢?talkR會(huì)議上R語言熟手表示百萬條記錄的數(shù)據(jù)集可以輕松地用標(biāo)準(zhǔn)R進(jìn)行處理;百萬到十億條記錄的數(shù)據(jù)集稍微努力一下也可以使用R來處理;十億條以上的數(shù)據(jù)集就需要MapReduce算法,而這些算法可以在R中設(shè)計(jì),并用Hadoop等連接器進(jìn)行處理。
當(dāng)然R語言的力量也不僅止于此,大數(shù)據(jù)的爆紅催生了物聯(lián)網(wǎng)的發(fā)展,很多項(xiàng)目都依賴多個(gè)數(shù)據(jù)源,而R語言恰好支持多數(shù)據(jù)源加載數(shù)據(jù);R語言的學(xué)習(xí)曲線平緩,只需了解基本編碼原則就可以通過內(nèi)置庫來處理大數(shù)據(jù);R語言與其他主流的編程語言兼容;就連托管公司也為R語言提供了解決方案。
GO:火得一路拉風(fēng)帶閃電
TIOBE將2016年年度編程語言的桂冠頒給了Go語言,這一年中Go 語言獲得了 2.16% 的用戶增長,大比分領(lǐng)先其它編程語言,進(jìn)入2017年,Go語言熱度依然不減,整體發(fā)展趨勢(shì)還是向上的。
今年已經(jīng)是Go語言1.0版本的第五個(gè)年頭了,在2月份發(fā)布了1.8版本之后,Go語言團(tuán)隊(duì)就開始慢慢向2.0版本邁進(jìn)了。據(jù)悉,Go 2.0版本首先要保證兼容現(xiàn)有的Go 1.0源代碼,其次是要找到方法來解決Go語言的擴(kuò)展問題。
據(jù)Go語言項(xiàng)目和團(tuán)隊(duì)的技術(shù)主管 Russ Cox在Gophercon上透露,目前全球至少有50萬Go開發(fā)者,Go源文件和Go代碼至少有十億行。今日頭條是國內(nèi)比較有名的在使用Go的廠商,其后端服務(wù)超過80%的流量是跑在 Go 構(gòu)建的服務(wù)上,微服務(wù)數(shù)量超過100個(gè),高峰 QPS 超過700萬,日處理請(qǐng)求量超過3000億。
Kotlin:一場(chǎng)“任命”引發(fā)的爆紅
如果要評(píng)今年熱度躥升最快的編程語言,Kotlin一定榜上有名。2017年5月,谷歌在IO大會(huì)上宣布Kotlin語言將取代JAVA作為安卓開發(fā)的一級(jí)編程語言,然后在TIOBE的六月份榜單中Kotlin就沖進(jìn)了前50,位列43位,真可謂是一場(chǎng)“任命”引發(fā)的爆紅。
近日,Kotlin 1.1.4 發(fā)布,其更新內(nèi)容如下:修復(fù) IDEA 插件中的主要性能回歸;添加對(duì)包缺省的可控性注解的支持;改進(jìn)對(duì) Java 9 的支持;添加一個(gè)用于 JavaScript 死代碼消除的工具,提高對(duì) JS 調(diào)試和 JS 單元測(cè)試支持的源映射支持;生成更高效的字節(jié)碼;為 IntelliJ IDEA 插件添加新功能;Android Extensions 插件增強(qiáng)功能。
針對(duì)于Java與Kotlin之爭(zhēng),綠鳥集成技術(shù)公司CEO Thorsten Heller表示未來Java也許會(huì)死,也許不會(huì)死,但是毫無疑問Java會(huì)受到挑戰(zhàn)。而這個(gè)挑戰(zhàn)者我認(rèn)為正是Kotlin,它的簡(jiǎn)單性、精益語法、函數(shù)式方法都是其流行度的加碼元素。