2 7 趣談嵌入式C語言十層境界

2021-10-02 15:09:13 字數 2193 閱讀 5125

至此,我們已經完成了嵌入式c語言快速入門。這部分培訓一般是從新人招聘完畢到正式入職之間完成的,因為需要多次反覆,外加遠端互動的原因,耗時較多,但大部分人會在兩個月內完成。

在長期實踐中我發現,經過這樣的訓練後,雖然新人初次面對真實的產品**時依然會磕磕碰碰,但會少一些那種雙目茫然的木訥感。隨著熟練程度的持續提公升,大家很快就可以找到節奏,比較快融入團隊了。而且,隨著工作閉環、**審核、註冊機制等策略的及早灌輸,也會幫助新人和團隊其他成員盡快同步,利於新人融入團隊。

如果計畫從事嵌入式領域軟體研發,實際上需要c語言達到相當熟練的程度。入職後,持續的技能提公升都是內嵌在平時工作中的,很少再有時間進行專門的培訓。為了幫助大家的持續提公升,我們團隊內部喜歡採用知識庫工具,下一章會專門介紹。

不過,在此之前,如果能讓大家知道需要掌握哪些c語言技能,明白自己所在的位置,對後期很有幫助。某日,一時興奮,我將嵌入式c語言分為十層境界,大家不妨趣談趣談。

第一層

初學c語言,基本上是拿一本c語言書籍,從helloworld開始。好不容易學完,也僅能記住一些零碎的語法,勤奮者,頂多照書畫貓敲幾個例程。

遺憾的是,大部分工科生應付完考試,就止於此了,等大四找工作時,連c語言基礎語法早就丟到了爪哇國了,這也是為何招聘時我們發現很多人一問三不知的原因了。

第二層

學習完c語言後,會有小部分人會對程式設計產生了濃厚的興趣,最直接的體現就是會嘗試用c語言寫一些好玩的程式。

這類人的比例還是比較小的,我以前招聘,最喜歡問的乙個問題是"描述乙個憑興趣寫的c語言程式",可惜能答上來的寥寥。受打擊多了,讓我從充滿希望到了徹底絕望了,以後直接雪藏該問題,僅問一些基礎知識了。

實際上這一層反而很關鍵,很多的資料結構、演算法知識都是在這一層學習的,而且如果不跨入該層,連第一層也會歸零。記得在大學時,我花了很長時間研究八皇后、青蛙跳等趣題,計算機基礎素養也是在該過程中潛移默化慢慢提高的。

第三層

在c語言使用過程中,基本上採用碰乙個問題解決乙個問題的策略,時間長了,很多人都會有一種衝動重學c語言語法,是所謂查缺補漏。此時就可以看比較高階的c語言書籍了,我一般還是推薦《k&r》,不僅是大師的書,最主要的原因還是很薄,職場時間緊,擔心大家太監了。

我們的新人剛開始大多都處於這一層。

第四層

在接觸嵌入式c語言後,慢慢的要和硬體打交道了。首先接觸的就是c語言執行環境構建、初始化、堆和堆疊等概念了。經過該過程的鍛鍊,對c語言的理解應該比較完善了,而且硬體也開始入門了,算是登堂入室了。

第五層

隨著對硬體的進一步了解,很多時候需要去理解c語言對應的組合語言,優化技巧及取捨策略,甚至需要經常檢視c語言背後的匯程式設計序,編譯原理的知識開始登堂入室了。這是比較難的一關,建議大家多在**生成和優化方面下先功夫,對解決一些驅動和深層次問題很有幫助。

第六層

對硬體的進一步加深理解主要側重於體系結構了,理解了這一點,才能真真明白乙個程式是如何在硬體上執行的,才能明白為何c語言叫做中級語言,才能明白int的預設定義為何叫最自然的整數表示,才能明白c語言為何有很多歧義定義,才能明白為何c語言可以在各種硬體上自然的舒展拳腳,才能……。然後,你開始對c語言開始有了一種很親切的感覺。

第七層

在該層之前,c語言相關技能基本處於外延狀態,學習到乙個新的知識點,總有想盡力用到產品中的衝動,而不管其是否合適。但隨著工作經歷的增加,程式寫多了,知識拓展的重點從外延向內延發展了,這也就是常說的智者心智,屬於計算機素養範疇。

在該境界開始慢慢體會啥叫好的程式,開始慢慢約束自己以巧妙避開有歧義的語句,開始考慮寫出的程式是否可以讓硬體更爽快的執行,開始考慮怎樣寫程式便於別人閱讀理解。

第八層

達到該層境界的人,應該都是企業的骨幹了,不能在搞個人英雄注意了,需要帶領團隊一起衝鋒陷陣了,此時開始體悟到clean code的概念,明白程式的可讀性甚至比效率更重要。

第九層

如何叫「熟悉」,爸爸媽媽肯定最熟悉自己的孩子,因為陪伴著其一起成長的。走到該境界的人,是否有衝動對c語言刨根問底啊,明白c語言各版本的發展史嗎,能否理解那些為了相容而採取的妥協策略嗎。

將嵌入式c語言分為十層境界,有點搞笑的味道,不過其中提及的諸多知識點,或許能幫助大家走的更遠。

返回目錄

——————————————

嵌入式系統開發的三層境界

嵌入式系統開發的三層境界 第一層 表現是熱衷學習和使用新的技術,但都限於區域性,比如新的 cpu 可程式設計技術 網路 有線無線 各種嵌入式作業系統 各種匯流排 甚至於新的儲存器件等。應該說第一階段對以後的發展很有作用,所以儘管向追星一樣追隨各種新鮮技術吧,保持自己的熱血沸騰和對知識的渴望最重要。其...

嵌入式學習(二) 嵌入式系統C 語言

1 從 cpu 復位時的指定位址開始執行 2 跳轉至彙編 startup 處執行 3 跳轉至使用者主程式 main 執行,在 main 中完成 a.初試化各硬體裝置 b.初始化各軟體模組 c.進入死迴圈 無限迴圈 d呼叫各模組的處理函式 下面是幾個 著名 的死迴圈 1 作業系統是死迴圈 2 win3...

嵌入式C語言總結

這幾天花了兩天時間看了一些嵌入式c語言方面的內容,以下是一些讀書筆記,記錄一下。1 不能有返回值 2 不能向isr 傳遞引數 3 isr盡可能的短 4 printf有重入問題 1 中斷服務程式isr 2 硬體初始化 1 某io 晶元被定為在 cpu的儲存空間而非 io空間,而且暫存器對應於某特定位址...