0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

是時(shí)候退休C語(yǔ)言了嗎?

王尚岱 ? 來(lái)源:王岑王岑 ? 作者:王岑王岑 ? 2022-07-14 08:17 ? 次閱讀

After almost a half-century of use, is it time for embedded developers to move on to a more modern language?

C 編程語(yǔ)言無(wú)疑是計(jì)算機(jī)科學(xué)中最成功的編程語(yǔ)言之一。C 最早出現(xiàn)在 1972 年左右,由貝爾實(shí)驗(yàn)室出來(lái),由 Dennis Ritchie 創(chuàng)建。在過(guò)去 20 年中,C 被 TIOBE Programming Index 評(píng)為世界上最流行的兩種編程語(yǔ)言之一(參見(jiàn)圖 1)。它是嵌入式系統(tǒng)開(kāi)發(fā)人員最流行的語(yǔ)言,用于近 80% 的嵌入式項(xiàng)目。經(jīng)過(guò)近半個(gè)世紀(jì)的使用,嵌入式開(kāi)發(fā)人員是時(shí)候轉(zhuǎn)向更現(xiàn)代的語(yǔ)言了嗎?是時(shí)候退休 C 了嗎?

poYBAGLOkuaAK_8DAAQaVtr_v-k180.png

poYBAGLOkuaAK_8DAAQaVtr_v-k180.png


圖 1 – 過(guò)去 20 年編程語(yǔ)言的 TIOBE 編程社區(qū)指數(shù)排名。C 一直是排名前兩位的語(yǔ)言之一。

由于幾個(gè)原因,退休 C 并轉(zhuǎn)向更現(xiàn)代的編程語(yǔ)言的誘惑相對(duì)較高。首先,經(jīng)常受到科技公司高度追捧的入門(mén)級(jí)工程師幾乎沒(méi)有使用 C 的經(jīng)驗(yàn)。如今的大學(xué)課程專注于教授 PythonC++ 等現(xiàn)代語(yǔ)言。讓他們加快速度并獲得經(jīng)驗(yàn)可能需要大量的金錢和時(shí)間投資,而很少有公司對(duì)此感興趣。

Next, while very popular, the C programming language is dated. C doesn’t support modern programming concepts like classes and inheritance. If you compare the feature sets of modern languages like C++, Python, and Rust, the C language is starting to look like a dinosaur! The last time the C standard had new features added was 2011! The 2017 standard release only had technical corrections and clarifications, and the upcoming standard release expected in 2023 most likely won’t rock the boat either.

淘汰 C 看起來(lái)仍然很誘人,但是離開(kāi) C 有幾個(gè)問(wèn)題。首先,C 對(duì)于接近硬件運(yùn)行的低級(jí)過(guò)程應(yīng)用程序來(lái)說(shuō)是一種很棒的語(yǔ)言。它緊湊而高效。其次,高級(jí)工程師的語(yǔ)言根深蒂固。他們處于使用該語(yǔ)言數(shù)十年的地步,對(duì)學(xué)習(xí)和過(guò)渡到更現(xiàn)代的語(yǔ)言幾乎沒(méi)有興趣。最后,如此多的遺留庫(kù)和代碼庫(kù)使用 C,我們不能放棄它們。移植遺留代碼的成本太高了!

看來(lái)我們有點(diǎn)進(jìn)退兩難了!作為一個(gè)行業(yè),我們應(yīng)該淘汰 C 以利用更現(xiàn)代的語(yǔ)言和技術(shù),但是更改的時(shí)間和成本以及我們必須維護(hù)的遺留代碼量經(jīng)常阻礙 C 的淘汰。需要更現(xiàn)代的技術(shù),同時(shí)保持我們從 C 中獲得的好處,可能會(huì)使我們遠(yuǎn)離使用單一的主導(dǎo)語(yǔ)言,并迫使我們依賴多種語(yǔ)言來(lái)完成工作。

使用其他語(yǔ)言來(lái)支持 C 可能已經(jīng)發(fā)生。例如,下面的表 1 顯示了幾種語(yǔ)言在 TIOBE 指數(shù)中的排名。過(guò)去,一兩種語(yǔ)言主導(dǎo)著計(jì)算機(jī)科學(xué)。今天,前四種語(yǔ)言的評(píng)分都在 10% 左右。我相信這表明單一主導(dǎo)語(yǔ)言的終結(jié)。相反,開(kāi)發(fā)人員將利用多種語(yǔ)言來(lái)實(shí)現(xiàn)他們的最終目標(biāo)。

