我們是多麼地喜歡各種行動裝置啊!記得曾經照相手機讓我們記錄最寶貴的時刻,而網際網路及其多種通訊工具使我們能夠與遙遠的朋友和家人保持聯絡。但我們通常並不會想到實現這個互連世界背後的「程式語言」(programming languages)。

然而,值得注意的是,隨著智慧型手機與穿戴式裝置等行動裝置普及,近來有些程式語言的「人氣」開始起了變化,這讓我們有機會得以一窺數位世界的走向,同時也提醒自己究竟發展到什麼地步了。

Python穩居龍頭寶座

IEEE Spectrum在今年九月發佈2019年程式語言排行榜,許多人可能會驚訝地發現Python仍保持其龍頭寶座。自2017年以來,Python這種基於腳本(script-based)的語言,在IEEE Spectrum的排名中一直排名第一。

但這其實一點都不意外。IEEE採用加權標準對語言進行評分。去年,Python的得分為100,而C++的得分為99.7,Java為97.5分,C則有96.7分。然而,今年,程式語言領域出現了一些變化。Python仍以100分之姿位居榜首,但Java得分掉到96.3,排名卻前進至第二。C以94.4的得分排第三名,而C++的得分與排名則雙雙滑落至87.5分與第四,而統計程式語言R以81.5的得分排名第五。JavaScript、C#、MATLAB、Swift和Google Go依次排名第六至第十。

20191004_language_NT01P1

2019年十大程式語言排行榜(來源:IEEE Spectrum)

值得注意的是,IEEE Spectrum的排名包括用於支援電子和電機工程之硬體和軟體應用的所有程式語言。IEEE主要根據IEEE、Reddit、Stack Overflow、Twitter、Google、GitHub、CareerBuilder、Hacker News和GitHub等來源提供的11種測量指標,評選出今年度的排行榜。

IEEE並不是唯一對程式語言進行排名的組織。TIOBE也專門針對軟體發佈了程式語言的年度排名。在不考慮硬體的前下,TIOBE的2019年程式語言排行榜顯示Java是最常用的語言,其後依序是C、Python、C++、C#、Visual Basic .NET、JavaScript、SQL、PHP和Objective-C。

20191004_language_NT01P2

TIOBE程式語言Top 10排名走勢(來源:TIOBE)

10年前的排名

在2010年,TIOBE Programming Index發佈的十大程式語言排名分別是:Java、C、C++、PHP、(Visual) Basic、C#、Python、Objective-C、Perl和Ruby。而IEEE在2014年首度發表的排行榜中,也包括了C#、PHP和Ruby。

發生了什麼變化?

對於某些程式語言而言,例如Ruby和Ruby on Rails,執行速度和啟動速度還不夠快,因而無法全面支援各種商業產品。而其他有的語言,如PHP,由於安全性較差是導致Facebook等公司未能繼續使用該語言的重要因素。

Python、Java、JavaScript和C則由於是通用語言而使其得以廣泛使用。特別是針對Python而言,有許多專用的工具庫可支援機器學習、深度學習(Theano)、人工智慧(AI),以及針對微控制器(MCU)和小型電腦(如Adafruit、Arduino和Raspberry Pi)的自造者工具庫。它還具有可輕鬆讓Python程式碼與其他產品或庫(如Google Tensor Flow和Microsoft Cognitive Toolkit)搭配使用的工具庫。 Python有多種用途,而且是一種相當容易學習的程式語言,同時還提供當今大數據(Big Data)世界所需的安全性。

更多因素:硬體、安全性、行動裝置

還有一些其他因素可能影響程式語言的普及。程式語言固有的安全性是其中的原因之一,另一項素是行動裝置的普及。根據統計,在2018年,70%的美國人都擁有智慧型手機,50%的人擁有平板電腦。在這些行動用戶中,90%的連網時間都花在使用應用程式(App)而非網際網路。

行動裝置確實是推動程式語言普及的重要因素之一,因為某些語言更適合用於開發行動App,或者更適於搭配平板電腦和智慧型手機等可攜式裝置使用… ——這也讓我們想到了另一個因素:硬體。

掌握我們日常生活各種功能的行動裝置與穿戴式裝正置日益普及,包括從睡眠和活動監測器到智慧手錶和穿戴式裝置等所有裝置。隨著穿戴式裝置普及,以及基於桌上型電腦的標準軟體減少,可支援這種需求的程式語言普及性勢必會再進一步地增加。

過去十年來發生了許多變化,隨著我們朝著更加密切互連的未來前進,還將會看到更多的變化。目前,使用最廣泛和最安全的程式語言將仍然是使用最廣泛的語言,但有誰知道程式的未來將會如何發展?尤其是隨著電子產品工程(例如憶阻器)的不斷發展,未來的變化與發展無限!

編譯:Susan Hong

(參考原文:10 Years of Programming Language Evolution,by Cabe Atwell)