C編程語言無疑是計算機科學最成功的編程語言之一。它是嵌入式系統開發人員最流行的語言,幾乎80%的嵌入式項目都使用它。經過近半個世紀的使用,嵌入式開發人員是時候轉向更現代的語言了嗎?C是時候退休了嗎?
出于幾個原因,淘汰C并轉向更現代的編程語言的誘惑相對較大。首先,往往受到科技公司高度追捧的入門級工程師幾乎沒有C語言經驗,如今的大學課程專注于教授Python或C++等現代語言。讓他們跟上速度和經驗可能需要大量的金錢和時間投資,很少有公司對此感興趣。
接下來,雖然C編程語言非常流行,但它已經過時了。C不支持類和繼承等現代編程概念。如果你比較一下C++、Python和Rust等現代語言的特性集,C語言開始變得像恐龍了!C標準上一次添加新功能是在2011年!2017年的標準版本只做了技術上的修改和澄清,預計2023年即將發布的標準版本也很可能不會動搖局面。
淘汰C語言看起來仍然很誘人,但是僅僅放棄C語言有幾個問題。首先,C語言對于運行在硬件附近的低級過程應用程序來說是一種很好的語言,它既緊湊又高效。第二,嵌入式開發高級工程師對這種語言根深蒂固,他們已經使用這種語言幾十年了,對學習和過渡到一種更現代的語言沒有興趣。最后,如此多的遺留庫和代碼庫使用C,我們不能拋棄它們。移植遺留代碼的成本太大了!
看來我們有點左右為難了!作為一個行業,我們應該淘汰C語言,以利用更現代的語言和技術,但改變的時間和成本以及我們必須維護的遺留代碼的數量往往會阻礙C語言的淘汰。在保持我們從C語言中獲得的好處的同時,對更現代技術的需求可能會使我們遠離使用單一的主流語言,并迫使我們依賴多種語言來完成工作。
如果你仔細觀察這個行業,這種情況已經發生了。我看到一些公司正在向使用C++過渡,但仍然有大量的C庫。我看到一些公司在嘗試Rust,但是依賴于他們可靠的C庫作為構建的一部分,反之亦然。不幸的是,或者也許,取決于你的觀點,幸運的是,這意味著C將在未來無限期地繼續保持主導語言的地位。
C是時候退休了嗎?這是一個簡單卻復雜的問題。你可能不想在8位微控制器上使用C++或其他語言。如果你使用機器學習或開發連接設備來使用先進的32位微控制器,除了C之外的語言將為你提供成功所需的額外工具,在嵌入式開發中,轉換語言的時間和成本可能太高。建議是,如果這是一個新的設計,從現代語言開始;如果是遺留設計,利用遺留代碼,用現代語言編寫新代碼。