從C、C++、Java到Python,程式設計入門到底學什麼語言好?
最近,TIOBE更新了7月的程式語言榜單,常年霸榜的C、Java和Python依然蟬聯前三位。萬萬沒想到的是,R語言居然衝到了第八位,創下了史上最佳記錄。而且後續隨著業內對資料統計和挖掘需求的上漲,R語言熱度頗有些勢不可擋的架勢。
然而作為程式設計師吃飯的工具,程式語言之間也形成了某種鄙視鏈,各大論壇裡瀰漫著劍拔弩張的氣氛,眾口難調。也難怪有很多初學者會有疑惑,為什麼會有這麼多程式語言,我到底應該學什麼語言?
回顧程式語言幾十年來的興衰起伏,似乎也折射了整個資訊產業的變遷消亡,想要在技術的洪流裡激流勇進,找準並學精一兩門程式語言更加顯得至關重要。
程式語言的黃金時代
“有人不喜歡花括號,開發了Python;有人在一個週末設計了出了JavaScript;有人因為上班太無聊,於是發明了C語言”。關於程式語言的八卦軼事很多,但歸根結底,一個程式語言的誕生一定是需求的推動。
從面向機器的語言、程式導向的語言到物件導向的語言,程式語言的歷史也經歷了由繁到簡。
而網際網路崛起的90年代,無疑也是程式語言的黃金時代。
套用維基百科的總結,“1990年代未見到有什麼重大的創新,大多都是以前構想的重組或變化。”
但就是這樣的一個時代,卻是各種程式語言大放異彩的開始。
彼時最主流的程式語言是貝爾實驗室兩位大佬發明的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的流行中體現的淋漓盡致。
大資料+AI時代,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曾總結:如果要我概括在未來十年程式語言會變成什麼樣,首先,我認為程式語言應該變得更加“宣告式”,我們需要設法為語言引入一些如超程式設計,函數語言程式設計的能力,同時可能也要尋找讓使用者有辦法擴充套件語法,使他們可以構造領域特定語言等等。不過總體來說我想強調的是,對於程式語言,新的正規化則是“多正規化”程式語言。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30239065/viewspace-2718769/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- C、C++、Java到Python,程式設計入門學習什麼語言好?C++JavaPython程式設計
- Python函數語言程式設計:從入門到走火入魔Python函數程式設計
- Python的函數語言程式設計,從入門到⎡放棄⎦Python函數程式設計
- 到底該學習什麼程式語言
- 傻瓜程式設計入門(C語言版)程式設計C語言
- 好程式設計師分享Python從入門到精通最佳學習路線程式設計師Python
- C語言C++學到什麼程度可以寫遊戲輔助?C語言C++遊戲
- 程式設計入門學什麼?程式設計
- 入門程式設計學習,適合學python語言嗎?程式設計Python
- 參加Python培訓到底需要學什麼?好程式設計師Python程式設計師
- 第一門程式語言選什麼好?
- 純小白新手 0 基礎入門學習程式設計應該注意什麼?[java,JS,python,c 所有程式語言都可以看看]程式設計JavaJSPython
- 好程式設計師Java學習路線介紹Java到底是什麼?程式設計師Java
- 為什麼要學習Python語言?Python入門Python
- 《Python程式設計:從入門到實踐》Python程式設計
- 程式設計入門先學什麼?程式設計
- 程式設計入門之學哪種程式語言?程式設計
- 為什麼程式設計初學者會選擇 Python 作為入門語言?程式設計Python
- java程式設計師入門先學什麼開發者工具Java程式設計師
- 學習C語言的必備書籍-從入門到精通C語言
- python程式設計真的好學嗎?python入門Python程式設計
- Python函數語言程式設計入門教程Python函數程式設計
- 都說python是最佳程式設計入門語言,為什麼你學習卻是如此坎坷?Python程式設計
- 好程式設計師Python教程分享Python到底是什麼程式設計師Python
- C++入門程式設計----C++運算子(8)C++程式設計
- Python 程式設計從入門到實踐5Python程式設計
- 廣州牽引力來告訴你學程式設計先學什麼語言好?程式設計
- Windows 程式設計簡介從C/C++到Windows程式設計Windows程式設計C++
- 新手程式設計入門先學什麼?程式設計
- 資料分析用python語言有什麼好處?Python入門教程Python
- C語言/C++對程式設計學習的重要性!C語言C++程式設計
- C語言程式設計入門經典18個小程式C語言程式設計
- C++的函數語言程式設計C++函數程式設計
- python程式設計:從入門到實踐學習筆記-字典Python程式設計筆記
- 《python 程式設計從入門到實踐》序:學習目標Python程式設計
- C++語言菜鳥快速入門C++
- 從問題到程式 程式設計與C語言引論pdf程式設計C語言
- 從入門到掌握 - 系統學習shell語言