首頁>技術>

對於致力於未來從事軟體程式設計的同學來說,程式語言是是最基本的工作工具,但是當初學者面對多達幾十種程式語言的時候都會有這樣的迷惑,學習哪種程式語言好呢?學習哪一種程式語言最節省時間並且最容易找到心儀的工作?

其實結合我自己的程式設計經驗來看,入門的時候如果選錯了方向,極有可能浪費大量的時間並且建立了錯誤的程式設計觀念,這對一個軟體人員的長期職業發展不利,想成為高階程式設計師而不是一直做碼農,程式語言這一關是必須要投入精力做好的。

哪些程式語言用的最多最好找工作?

首先來看一下國際權威機構整理的程式語言排行,到底那幾個程式語言用的最多,工作機會最多,對於初學者來說,精力有限,當然要學習最主流的程式語言。

TIOBE應該是業界最知名和權威的程式語言機構了,TIOBE整理的2019年12月最新程式語言排行榜如下:

可以看到,JAVA以16.9%的佔比排在第一位,第二位C語言佔比16.1%差距不大,可以講這兩個語言是過去很多年當之無愧的霸主。

而最近幾年上升最快的程式語言就是排在第三位的Python,僅僅2019年一年就上升了近2%的比例,達到9%佔比上升到第三位。

C++作為老牌的強勢程式語言近幾年佔比有所下降,2019年下降了1.3%,目前排在第四位。

再看一下歷年來程式語言排名情況的統計

這張圖非常明顯,從1984年到2019年,C和JAVA的排名基本都處於前兩名的位置,兩強的地位還是相當穩固。而Python在最近幾年的躥升速度非常的快。C++雖然近幾年有所下降,但是第四名的位置還算穩固。

再給大家一張發展趨勢折線圖,大家應該看的非常清楚了吧

初學者要學程式語言,備選就是這四種最常見和排名最靠前的語言:JAVA、C、Python、C++。

那到底先學哪一個語言好呢?

必學語言之C語言

C語言作為傳統計算機系統的最古老也是影響範圍最廣的程式語言,是絕大多數軟體人員必學的一門語言,同時,C語言也是大學軟體專業的基礎專業課之一,這個理由夠充分了吧?

原因是因為C語言是一門與硬體結合比較緊密的程式語言,C語言由於發明的比較早,所以當時並沒有遮蔽太多的硬體細節,要用C語言程式設計,你就需要更多的跟硬體打交道,仔細的研究硬體資源如何分配,比如記憶體到底該如何使用、晶片暫存器應該如何配置。

由於C語言簡單,對於作業系統的一些基本特徵,比如多執行緒機制也沒有過多的遮蔽,你用C語言程式設計就不可避免的要深入理解多執行緒的執行和切換機制。

同時,用C語言你可以接觸到一個演算法到底應該怎樣設計,用什麼樣的資料結構、效能怎麼優化,這些程式設計基本功使用C需要都可以得到很好的鍛鍊。

有人可能覺得這不是很麻煩?對,就是因為這種麻煩,才使得你可以對整個計算機硬體系統和程式設計基礎知識建立深刻的認識,包括《計算機原理》《作業系統》《資料結構》等專業知識都可以通過C語言得到鍛鍊。

這個基礎非常的重要,如果基礎打的不好,一定會影響到你未來在程式設計領域的技術高度,沒有計算機系統觀念的程式設計是建立在沙灘上的城堡,一個深入點的技術討論就可以把你的城堡沖垮。

因此我的建議,C語言必學,而且要學好。

根據程式語言的主要應用行業選擇適合你的程式語言

每一種程式語言都有自身的特點,發明這種程式語言的時候都是為了解決某一類的問題,比如當年JAVA語言的發明者,主要就是為了適應網際網路上各種不同的硬體裝置,讓程式設計者專注於軟體功能本身,而不必費神應付搞不懂的各類硬體結構,因此JAVA就特別適合網路程式設計。

而IEEE Spectrum(美國電氣電子工程師學會)把主要的程式語言分成了四個種類:

Web:網路程式設計;Enterprise:企業程式設計

Moble:手機程式設計;Embedded:嵌入式

其中Enterprise企業程式設計可以理解為傳統的基於桌上型電腦windows或者Linux系統下的程式設計。而嵌入式程式設計是偏向底層的程式設計,跟硬體緊密相關的程式設計。

各種語言對這四種程式設計的適應性IEEE也給出了適合度打分和排名:

從這個排行上應該看的比較清楚,如果你想從事的職業是偏向底層的軟體開發,比如晶片驅動等,你需要把重點C語言學好。如果你想從事的是網路方面或者手機應用程式的開發,你應該把JAVA重點學好。而如果你想緊跟現在的潮流,做一些企業數字化或者人工智慧方面的程式設計,你應該學會Python。

當然,如果你C + JAVA + Python都精通,那你就可以應付絕大多數公司軟體編碼的要求了。

各大公司的程式語言要求

像騰訊、阿里、華為這些大公司,面試時要求會哪些語言呢?

根據我掌握的情況來看,大多數的要求都是要會C、JAVA、Python中的一種或者多種。

因為這些大公司的業務範圍都非常廣泛,他們內部不同的產品部門使用的語言都是不同的,具體要求哪種語言還要看你面試的是哪個具體的部門。

可以自行對照自己有哪些欠缺的,著重進行學習,程式設計不僅僅是學會一門語言就夠了的。

最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 面試官:為什麼 Android 要採用 Binder 作為 IPC 機制?