為什么要學C語言
發(fā)布時間:2021-03-04 16:08:35
為什么要學C語言
為什么要把C語言作為第一語言去學習?
C語言(以及C++)幾乎是現(xiàn)今計算機軟件的基石,無論是操作系統(tǒng)、其它語言的編譯器,甚至電飯煲里的單片機運行的程序,大多數(shù)是用C/C++編寫的。
如果你不是懷著功利主義去學習編程,C語言其實是一個不錯的編程入門語言。
首先,C語言相對許多現(xiàn)代語言來說是十分簡單(或者說是原始)。它沒有內(nèi)置面向?qū)ο?、函?shù)式編程、源編程等編程范式的功能,只有30來個關(guān)鍵字,少量的概念。可以比較短時間內(nèi)完整地學完這個語言。
第二,學習C語言適合同時學習計算機構(gòu)架,各種數(shù)據(jù)類型(包括重要的指針)都是直接能和計算機構(gòu)架的概念對應,語言里面沒有魔法,都是很平凡直觀。你會知道數(shù)據(jù)在內(nèi)存中是怎么存儲的,占多少個字節(jié)。很多語言的抽象層次更高,不能做到這一點。
第三,很對語言都有類似C語言的語法(如C#、java、javaScript),例如花括號、分號、注釋、if、for、while、do while等等。用C語言入門編程后,這些知識可以過渡至其他語言。
由于大多數(shù)程序員或多或少學習過C語言,作為一門[通用語],各大網(wǎng)站都會介紹一些編程相關(guān)的知識,有些上班族工作中會C++/C#比較多。很多學C語言的學生不知道怎樣寫一些工程上有用的東西,有些學生會從零開始的JSON庫教程就是用C語言作為例子
C語言中會有一些有意思的小知識點,比如:
malloc的坑,分少了會buffer overflow,忘記free了又會造成memory leak
unsigned int等
如果你接觸C語言,但不是系統(tǒng)學習和掌握的話,就不懂對應的系統(tǒng)知識,只能看著非常的confusing的bug找不出原因
編程中一個重要的概念是抽象,簡單來說,就是把不需要的細節(jié)隱藏起來。
舉個例子
你在用筆寫字的時候,不會考慮筆頭的構(gòu)造是怎么樣讓墨水從筆芯里面流出來,然后留在紙上而只需要考慮這支筆能不能用。
C語言是面向過程的,所以抽象程度相對較低,更像是需要一拳一腳練習的《少林基本功》,所以搞清楚,要想學習編程,并且想在這條路上走很久的話,建議好好學練好扎實的基本功,為了更方便以后的學習。
C語言更像是武功的基礎(chǔ),《python》這樣的語言也許一上來就直接舞一套《辟邪劍法》,但是如果對于體內(nèi)真氣走向不清晰的話,一旦出問題就容易走火入魔,更甚至是只有厲害的劍招,沒有雄厚的內(nèi)力支撐,這樣的后果就是,一旦江湖再出現(xiàn)什么厲害的武功,你就只能感嘆一句“*****”,然后加入爭奪秘籍的隊伍中,否則只能淪為后背的墊腳石。
而C語言就是你要清楚體內(nèi)每一根經(jīng)脈的走向,真氣匯聚的走向。這個不如python那樣好學,但是相信我,只要熬過這個坎,別說什么辟邪劍法了,你就是心情大好想要打一套降龍十八掌,發(fā)一套六脈神劍,也只會感嘆一句,天下武功果然是殊途同歸啊,這就是高手和宗師的區(qū)別,也是個人價值的體現(xiàn)。
《python》這種語言,有個兩三年其它語言經(jīng)驗之后,想學的話,一兩周就能快速上手,而C語言這樣的語言,你搞五年《python》,難度對你來說都低不了多少,還是一個學習的過程。
天下武功出少林,對于編程語言更是如此,C語言作為始祖級的語言,肯定有缺點,但是這種講究一拳一腳的練武方式,是普通人成長為宗師最佳的方式之一。
你看江湖,一會來個辟邪劍法,一會來一個九陰白骨爪,偶爾降龍十八掌還來跑個龍?zhí)?,但是我少林武功依然屹立不倒,這也就是為什么我說要先學C語言,然后才考慮C++或Java還是python還是PHP的原因。
學習有提高效率的方法,但是絕對沒有捷徑可言。
- 上一篇:傻傻分不清的網(wǎng)絡(luò)知識
- 下一篇:軟件測試的基本問題