關(guān)于編程語言,大家一直在爭(zhēng)論"誰才是最好的編程語言",可一直也沒有一個(gè)定論。今天我們不再老生常談?wù)l才是最好的編程語言,而是反其道行之,看看程序員最想diss哪種語言?
Stack Overflow中有標(biāo)簽功能,程序員可以添加標(biāo)簽來標(biāo)注自己喜歡或者不喜歡的工作,同時(shí)這也為我們研究成千上萬程序員的喜好提供了素材,本文將著重筆墨于編程語言。衡量一種編程語言流行程度的方法有千萬種,例如 ,而本文的數(shù)據(jù)來自用戶標(biāo)簽。
編程語言
如何將標(biāo)簽作為衡量標(biāo)準(zhǔn)呢?每個(gè)標(biāo)簽都有兩極,我們并不是單純的看喜歡或者不喜歡,而是看不喜歡標(biāo)簽的占比,如果是50%那么就說明它的喜好不是很明確,如果是1%,那么就說明絕大多數(shù)的人是喜歡的。
首先,我們先來看一下編程語言列表,在Stack Overflow中程序員提到的編程語言多達(dá)2000多種。
通過上圖的調(diào)查結(jié)果,我們發(fā)現(xiàn)Perl ,Delphi和VBA處在程序員最不喜歡編程語言的行列中,緊跟在后面的是PHP,Objective-C,Coffeescript和Ruby。而R語言則是最受程序員歡迎的編程語言。
如果,我們?cè)诎涯抗饩劢挂幌拢覀兙蜁?huì)發(fā)現(xiàn)最喜歡的語言往往也是快速增長(zhǎng)和發(fā)展的語言。例如,R,Python,Typescript,Go和Rust都是在Stack Overflow中快速增長(zhǎng)的。而Perl,Objective-C和Ruby等語言市場(chǎng)正在不斷萎縮。
我們通過比較每種語言的市場(chǎng)規(guī)模和增長(zhǎng)速度與不喜歡的百分比來檢驗(yàn)上文中提到的結(jié)論。下圖中橙色點(diǎn)代表最不喜歡的語言。該數(shù)據(jù)統(tǒng)計(jì)我們限制在了高收入國(guó)家,例如美國(guó),英國(guó),德國(guó)和加拿大。
一般來說,成長(zhǎng)的標(biāo)簽與不喜歡的頻率存在著一種關(guān)系。如果不喜歡的比例超過3%,那么這門編程語言在Stack Overflow中基本都處于市場(chǎng)萎縮的狀態(tài)。而R,Rust,Typescript和Kotlin在Stack Overflow中都屬于快速增長(zhǎng)的標(biāo)簽。
但是也有例外,其中之一就是Clojure。在調(diào)查中幾乎沒有人表示不喜歡它,但是它在去年開始快速萎縮。另一個(gè)例外是MATLAB,沒有很多人表示不喜歡它,但它也正在縮小。這可能和調(diào)查數(shù)據(jù)有關(guān)系,任何Web開發(fā)人員都可能吐槽PHP,C#或Ruby,但是沒有從事過數(shù)據(jù)分析工作的人卻無法吐槽MATLAB表達(dá)意見。
除此之外,出現(xiàn)這種情況的原因還有一種。那就是如果大家已經(jīng)感覺到這種語言正在越來越流行,大家就會(huì)更樂于表達(dá)自己的不喜歡。長(zhǎng)此以往,我們可以預(yù)見到也許不喜歡的領(lǐng)域中往往蘊(yùn)含著技術(shù)的自然進(jìn)步。
上文我們討論了程序員最不喜歡的編程語言,接下來我們探討一下大家最不喜歡的技術(shù),本文將技術(shù)范圍限制在了Stack Overflow中討論超過1000以上。
從上圖中我們看到微軟的好幾個(gè)技術(shù)都上榜了,例如Internet Explorer和Visual Basic以及"Microsoft"的自身標(biāo)簽。一些較舊的語言,如COBOL,F(xiàn)ortran和Pascal也出現(xiàn)在了榜單中。
需要強(qiáng)調(diào)的是,這并不是對(duì)技術(shù)、質(zhì)量或者人氣的指責(zé)。這只是表達(dá)哪些技術(shù)在人群中,至少是一部分人群中帶來了負(fù)面的情緒和不好的體驗(yàn)。
除了不喜歡的技術(shù),我們還統(tǒng)計(jì)了廣受歡迎的技術(shù)。
標(biāo)簽網(wǎng)絡(luò)
我們可以將所有的標(biāo)簽組合成一個(gè)故事,形成一個(gè)網(wǎng)絡(luò)。之前,來代表整個(gè)軟件生態(tài)系統(tǒng)。我們根據(jù)每個(gè)標(biāo)簽的不喜歡程度對(duì)節(jié)點(diǎn)進(jìn)行著色,了解生態(tài)系統(tǒng)的哪些部分比其他標(biāo)簽更具爭(zhēng)議性。
上圖中我們看到Microsoft(以C#和.NET為中心),PHP(以及WordPress和Drupal)以及移動(dòng)開發(fā)(特別是Objective-C)的子生態(tài)系統(tǒng)中都存在極化標(biāo)簽集群。在操作系統(tǒng)集群中,我們可以看到諸如OSX,特別是Windows的系統(tǒng)有很多diss者,但是像Linux,Ubuntu和Unix卻沒有吐槽者。
競(jìng)爭(zhēng)
就像有人會(huì)有特別喜歡的事物,他們有沒有特別不喜歡的語言或技術(shù)呢?我們可以使用一個(gè)特殊的φ系數(shù)來測(cè)量這個(gè)值。
這就突出了軟件生態(tài)系統(tǒng)的一些"競(jìng)爭(zhēng)對(duì)手":Linux vs Windows,Git vs SVN,vim vs emacs以及R vs SAS。它們之間的關(guān)系大多數(shù)都不是相反的,而是反映了解決問題的兩種相似方法。很多人建議要從過去的流行技術(shù)過度到更現(xiàn)代的技術(shù),SVN由Git取代,XML替換為JSON,VB替換為C#。這對(duì)程序員來說是非常有意義的,因?yàn)闆]有人愿意使用他們認(rèn)為已經(jīng)過時(shí)的東西。