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