從語言層次的角度看為什麼要精通C語言

編程語言 彙編語言 Linux 數據結構 寧哥實戰課堂 2017-07-14

談到C語言,很多人的第一反應就是定義變量、if...else...等這些細節語法,然而更應該時刻不能忘記的就是它在編程世界中的位置。前者那些是語法細節,後者是更需要一種宏觀認識,才能對它理解的越來越深刻。為什麼有句話說“十年都不敢說精通C語言”是有一定的道理的。所以,這裡從宏觀上來看待C語言。

編程語言一開始是由0101這些機器碼編程開始的,那時候的編程的確是一種只有高智商的人方可做的工作,因為你得背誦一堆堆的指令,如:ADD指令假設為10011100,這你得記住!所以,這樣的編程要麻煩的多,也不利於普及,人數力量有限,就不能把功能做的太強大。

所以前輩們根據社會需求改進了,提供了最初的翻譯器:彙編。這樣人們不再需要寫機器指令如:10011100,而只要寫ADD,通過彙編工具就可以把ADD轉換成機器碼,從而簡化了編程,這是最初的為人而做的編程語言:彙編語言。然而這種語言還不能解決一個事情,那就是你寫的指令是由機器CPU的指令系統決定的,言下之意,不同的CPU指令系統就決定了你寫的指令是不一樣的。也就是移植性的問題,這個不是彙編語言產生的,而是本來就有的,彙編只是還沒解決。

移植性的問題不解決,那麼同樣的軟件在不同的平臺就得又要重新寫一套,甚是麻煩。

所以更上層的編程語言就應該出現了,這就是C語言。它解決了CPU指令系統的跨平臺,但是越來越多的對硬件的操作,都被封裝為各種各樣的驅動,由操作系統來承載,所以現在的跨平臺不但是要CPU指令系統的跨平臺,還要包含操作系統的跨平臺。這樣就要繼續產生更高級的跨平臺,如:java。java是通過弄出中間字節碼的方式(而不是最終的二進制的方式)來實現更完美的跨平臺。

雖然是功能上解決了,但是犧牲的卻是代碼質量。兼容性越好,需要考慮的異常就會越多,容錯性也就要做的更好,代碼則會更多,這樣又對編譯器的功能要求越來越強大,功能強大則意味著性能會降低,就像整體的效率是由串聯電路上的多個關鍵環節共同決定,最差的那個環節決定了整體的效率。因此越是上層的編程語言,性能勢必越低下。表現為:功能強大的東西需要底層語言來開發。所以遊戲行業的引擎是不宜用PHP和JAVA來開發的,都是用C/C++來開發...否則就會卡到死...同理,安裝軟件和APP中很卡的軟件,就是因為用上層語言來開發而導致了無法解決的性能問題。

所以,不管是人們追求的火熱行業:嵌入式,移動互聯網,物聯網,雲計算,大數據,這些的性能要好,就得是C/C++去支撐。更多技術行業,水到深處,就是落實到C/C++了。

如:導彈的航行速度8000米/秒。試想你的程序如果有0.1秒的誤差,那麼你將會誤差800米,這就不是指哪打哪,而是指東打西了,打的牛頭不對馬嘴。

差之毫釐謬以千里,這句話在編程效率和性能領域內比比皆是。

現在追求的是速度,速度,還是速度!!!

1:性能對比參考:

效率最高的是機器語言。其性能大概是彙編語言2倍;而彙編語言又是C語言2倍;而C語言又是C++的1.5倍;C語言是JAVA的5倍;

如果從速度上來看:機器語言執行1秒,彙編語言要2秒完成,C語言要4秒完成,C++要6秒,JAVA要20秒完成,黃花菜估計都涼了。

語言越高級,速度越慢;

2:語言的層次發展彙總:

圖示:

從語言層次的角度看為什麼要精通C語言

3:C語言地位...

C語言的核心地位從這裡可以看到,它是其他語言如:C++以及更高級語言的基礎語言。C語言學不好,C++難精通,C/C++學不好,JAVA難精通,PHP同樣難精通,JS同樣難精通,數據結構和算法的必學基礎課...linux操作系統難把握。這些都是連貫到一起的,就像應聘PHP高薪的職位,別人不是考你PHP的語法,而是問你linux操作系統,數據結構,Nosql這些去了。

C語言是有史以來最為重要的編程語言,要進入編程行業高手級別必學C語言,當然要掙大錢必須要精通C語言。它是所有大學理工科必學的科目,也是未來科技中的核心編程語言。是幾乎所有名企、外企、高薪編程職位的面試比考內容。做黑客、紅客也必須掌握的編程語言。

所以,才是:學好C/C++,走遍全球都不怕。現在趕緊惡補C語言...,不論你現在是做.NET,還是JAVA,還是PHP,還是JS...《C語言,好爽》2017,就是為它而生的!

相關推薦

推薦中...