排行 語(yǔ) 評(píng)分
1 Python 12.20%
2 C 11.91%
3 爪哇 10.47%
4 C++ 9.63%
27 0.52%

表 1 – 通常與嵌入式軟件開(kāi)發(fā)相關(guān)的編程語(yǔ)言列表(來(lái)源:TIOBE 指數(shù))。注意:這些評(píng)級(jí)不代表嵌入式軟件的使用,僅代表一般計(jì)算機(jī)科學(xué)行業(yè)的使用。

如果你仔細(xì)觀察這個(gè)行業(yè),這已經(jīng)發(fā)生了。我看到一些公司正在過(guò)渡到使用仍然擁有大量 C 庫(kù)的 C++。我看到一些公司嘗試使用 Rust,但依賴他們久經(jīng)考驗(yàn)的 C 庫(kù)作為構(gòu)建的一部分,反之亦然。不幸的是,或者也許,根據(jù)您的觀點(diǎn),幸運(yùn)的是,這意味著 C 將在未來(lái)無(wú)限期地繼續(xù)成為主導(dǎo)語(yǔ)言。

是時(shí)候退休 C 了嗎?這是一個(gè)簡(jiǎn)單但復(fù)雜的問(wèn)題。我認(rèn)為是的,但這取決于你在做什么。您可能不想在 8 位微控制器上使用 C++ 或其他語(yǔ)言。如果您正在使用機(jī)器學(xué)習(xí)或開(kāi)發(fā)連接設(shè)備的尖端 32 位微控制器工作,C 以外的語(yǔ)言將為您提供成功所需的額外工具。切換語(yǔ)言的時(shí)間和成本可能太高。我的經(jīng)驗(yàn)法則是,如果是新設(shè)計(jì),請(qǐng)從現(xiàn)代語(yǔ)言開(kāi)始。如果是遺留設(shè)計(jì),請(qǐng)利用遺留代碼并用現(xiàn)代語(yǔ)言編寫(xiě)新代碼。

你怎么看?是時(shí)候退休 C 了嗎?

