這是我在知乎2022年寫的一篇原創(chuàng)回答,最近看到重新翻出思考下:https://www.zhihu.com/question/429050536/answer/1574860404
C語言以其易于入門的特性著稱,它允許開發(fā)者深入底層系統(tǒng),直接進行內(nèi)存操作,這一能力的核心在于其強大的指針機制,使得C語言在實現(xiàn)高效程序方面表現(xiàn)出色。上述這些特點自然就是嵌入式行業(yè)的首選語言,我記得大一開始學習51的時候就有位大佬跟我說單片機開發(fā)80%的難度在于C語言。
既然C語言這么重要,那需要達到什么水平呢?其實這種水平分幾種,一種就是只針對語言本身的,這個其實你可以去牛客答一答華為的C語言面試題,如果基本都會,那語言層面你就沒問題了。當然我也見過很多面試題答的很溜,實際上手不行的情況,這就是另一種考量,看實際的完成作品的數(shù)量和質(zhì)量(這里的完成可以借鑒,但是必須自己的思考,否則后期很難提高)。
因為C語言是可以從事非常多不同類型的工作開發(fā)的,但就單片機開發(fā)而言,如果可以獨立完成智能小車之類的產(chǎn)品,C語言其實就算入門了,主要涉及的技術就是模數(shù)電采集抓換,對IO的高效利用,代碼量300左右可以獨立完成平衡智能小車的設計,功能可以是自動尋跡,自動避障,遙控控制,原地轉(zhuǎn)彎,藍牙和WiFi接口的使用,代碼量1000行左右,可以算大學就沒白學吧??梢栽O計實現(xiàn)四軸無人機系統(tǒng),完成單點控制,地圖巡航,自動避障(可以參考大學生電子設計大賽作品),因為這時候使用了很多庫函數(shù),單純的設計代碼量6000行左右,基本畢業(yè)找工作是沒什么問題了。
當然我自己本科也就達到這樣的狀態(tài),后邊C語言的提高其實更多的要靠工作的難度來提高,涉及非常多的困難,為了解決這些困難,順帶提高了能力,這也是去大公司好團隊的意義所在,不然沒有難度的工作只會浪費你的時間,你的收入自然也就上不去(小公司什么都做,持續(xù)內(nèi)耗并不是難度哈,難度的定義是最終一定會有結論,但是小團隊往往沒有這樣的執(zhí)行力)。
當然上述說的C語言只是針對單片機開發(fā)而言,如果想達到更高的層次我個人建議最好伴隨其他的基礎學習,技術是綜合的體現(xiàn),不簡單看一門技能,針對嵌入式開發(fā)的話,模數(shù)電和電路設計也是要學習的,因為實際的產(chǎn)品設計中最多的還是和各種信號打交道,不熟悉硬件是很吃虧的,但是要自己有所側重,如果不準備走硬件工程師的路,那還是專注于軟件吧,這部分可以看我之前寫的學習之路那篇文章總之,C語言是一門入門簡單,過程很精彩,精通很難的語言,對于嵌入式更是如此,要多看好的代碼好的著作,多研究開發(fā)項目,那隨著經(jīng)驗的增加水平自然也就越變越強了
未完待續(xù),持續(xù)更新!以防后邊找不到可以點贊收藏下!