回覆列表
-
1 # IT劉小虎
-
2 # 青島趣聞軼事
不會過時,但會出現百家爭鳴的局面。
由於網際網路和移動網際網路的蓬勃發展,像JAVA,Python等語言,使用者越來越多,一度有超越C語言之勢,
但在嵌入式,C語言的地位仍舊不可撼動,現在不會,短時間內,也不會。
不會過時,但會出現百家爭鳴的局面。
由於網際網路和移動網際網路的蓬勃發展,像JAVA,Python等語言,使用者越來越多,一度有超越C語言之勢,
但在嵌入式,C語言的地位仍舊不可撼動,現在不會,短時間內,也不會。
在2000年前後,嵌入式軟體工程師有著一套非常具體的技能,他們通常是電氣工程師,不僅瞭解底層硬體的工作原理,還可以再底層編寫彙編程式碼或者C語言程式碼,以使系統滿足實時需求。
嵌入式軟體工程師不僅要了解諸如C語言的軟體開發,還要了解硬體。位、位元組、暫存器的世界,正是嵌入式軟體工程師的領域。
但是如今不再那麼簡單了在早期,嵌入式開發人員通常使用 8 位或者16位的體系結構,這些結構比較簡單,因此開發人員一般在幾個月的開發週期內便能掌握這些結構。
但是近些年來,許多嵌入式開發團隊已經轉向更加複雜的 32 位體系結構,不僅包括一些用於資料採集的取樣感測器,以及外圍的通訊裝置,還包括日益繁多的各種協議,例如 USB、DMA、 TCP/IP、藍芽等。這些複雜的體系架構,或者相關的通訊協議,開發人員往往需要數年才能真正的完全掌握。
顯然,嵌入式系統已經變得極其複雜。將硬體裝置連線到網際網路,以建立物聯網的巨大需求,在以往傳統的嵌入式C語言程式開發中是沒有出現過的。所以,這一“巨大需求”導致了一個真空——相關公司找不到足夠的嵌入式C語言軟體開發工程師了。
為了應對“真空”,有些公司並未大力培養嵌入式C語言軟體工程師,而是開始依賴具有Windows應用程式或者移動裝置程式開發經驗的人員來開發他們的實時嵌入式軟體。這會導致另外一個較為致命的問題出現:這些開發人員大都只瞭解公司分配的任務所需的高層應用程式框架,對底層硬體卻不夠了解。
這樣的公司並不在少數。因此微控制器製造商目前正在大力推動為開發人員提供高層的軟體框架和工具,真正的硬體底層開發,則由製造商完成。這使得嵌入式軟體開發人員,甚至應用程式開發人員更容易在更高層上編寫軟體,他們不必再擔心底層的硬體了,因為相關的“輪子”已經“出廠自帶”了。
顯然,這樣的嵌入式程式開發模式更加有利於一些嵌入式公司降低成本,加快產品上市時間。但是我們也可能發現,關心位、位元組、暫存器的傳統嵌入式C語言、彙編軟體開發工程師顯得沒那麼重要了,可能很快就會“滅絕”。
未來的嵌入式軟體工程師將與傳統的前輩們有著不一樣的技能,他們也不再關心硬體底層,不再關心位、位元組、暫存器,也不再關心任務的實時性,事實上,他們可能不再關心任何傳統嵌入式程式設計師需要關心的東西。未來的嵌入式軟體工程師可能只需要具備應用程式開發技能,知道如何呼叫一個 API 讓硬體做事。
但是,他們不知道為什麼要這麼做,以及 API 到底是怎樣命令硬體做事的,所以他們也不具備實時除錯硬體的技能甚至概念,無法深入到暫存器中。這些工程師,更像是遠離硬體的 Windows 程式設計師。
未來嵌入式軟體開發人員不具備底層硬體開發能力不一定就是百分之百的壞事,至少這樣的開發模式允許一些缺乏關鍵技能的開發團隊或者公司繼續發展下去,這一點可以從移動裝置領域看出。
瞭解底層硬體的傳統嵌入式程式開發人員永遠都不會被“淘汰”,否則誰能提供 API,讓上層應用程式開發人員呼叫,以控制硬體工作?
然而現實是,傳統嵌入式程式開發人員被公司忽略了。很多高科技公司更加青睞機器視覺、機器學習和其他尖端研究領域的開發人員,值得說明的是,這些尖端人才往往不屑於驅動硬體這類“基礎工作”。但是,如果沒有程式設計師能夠與硬體裝置溝通,所謂的“機器”視覺和“機器”學習又怎樣才能實現呢?