【機器之心】錯誤提問和解決遍覽編程語言的發(fā)展歷程
2021-10-09
機心合輯
參與:杜偉、戴一鳴
自2008年成立以來,一直致力于為各類開發(fā)者提供幫助,開發(fā)者也提出了大量涵蓋所有開發(fā)領(lǐng)域的問題。但是開發(fā)人員必須尋求解決的問題是什么?本文作者對過去十一年人們的提問進行了詞云統(tǒng)計,通過錯題和解法探索了編程語言的發(fā)展歷程。
01:27
在這篇文章中,作者選擇了11種最流行的編程語言(以標簽出現(xiàn)的頻率來衡量),希望能找出這些問題的共性和差異。
首先觀察下面選擇的11種編程語言:
作者精選的11種編程語言,包括Java、C#等
從開發(fā)者原創(chuàng)問題的數(shù)量來看,自誕生以來,相關(guān)問題被問的最多。這可能是因為它廣泛存在于各類應(yīng)用和服務(wù)中:無論開發(fā)者從事何種互聯(lián)網(wǎng)工作編程語言有哪些,都需要了解一些知識。
雖然相關(guān)問題總體排名第一,但隨著時間的推移,我們可以看到排名靠前的名字已經(jīng)發(fā)生了變化。
2011 年,《哈佛商業(yè)評論》將數(shù)據(jù)科學(xué)家評為“21 世紀最性感的工作”。從那時起,它已成為數(shù)據(jù)科學(xué)家的首選編程語言,其使用量也在增長。2019年,超月成為提問最多的編程語言。
因此,該語言要么迅速成為最流行的編程語言,要么與其他編程語言相比,它以更高的速度被新程序員使用。
從之前的視頻來看,從2008年開始,C#就一直占據(jù)著最流行的編程語言榜的榜首,而這個時候Java和Java都不是很流行。但從2012年開始,超越C++,開始一路逆襲。同時,用戶占比也逐漸提升。最終,在2018年底,分別成為榜單的第一名和第二名。
但是這些開發(fā)人員具體問了什么問題?問得最多的框架、包、函數(shù)和方法是什么?哪些數(shù)據(jù)類型給開發(fā)者帶來了最大的麻煩?這些問題在不同的編程語言中有何不同?
為了得出結(jié)果,作者做了以下工作:
1. 從 11 種編程語言中提取 1000 個最喜歡的問題;
2. 數(shù)據(jù)清洗(工具);
3. 將一共問題(多于單詞)喂入詞云算法中,以鳥瞰視角展示不同編程語言的常見痛點。
結(jié)果如下(按編程語言):
它已有23年的歷史,成立僅11年。在過去的 11 年中,“”(上圖中的左側(cè))已成為最常見的框架問題。
它實際上是在六年前提出的。1990年被提出后,van()的發(fā)明成為了數(shù)據(jù)科學(xué)家的選擇。自然而然,最常見的問題圍繞著數(shù)據(jù)處理數(shù)據(jù)庫“”(左中)和“”(中上)。
但是,它具有廣泛的用途。它類似于“膠水語言”,在許多不同的技術(shù)領(lǐng)域都有應(yīng)用。這也可以解釋為什么“”(中下)在網(wǎng)頁開發(fā)中是一個重要的關(guān)鍵詞。
R語言
也許它是數(shù)據(jù)科學(xué)的第二選擇。R 語言和數(shù)據(jù)科學(xué)的本質(zhì)區(qū)別在于它完全為數(shù)據(jù)科學(xué)而生。數(shù)據(jù)處理中的某些概念,例如“”(右上)、“”(右上)和“”(中),似乎會給 R 語言用戶帶來更多的困惑。
R 和 R 都有非常好的處理數(shù)據(jù)的庫,盡管很多人會說 R 比數(shù)據(jù)可視化更先進。這可能也是為什么“”(中)是目前R語言用戶質(zhì)疑最多的原因。
也許用戶會發(fā)現(xiàn)它更易于使用。
紅寶石
自 1990 年代中期出現(xiàn)以來,Ruby 現(xiàn)在已經(jīng)在服務(wù)器端框架 ruby??-on-""(右上角)中確立了自己的地位。
C#
C# 是由 為其 .NET 框架開發(fā)的(右中)。
C++
C++(1985)已成為游戲開發(fā)者使用的語言。3D游戲中構(gòu)建了視覺構(gòu)建塊,基本組成為向量(右中)。
爪哇
Java(1995) 是為一個非常通用的目的而設(shè)計的——一次編譯,到處運行。在 1990 年代后期,當 PC 爆炸式增長,早期互聯(lián)網(wǎng)出現(xiàn)時,Java 成為許多應(yīng)用程序背后的開發(fā)語言。但最近,Java逐漸在系統(tǒng)中找到了自己的位置(右中)。
-C
作為這個統(tǒng)計中最古老的語言,-C(1984))這幾年牢牢占據(jù)了蘋果的OSX開發(fā)和ios(左)在(中)的開發(fā),直到該語言問世。
自 2014 年提出以來,它已經(jīng)取代了 -C 用于蘋果的生態(tài)發(fā)展。從這門語言中經(jīng)常提到的關(guān)鍵字“-c”可以看出,成千上萬的ios開發(fā)者更新了他們的知識。
PHP
PHP(1995) 是一種為服務(wù)端設(shè)計的腳本語言,主要用于web開發(fā)。現(xiàn)在還起到這樣的作用,這也是為什么這種編程語言中經(jīng)常出現(xiàn)的問題都與“”有關(guān)框架相關(guān)。
SQL
SQL 不是一種功能齊全的編程語言。它的誕生只有一項任務(wù):操作數(shù)據(jù)。由于這個特殊的目的編程語言有哪些,SQL 語言的痛點基本上都圍繞著數(shù)據(jù)庫連接,比如“”、“”、“”、“”和“”。
每一種編程語言都在不斷地朝著甚至被設(shè)計來完成技術(shù)的某個部分。R 用于數(shù)據(jù)科學(xué),而用于 IOS 開發(fā),C++ 用于視頻游戲開發(fā)。這就解釋了為什么不同的編程語言有不同的bug。例如,您經(jīng)??梢栽?SQL 中看到關(guān)鍵字“”,但在 -C 中可能很少看到它。
除了這些明顯的差異之外,這個可視化的結(jié)果還顯示了不同領(lǐng)域的本質(zhì)相似之處。基本數(shù)據(jù)類型——例如字符串和數(shù)組(但不是整數(shù)、浮點數(shù)或布爾值)數(shù)據(jù)通常是開發(fā)人員的痛點。
最后,將所有問題拼湊成一個詞云。
原文鏈接:
報告/反饋