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

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

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

是時候退休C語言了嗎?

王尚岱 ? 來源:王岑王岑 ? 作者:王岑王岑 ? 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 編程語言無疑是計算機(jī)科學(xué)中最成功的編程語言之一。C 最早出現(xiàn)在 1972 年左右,由貝爾實(shí)驗(yàn)室出來,由 Dennis Ritchie 創(chuàng)建。在過去 20 年中,C 被 TIOBE Programming Index 評為世界上最流行的兩種編程語言之一(參見圖 1)。它是嵌入式系統(tǒng)開發(fā)人員最流行的語言,用于近 80% 的嵌入式項(xiàng)目。經(jīng)過近半個世紀(jì)的使用,嵌入式開發(fā)人員是時候轉(zhuǎn)向更現(xiàn)代的語言了嗎?是時候退休 C 了嗎?

poYBAGLOkuaAK_8DAAQaVtr_v-k180.png

poYBAGLOkuaAK_8DAAQaVtr_v-k180.png


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

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

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

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

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

排行 評分
1 Python 12.20%
2 C 11.91%
3 爪哇 10.47%
4 C++ 9.63%
27 0.52%

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

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

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

你怎么看?是時候退休 C 了嗎?

審核編輯 黃昊宇

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

    關(guān)注

    180

    文章

    7575

    瀏覽量

    134151
  • 編程語言
    +關(guān)注

    關(guān)注

    10

    文章

    1916

    瀏覽量

    34381
收藏 人收藏

    評論

    相關(guān)推薦

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

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

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

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

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

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

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

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

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

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

    C語言C++中那些不同的地方

    ++11標(biāo)準(zhǔn)。根據(jù)不同的標(biāo)準(zhǔn),它們的功能也會有所不同,但是越新的版本支持的編譯器越少,所以本文在討論的時候使用的C語言標(biāo)準(zhǔn)是C89,C++標(biāo)
    的頭像 發(fā)表于 12-07 14:29 ?774次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言</b>和<b class='flag-5'>C</b>++中那些不同的地方

    C語言代碼的常用技巧

    #和##對于大部分C語言玩得還算比較溜的朋友并不是很陌生,不過能把這兩個知識點(diǎn)游刃有余的應(yīng)用到所在代碼中的每個角落,似乎并沒有幾個人能夠做到,學(xué)的時候朗朗上口,而編碼的時候卻拋之腦后。
    的頭像 發(fā)表于 12-05 09:25 ?453次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言</b>代碼的常用技巧

    C語言運(yùn)行環(huán)境是什么

    C語言運(yùn)行環(huán)境(C language runtime environment)是指在執(zhí)行C語言程序時所需的軟件及硬件環(huán)境。
    的頭像 發(fā)表于 11-27 16:13 ?2871次閱讀

    如何選擇創(chuàng)建c語言c++

    選擇創(chuàng)建 C 語言C++ 都需要綜合考慮多個因素。在決定使用哪種語言之前,我們需要對這兩種語言的特點(diǎn)、優(yōu)缺點(diǎn)、適用場景、學(xué)習(xí)成本等進(jìn)行全
    的頭像 發(fā)表于 11-27 15:58 ?458次閱讀

    C語言printf函數(shù)族學(xué)習(xí)筆記

    printf 應(yīng)該是學(xué)習(xí)C語言的第一個函數(shù),我們都知道它是用于字符串格式化輸出的。但是它的用法你真正了解了嗎?
    的頭像 發(fā)表于 11-24 11:15 ?777次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言</b>printf函數(shù)族學(xué)習(xí)筆記

    \0在c語言中怎么用

    C語言是一種廣泛使用的程序設(shè)計語言,具有高效、簡潔和可移植等特點(diǎn)。本文將詳盡介紹C語言的基本語法、數(shù)據(jù)類型、控制結(jié)構(gòu)、函數(shù)及庫函數(shù)等內(nèi)容,以
    的頭像 發(fā)表于 11-24 09:59 ?2709次閱讀

    淺談C語言中的短路現(xiàn)象

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

    IAR在進(jìn)行C語言代碼開發(fā)的時候怎么嵌入?yún)R編代碼?

    IAR在進(jìn)行C語言代碼開發(fā)的時候怎么嵌入?yún)R編代碼
    發(fā)表于 10-11 06:45

    C語言中的結(jié)構(gòu)體指針在訪問的時候怎么讀取成員變量的數(shù)據(jù)?

    C語言中的結(jié)構(gòu)體指針在訪問的時候怎么讀取成員變量的數(shù)據(jù)
    發(fā)表于 10-10 07:07

    C語言指針講解

      C語言可以說是工科學(xué)生必不可少的編程語言了,尤其是嵌入式的應(yīng)用中C語言更是大廈之基,甚至在我的評價里他相比于數(shù)學(xué)對于工科生的作用等價。
    發(fā)表于 10-01 13:25 ?261次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言</b>指針講解