程式設計師的世界永遠有一個亙古不變的話題:誰才是世界上最好的程式語言
有人說C,有人說Java,有人說PHP,還有人說Python
為此,他們爭論的面紅耳赤,喋喋不休
往往這個時候,我們MATLABer表現得異常的peace
我經常在朋友圈看到這類文章
這幫人肆無忌地炫耀著自己使用的程式語言才是最受歡迎的,而作為一個小眾的MATLAB公眾號博主,我好嫉妒!
每個月我都會偷偷逛一逛TIOBE榜單,看一看這個月MATLAB的排名有沒有上升,然而毫無驚喜可言,MATLAB的排名非常穩定,基本在17名左右徘徊...
我很好奇,這些年MATLAB的排名走勢都是怎麼樣的,而MATLAB同類型的軟體他們的情況又是怎麼樣的
然後我就特別想用MATLAB做一張TIOBE排名的動態可視圖,像平時常看到的人口變化那樣的動圖
今天我們來聊一聊如何用MATLAB製作這樣的動態圖
先簡單介紹一下什麼是TIOBE榜單
TIOBE排行榜是根據網際網路上有經驗的程式設計師,第三方供應商,並使用搜尋引擎(如Google,Baidu等)統計出排名數據,其結果作為當前業內程序開發語言的流行使用程度的有效指標
打開TIOBE排行榜點擊相應的程式語言,就可以查看各個語言從2001年到目前為止的流行指數的變化
從MATLAB的指數曲線可以看到在2017年5月達到巔峰的2.06%之後,接下的幾年一直在走下坡路
TIOBE只能查看當期的指數排名,而20名之後的程式語言又獲取不到具體的數據,排名統計看起來像是一件容易實現的事,卻因為數據源的原因成了一個難以解決的問題
我嘗試了不少思路,終於找到了一個辦法,推薦大家一個叫網際網路檔案館的網站(Internet Archive)
這個網站會定期收錄並永久保存全球網站上可以抓取的信息,比如TIOBE,只需要在網際網路檔案館的頁面上輸入TIOBE的網址連結,就能查看這幾年被收錄的網頁
網頁數據結構很清晰,一個for循環,webread讀取網頁,正則法處理網頁信息之後,我爬取到了2016年到目前為止每個月的TIOBE TOP 50數據,包括程式語言排名情況,以及流行指數
然後通過barh命令,作出橫向柱形圖,把MATLAB所在數據標紅
RankAll = barh(RankNum); %RankNum:編程排名佔比
xlim([0,20])
set(gca,'YTick',[1:1:20])
yticklabels(ProgName) %ProgName:程式語言名稱
RankAll.FaceColor = 'flat' ; % MATLAB排名標紅
RankAll.CData(id_MATLAB,:) = [1,0,0];
接著for循環,每次循環更新柱形圖,並保存為圖片,循環結束之後,通過imwrite命令,把所有圖片寫入保存為gif動圖
for i=1:60
%獲取當前圖片
A=imread(['pic',num2str(i),'.png']);
[I,map]=rgb2ind(A,256);
%生成gif,並保存
if(i==1)
imwrite(I,map,'pic2gif.gif','DelayTime',0.5,'LoopCount',Inf)
else
imwrite(I,map,'pic2gif.gif','WriteMode','append','DelayTime',0.5)
end
end
從動圖可以看出,Python這幾年一直保持前3的位置,非常火爆
而曾經和MATLAB不相上下,偶爾還會被MATLAB遠遠甩在身後的R語言,今年的表現特別強勁
我查了一些資料,TIOBE Software執行長Paul Jansen解釋了R為什麼如此出色的原因:
「統計程式語言R在7月從第9位升至第8位,創造了新的記錄。不久前,Python似乎贏得了統計編程之戰,但是R的流行程度在Python的不斷提升中仍在增加。有兩種趨勢可能會增強R語言:1)商業統計語言和軟體包(例如SAS,Stata和SPSS)的時代已經結束,大學和研究機構採用Python和R進行統計分析,2)需要大量統計和數據挖掘才能找到針對COVID-19病毒的疫苗。結果,易於學習和使用的統計程式語言現在開始流行」
在過去的5年,MATLAB最好的成績是第10名,大多數時候排在15名左右,但是在2019年9月之後,MATLAB的表現不太理想,曾兩度差點迭出TOP20榜單
至於MATLAB的排名為什麼這麼低,我個人感覺,還是和商業軟體的本質離不開,價格形成使用門檻,哪怕是1塊錢也會流失用戶,何況MATLAB的License還不便宜,除了目前Simulink難以替代,在許多和Python、R有重合的領域,不少用戶也轉向了Python和R
當然,這也並不是一個簡單到能用一句話解釋的清的問題,影響因素還有很多,歡迎大家在留言區分享自己對這個問題的看法
總的來說,還是希望MATLAB多加把勁吧!不然,這個小眾的公眾號估計很快就要停更了…
以上就是今天關於MATLAB排名動態圖製作以及網際網路檔案館的分享,希望對大家平時的工作學習有所幫助
往期推薦
你願意和2020年和解嗎?
讓天下沒有難改的Simulink模型
吐槽一下MATLAB的workspace
考個駕照,逼得我把MATLAB都用上了…
一把王者榮耀的時間,讓你學會MATLAB GUI
MATLAB處理數據,掌握這7個小技巧就夠了!
還在用GetData提取曲線數據?MATLAB表示不服
MATLAB GUI滯銷工具開發人員
和你一起用MATLAB的角度看世界