審核編輯 黃昊宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • C語(yǔ)言
    +關(guān)注

    關(guān)注

    180

    文章

    7614

    瀏覽量

    137541
  • 編程語(yǔ)言
    +關(guān)注

    關(guān)注

    10

    文章

    1950

    瀏覽量

    34931
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    C語(yǔ)言指針學(xué)習(xí)筆記

    本文從底層內(nèi)存分析,徹底讓讀者明白C語(yǔ)言指針的本質(zhì)。
    的頭像 發(fā)表于 11-05 17:40 ?294次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言</b>指針學(xué)習(xí)筆記

    tlv320aic26用的時(shí)候總有滴滴聲,是編程哪里錯(cuò)了嗎?

    tlv320aic26 用的時(shí)候總有滴滴聲,是編程哪里錯(cuò)了嗎?
    發(fā)表于 11-01 07:44

    C語(yǔ)言C++中結(jié)構(gòu)體的區(qū)別

    同樣是結(jié)構(gòu)體,看看在C語(yǔ)言C++中有什么區(qū)別?
    的頭像 發(fā)表于 10-30 15:11 ?344次閱讀

    C語(yǔ)言與Java語(yǔ)言的對(duì)比

    C語(yǔ)言和Java語(yǔ)言都是當(dāng)前編程領(lǐng)域中的重要成員,它們各自具有獨(dú)特的優(yōu)勢(shì)和特點(diǎn),適用于不同的應(yīng)用場(chǎng)景。以下將從語(yǔ)法特性、內(nèi)存管理、跨平臺(tái)性、性能、應(yīng)用領(lǐng)域等多個(gè)方面對(duì)C
    的頭像 發(fā)表于 10-29 17:31 ?415次閱讀

    C語(yǔ)言與其他編程語(yǔ)言的比較

    C語(yǔ)言作為一種歷史悠久的編程語(yǔ)言,自其誕生以來(lái),一直在軟件開(kāi)發(fā)領(lǐng)域扮演著重要角色。它以其高效、靈活和可移植性強(qiáng)的特點(diǎn),成為了系統(tǒng)級(jí)編程的首選語(yǔ)言之一。
    的頭像 發(fā)表于 10-29 17:30 ?354次閱讀

    C++語(yǔ)言基礎(chǔ)知識(shí)

    電子發(fā)燒友網(wǎng)站提供《C++語(yǔ)言基礎(chǔ)知識(shí).pdf》資料免費(fèi)下載
    發(fā)表于 07-19 10:58 ?7次下載

    按照這樣學(xué)習(xí)C語(yǔ)言,成為卷王不是夢(mèng)!

    在計(jì)算機(jī)編程領(lǐng)域,C語(yǔ)言被譽(yù)為一種強(qiáng)大而靈活的編程語(yǔ)言,掌握好C語(yǔ)言不僅可以讓你輕松駕馭各種編程任務(wù),還能夠?yàn)槟愕穆殬I(yè)生涯打下堅(jiān)實(shí)的基礎(chǔ)。但
    的頭像 發(fā)表于 07-06 08:04 ?351次閱讀
    按照這樣學(xué)習(xí)<b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言</b>,成為卷王不是夢(mèng)!

    PLC編程語(yǔ)言C語(yǔ)言的區(qū)別

    在工業(yè)自動(dòng)化和計(jì)算機(jī)編程領(lǐng)域中,PLC(可編程邏輯控制器)編程語(yǔ)言C語(yǔ)言各自扮演著重要的角色。盡管兩者都是編程語(yǔ)言,但它們?cè)诙鄠€(gè)方面存在顯著的區(qū)別。本文將從多個(gè)維度深入探討PLC編程
    的頭像 發(fā)表于 06-14 17:11 ?3164次閱讀

    幫你避雷 C語(yǔ)言所謂的短路現(xiàn)象~

    C語(yǔ)言短路現(xiàn)象算是C語(yǔ)言的基礎(chǔ)吧,不過(guò)有時(shí)候代碼寫(xiě)得不規(guī)范也容易引入一些bug,所以這些操作在工程師實(shí)踐中盡量少用。雖然下面找的例子比較簡(jiǎn)單
    的頭像 發(fā)表于 03-27 08:09 ?447次閱讀
    幫你避雷 <b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言</b>所謂的短路現(xiàn)象~

    C語(yǔ)言基礎(chǔ)-為什么要使用C

    當(dāng)今最流行的 Linux 操作系統(tǒng)和 RDBMS(Relational Database Management System:關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)) MySQL 都是使用 C 語(yǔ)言編寫(xiě)的。
    發(fā)表于 03-25 11:20 ?482次閱讀

    C語(yǔ)言內(nèi)存泄漏問(wèn)題原理

    內(nèi)存泄漏問(wèn)題只有在使用堆內(nèi)存的時(shí)候才會(huì)出現(xiàn),棧內(nèi)存不存在內(nèi)存泄漏問(wèn)題,因?yàn)闂?nèi)存會(huì)自動(dòng)分配和釋放。C語(yǔ)言代碼中堆內(nèi)存的申請(qǐng)函數(shù)是malloc。
    發(fā)表于 03-19 11:38 ?570次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言</b>內(nèi)存泄漏問(wèn)題原理

    C語(yǔ)言#define的應(yīng)用

    C/C++ 編程語(yǔ)言中,當(dāng)程序被編譯時(shí),被發(fā)送到編譯器,編譯器將程序轉(zhuǎn)換為機(jī)器語(yǔ)言,然后完成編譯并執(zhí)行該程序。預(yù)處理器也稱為宏預(yù)處理器。
    發(fā)表于 03-06 11:29 ?422次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言</b>#define的應(yīng)用

    plc編程語(yǔ)言c語(yǔ)言的聯(lián)系 c語(yǔ)言和PLC有什么區(qū)別

    PLC編程語(yǔ)言C語(yǔ)言的聯(lián)系 PLC(可編程邏輯控制器)是一種針對(duì)自動(dòng)化控制系統(tǒng)的特殊計(jì)算機(jī)。PLC編程語(yǔ)言是為了控制和管理自動(dòng)化生產(chǎn)過(guò)程中的各種設(shè)備而設(shè)計(jì)的。與之相比,
    的頭像 發(fā)表于 02-05 14:21 ?4364次閱讀

    c語(yǔ)言,c++,java,python區(qū)別

    C語(yǔ)言、C++、Java和Python是四種常見(jiàn)的編程語(yǔ)言,各有優(yōu)點(diǎn)和特點(diǎn)。 C語(yǔ)言
    的頭像 發(fā)表于 02-05 14:11 ?2570次閱讀

    vb語(yǔ)言c++語(yǔ)言的區(qū)別

    VB語(yǔ)言C++語(yǔ)言是兩種不同的編程語(yǔ)言,雖然它們都屬于高級(jí)編程語(yǔ)言,但在設(shè)計(jì)和用途上有很多區(qū)別。下面將詳細(xì)比較VB
    的頭像 發(fā)表于 02-01 10:20 ?2489次閱讀