摘要:回顧編程語言幾十年來的興衰起伏,彷佛也折射了整個信息產業的變遷消亡,想要在技術的洪流裏激流勇進,找準並學精一兩門編程語言更加顯得相當重要。
最近,TIOBE更新了7月的編程語言榜單,常年霸榜的C、Java和Python依然蟬聯前三位。萬萬沒想到的是,R語言竟然衝到了第八位,創下了史上最佳記錄。並且後續隨着業內對數據統計和挖掘需求的上漲,R語言熱度很有些勢不可擋的架勢。html
然而做爲程序員吃飯的工具,編程語言之間也造成了某種鄙視鏈,各大論壇裏瀰漫着劍拔弩張的氣氛,衆口難調。也難怪有不少初學者會有疑惑,爲何會有這麼多編程語言,我到底應該學什麼語言?前端
回顧編程語言幾十年來的興衰起伏,彷佛也折射了整個信息產業的變遷消亡,想要在技術的洪流裏激流勇進,找準並學精一兩門編程語言更加顯得相當重要。java
「有人不喜歡花括號,開發了Python;有人在一個週末設計了出了JavaScript;有人由於上班太無聊,因而發明了C語言」。關於編程語言的八卦軼事不少,但歸根結底,一個編程語言的誕生必定是需求的推進。程序員
從面向機器的語言、面向過程的語言到面向對象的語言,編程語言的歷史也經歷了由繁到簡。而互聯網崛起的90年代,無疑也是編程語言的黃金時代。數據庫
套用維基百科的總結,「1990年代未見到有什麼重大的創新,大多都是之前構想的重組或變化。」編程
但就是這樣的一個時代,倒是各類編程語言大放異彩的開始。segmentfault
彼時最主流的編程語言是貝爾實驗室兩位大佬發明的C/C++語言,互聯網的載體計算機的基礎設施,都是用這套語言來編寫的,包括Linux操做系統、數據庫、編譯器等等。瀏覽器
這也奠基了C語言在IT領域的地位,只要有計算機的存在,C/C++確定會有它們的一席之地。安全
但後來者居上的故事也隨時在發生,這裏的主角是已經落幕的昔日巨頭網景和Sun。網絡
1994年,網景發佈了一款真正的網絡瀏覽器Navigator,但受限於當時的技術限制,Navigator更像是一個本地展現頁面,不具有任何交互功能。巧的是,Sun公司在1995年正式向市場推出他們開發的Java(即Oak語言),特色是「一次編寫,處處運行」,網景看中了這個潛力股,選擇與Sun結盟。
當時的Java能夠做爲腳本嵌入到網頁中實現交互功能,即咱們所熟知的Java Applet。然而,網景認爲Java做爲網頁腳本仍是過於複雜,程序員Brendan Eich就在10天內,集百家之長,開發了Javascript,現在全部瀏覽器前端庫都須要基於JavaScript實現。
計算機的普及、互聯網的崛起,Web應用的出現,Ruby、PHP等語言也悉數登場。
如知乎做者「強哥學堂」述,「這段時間,雖然沒有創造編程語言,可是因爲大量企業的參與,編程語言獲得了空前的發展,造成了今天的編程語言的基本形態。也使得軟件開發愈來愈標準化,規模化。」
與此同時,還有一些「小衆」的編程語言,正蓄勢待發中,等待着「爆紅」的機會。
2010年iPhone 4問世,喬布斯用智能手機改寫了以後的互聯網發展軌跡。iOS和Android支撐起的智能手機市場,讓移動互聯網成爲絕對的舞臺主角。
蘋果開創了一個全新的生態,做爲iOS的應用開發語言,始於1984年的Objective-C從籍籍無名走向聲名大噪,依託各類iPhone、iPad應用程序的開發,Objective-C曾一度挺進TIOBE排行榜的Top 3。
不過,蘋果在2014年的WWDC上推出了新的編程語言Swift,支持編寫macOS/OS X、iOS、iPadOS、watchOS和tvOS的軟件應用,並在第二年宣佈開源、支持Linux。
自此以後,Objective-C的市場份額逐年遞減,從2014年的12%降低到2016年的1%。從下圖也能夠看出,新語言Swift從0開始,這幾年一直處於穩定增加中,今年1月也衝進了TIOBE榜單的第九位。
雖然一門計算機語言從編譯器、語法、基礎庫到在程序員的圈子中普及,並非短期能夠一蹴而成,但蘋果仍然以一己之力將Objective-C和Swift帶入了編程語言的主流市場,因而可知,編程語言和一個產品的生態規模息息相關。
微軟和Visual Basic的關係也是如此,移動互聯網時代以前,VB曾經依靠可視化的開發環境,成爲最煊赫一時的桌面開發工具,並一度擁有300萬開發者。並且藉助Windows操做系統市場優點,VB現在也一直保持着居高不下的熱度(遺憾的是,微軟表示不打算繼續演化 Visual Basic了)。
回到移動互聯網時代,另外一邊的Android選擇的是Java,隨着Android陣營的愈來愈龐大,Java一直是TIOBE榜單上的第一,成績最差也能拿個第二。
一個編程語言的長盛不衰,除了它自己的優點以外,其生態的建設也相當重要,畢竟用的人多了,也就能自成一派,這一點在Python的流行中體現的淋漓盡致。
當學Python要從娃娃抓起的口號開始流行時,編程語言從IT圈子進入到大衆圈。
大數據、AI的時代,Python能夠說是一騎絕塵,從數據分析、機器學習、Web開發到爬蟲開發均可以在Python的幫助下很是輕鬆的解決。
統計分析人員能夠用Python解決數據爬取和分析的問題,大學生能夠用Python解決租房的問題……
最關鍵的是,Python的學習門檻比C++,Java都要低,簡潔的語法、成熟的第三方庫,即便是非程序員羣體,也能在短期內速成。
用於統計分析、繪圖、數據挖掘的R語言也是如此,遇上了數據應用分析的潮流,天然能從衆多編程語言中脫穎而出。
針對今年7月榜單R語言創紀錄的成績,TIOBE的 CEO Paul Jansen 明確表示有兩大趨勢起着關鍵做用:一是商業統計語言和軟件包(如 SAS、Stata 和 SPSS)的時代已經結束,大學和研究機構採用Python和R進行統計分析;二是與COVID-19相關的研究須要進行大量統計和數據挖掘,因此易於學習和使用的統計編程語言熱度上升。
再好比誕生於2010年,由Mozilla主導開發的Rust語言,其更增強調安全性、存儲器配置、以及併發處理等特性。去年Facebook推出的區塊鏈項目Libra,就選擇了Rust語言來構建,由於它足夠安全。
Rust的排名也從2012年的200名開外,在最新一期TIOBE榜單上衝進了Top20。
咱們以互聯網的崛起爲分界線,能夠看到各個編程語言的此消彼長,必然伴隨着新的產品和技術。順應新技術發展的編程語言,即使時隔幾十年,也能夠從新煥發光彩。並且隨着開源社區的壯大,一門優秀的編程語言能夠博採衆家之長,成長爲後起之秀。
若是你想以編程語言立生,建議你先學習Java,而後是Python和C++,由於這三種編程語言,基本上能夠解決咱們工做中遇到的大部分問題。
因此,不妨先試試華爲雲推出的Java開發全棧成長計劃,讓你0基礎入門,構建Java技能體系,向全棧工程師邁進!
最後,如C#之父Anders Hejlsberg曾總結:若是要我歸納在將來十年編程語言會變成什麼樣,首先,我認爲編程語言應該變得更加「聲明式」,咱們須要設法爲語言引入一些如元編程,函數式編程的能力,同時可能也要尋找讓用戶有辦法擴展語法,使他們能夠構造領域特定語言等等。不過整體來講我想強調的是,對於編程語言,新的範式則是「多範式」編程語言。
本文部份內容有參考如下文章:
一、《IT行業激盪30年->編程語言變遷史》
https://zhuanlan.zhihu.com/p/106808045
二、《計算機和編程語言的發展歷史》