色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

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

C語言能夠被替換嗎

jf_B3xDfZry ? 來源:C語言學(xué)習(xí)聯(lián)盟 ? 2023-02-10 16:19 ? 次閱讀

眾所周知,C 是一種廣泛非常使用的語言,從操作系統(tǒng)內(nèi)核到加密算法的編寫,到處都在使用 C。如今,我們是否應(yīng)該用另一種語言來替換 C 呢? 盡管C 語言發(fā)布于 1972 年,但至今仍是使用最廣泛的語言之一,同時(shí)按照如今的標(biāo)準(zhǔn)來看,C 語言也存在許多限制和缺陷。

8cf12db6-a8c9-11ed-bfe3-dac502259ad0.png

圖:2020年 TIOBE 編程語言排行榜 有人希望用另一種語言來替換 C 的關(guān)鍵原因也正在于此。用 C/C++ 編寫的關(guān)鍵性軟件實(shí)在太多了,但 C/C++ 中包含大量的“潛規(guī)則”。舉個(gè)例子 OpenSSL 庫中的 bug 就源于此。眾所周知,C 語言非常不善于處理類似于緩沖溢出的問題。C 語言中的“坑”實(shí)在太多了。C 語言沒有類型安全,對于熱衷于動態(tài)語言的人來說,這聽起來可能有些奇怪。而 Python 或 Julia 等動態(tài)語言就可以捕捉到錯(cuò)誤的類型用法,例如在 if 語句中使用整數(shù)的錯(cuò)誤。雖然動態(tài)語言無法在編譯時(shí)捕捉到這類問題,但如果它們具有強(qiáng)大的類型系統(tǒng),那么就可以在運(yùn)行時(shí)捕捉到很多問題。這對于安全性特別重要。在很大程度上,安全漏洞都會引發(fā)未定義的行為,而不會正常終止程序。 話說回來,如果 C 語言如此之糟糕,那么為什么還沒有被替換掉呢?其中的原因很多。其實(shí)在某些地方,它已經(jīng)被替換了。以前很多用 C 處理的任務(wù)如今都改用 JavaC#、C++ 以及其他語言了。 因此,我們需要深挖一下究竟還有哪些軟件仍然以 C 語言為主:

操作系統(tǒng)內(nèi)核。例如 Linux

微控制器

視頻編解碼器

底層共享庫,例如 OpenSSL 等

Unix 命令行工具,例如 ls、cat 和 git 等

為什么這些領(lǐng)域仍然由 C 語言主導(dǎo)?因?yàn)橹钡阶罱覀円矝]有更好的替代 C 語言的方案。 上個(gè)世紀(jì) 90 年代,許多語言(例如 Java、C#、VB.NET 和 F#)都將重點(diǎn)放在創(chuàng)建垃圾收集上。對于上述領(lǐng)域來說,這些語言都不是好的解決方案。 除此之外,還有其他 80 年代和 90 年代出現(xiàn)的語言,例如 Perl、Python、Ruby 和 JavaScript 等,它們都不適合這些任務(wù)。 當(dāng)然,我們還有一些其他靜態(tài)類型的語言,例如 Ada、Modula-2 等。但是,一般情況下,這些語言都很難與開發(fā)人員的技術(shù)結(jié)合,也很難與已有的 C 語言庫配合使用。 還有 D 等其他語言,但是其復(fù)雜性與 C++ 差不多,因此對 C 開發(fā)人員沒有吸引力。而且,最初它也需要垃圾收集,所以可能并不適合上述提到的許多領(lǐng)域。如果你開發(fā)的應(yīng)用程序需要保持很高的幀速率,那肯定不希望啟動垃圾收集。

Go 和 Rust 有一定的可能性

我認(rèn)為,第一個(gè)真正有可能替代 C 和 C++ 的現(xiàn)代編程語言是 Go 和 Rust。我們看到許多過去用 C 或 C++ 編寫的工具如今都改成了用 Go 或 Rust 編寫。比如大量的命令行工具都用這些語言編寫出來了。有些人甚至在嘗試用Rust 編寫游戲引擎。

LLVM:填補(bǔ)空白

我認(rèn)為有可能出現(xiàn) C 語言替代品的一個(gè)主要原因是LLVM 的成熟。LLVM 意味著生成高性能的代碼、支持多平臺的難題得到了解決。LLVM 為更多人提供了嘗試語言開發(fā)的機(jī)會。 Go 和 Rust 提供了一些啟發(fā),讓我們重新思考 C / C++,在這些啟發(fā)的帶動下,再加上 LLVM 助陣,很多人都躍躍欲試尋找 C 語言的替代品:

Zig:一門開源的編程語言,專為穩(wěn)定性、可維護(hù)性和最優(yōu)性而設(shè)計(jì)。

Odin:C 語言的替代品,與 Go 非常相似。

V 語言:另一個(gè)類似于 C 的語言,受到了 Go 和 Rust 的大量啟發(fā)。

什么樣的語言可以替代 C?

如果一門編程語言想要替代 C,首先必須適合 C 語言占主導(dǎo)地位的領(lǐng)域。并非所有類型的語言都能夠滿足這一點(diǎn)。我認(rèn)為能夠替代 C 的語言有以下這些共同點(diǎn):

能夠重用現(xiàn)有的 C 庫。Ada、Modula-2 等語言在很大程度上就在這一點(diǎn)上栽了跟頭,因?yàn)槟銦o法在大型 C 生態(tài)系統(tǒng)中有效使用這兩種編程語言。

建立在已有的知識和慣例之上。Go 語言很容易上手,因?yàn)楸M管語法有所變化,但 API 和編程的方式與 C 非常相似。

沒有垃圾回收,或者采用手動內(nèi)存管理。在 C語言占主導(dǎo)的領(lǐng)域內(nèi),你需要嚴(yán)格控制內(nèi)存的使用。在這里領(lǐng)域內(nèi),垃圾收集派不上用場,這就是 Go 無法完全代替 C 的原因。

控制可執(zhí)行文件的大小。像 C 一樣,Zig 可以將可執(zhí)行文件壓縮到很小。你無法在嵌入式等領(lǐng)域使用 Go 語言,因?yàn)檫@些語言生成的可執(zhí)行文件都太大。

系統(tǒng)層面的友好。你需要能夠操縱位和字節(jié)。你需要良好的二進(jìn)制運(yùn)算符和指針。在過去的幾十年中,許多語言都沒有合適的指針。Java 為指針帶來了各種罵名,好在 Go 挽回了一些。

逐步替換 C 代碼。能夠良好地兼容 C 的可執(zhí)行文件。

我們深入討論一下最后一點(diǎn)。如果需要一次性重寫整個(gè)程序,那么壓根沒有人會考慮替換掉現(xiàn)有的用 C 語言編寫的基礎(chǔ)設(shè)施。以我的經(jīng)驗(yàn)來看,從 Objective-C 過渡到 Swift 之所以如此簡單,是因?yàn)槲铱梢砸淮沃貙懸粋€(gè)方法,重新編譯,并測試程序。 使用 Zig 之類的語言,也可以輕松地做到這一點(diǎn)。

總結(jié)

我們應(yīng)該替換掉 C 的原因有很多,而截止到目前仍未換掉的主要原因在于,其他編程語言的重點(diǎn)都放在了別處,而且我們?nèi)鄙俟ぞ摺_@不是一個(gè)大型組織必須決定做的事情。你需要讓大家都來嘗試一下。如今在 LLVM 的支持下,在 Go 的啟發(fā)下,我們完全可以替換掉 C。 那么,我個(gè)人是否認(rèn)為 C 將來會被替換掉呢?我并沒有那么期待。這是一個(gè)漫長的過程,我們還沒有明確的贏家。大型組織不會采用 Zig、Odin、V 或其他編程語言,他們都在等待明確的替代方案出現(xiàn)。 說到底,替換掉 C 究竟表示什么意思?時(shí)至今日很多金融機(jī)構(gòu)仍在使用 Cobol,但我們可以說 Cobol 已被取代了,因?yàn)榻駮r(shí)今日沒有新項(xiàng)目會選擇 Cobol。人們都在盡可能遠(yuǎn)離 Cobol。 同樣,大量經(jīng)過測試的 C 代碼也不會被重寫。這些代碼會一直遺留下去。 但是,終有一天,C 語言會被其他語言所替代,即使是在自己占主導(dǎo)地位的領(lǐng)域中。

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

    關(guān)注

    180

    文章

    7605

    瀏覽量

    136906
  • Rust
    +關(guān)注

    關(guān)注

    1

    文章

    229

    瀏覽量

    6614

原文標(biāo)題:C語言能夠被替換嗎?

文章出處:【微信號:C語言學(xué)習(xí)聯(lián)盟,微信公眾號:C語言學(xué)習(xí)聯(lián)盟】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    MCU編程語言和開發(fā)環(huán)境介紹

    MCU編程語言 MCU編程語言是用于編寫MCU程序的高級編程語言,它們使得開發(fā)者能夠更高效地開發(fā)嵌入式應(yīng)用程序。以下是一些常用的MCU編程語言
    的頭像 發(fā)表于 11-01 11:51 ?779次閱讀

    C語言與Java語言的對比

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

    ADC3101里邊自帶的miniDSP能夠支持自定義的C語言開發(fā)嗎?

    想咨詢一下, ADC3101里邊自帶的miniDSP能夠支持自定義的C語言開發(fā)嗎?比如把自己算法灌進(jìn)去,實(shí)現(xiàn)某些算法,比如能做FFT嗎。還是說這個(gè)DSP只能支持簡單的濾波算法。
    發(fā)表于 10-14 07:03

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

    在計(jì)算機(jī)編程領(lǐng)域,C語言被譽(yù)為一種強(qiáng)大而靈活的編程語言,掌握好C語言不僅可以讓你輕松駕馭各種編程任務(wù),還
    的頭像 發(fā)表于 07-06 08:04 ?322次閱讀
    按照這樣學(xué)習(xí)<b class='flag-5'>C</b><b class='flag-5'>語言</b>,成為卷王不是夢!

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

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

    C語言中,同一個(gè)函數(shù)能不能定義兩次?

    稍微有點(diǎn)C語言基礎(chǔ)的同學(xué),一定知道不能這樣做。
    的頭像 發(fā)表于 05-11 18:27 ?1724次閱讀

    請問ADC的數(shù)據(jù)寄存器DR里的數(shù)據(jù)會在哪一個(gè)階段替換掉?

    比如,在下一個(gè)轉(zhuǎn)換的開始,還是在下一個(gè)轉(zhuǎn)換的結(jié)束時(shí)等替換掉,希望有人能夠解答
    發(fā)表于 04-07 08:09

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

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

    fpga語言是什么?fpga語言c語言的區(qū)別

    功能,從而實(shí)現(xiàn)對數(shù)字電路的高效定制。FPGA語言主要包括VHDL(VHSIC Hardware Description Language)和Verilog等,這些語言具有強(qiáng)大的描述能力,能夠精確地定義硬件的每一個(gè)細(xì)節(jié),從而實(shí)現(xiàn)復(fù)
    的頭像 發(fā)表于 03-15 14:50 ?949次閱讀

    C預(yù)處理器及其工作原理

    C預(yù)處理器(C Pre-Processor)也常簡寫為 CPP,是一個(gè)與 C 編譯器獨(dú)立的小程序,預(yù)編譯器并不理解 C 語言語法,它僅是在程
    的頭像 發(fā)表于 03-12 14:14 ?646次閱讀
    <b class='flag-5'>C</b>預(yù)處理器及其工作原理

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

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

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

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

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

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

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

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

    C語言能夠實(shí)現(xiàn)單片機(jī)功能,為什么還要使用匯編呢?

    C語言能夠實(shí)現(xiàn)單片機(jī)功能,為什么還要使用匯編呢? C語言是一種高級編程語言,它具有跨平臺、可移植
    的頭像 發(fā)表于 01-15 14:59 ?1068次閱讀
    主站蜘蛛池模板: 久久视频在线视频观看精品15| 日韩欧美一区二区三区在线视频| 国产亚洲精品看片在线观看| 国产激情文学| 国产精品永久AV无码视频| 亚洲AV无码国产精品色在线看 | 最新无码国产在线视频2020| 5g在线视讯年龄确认海外禁止进入| 鸭子玩富婆流白浆视频| 亚洲免费成人| 张开腿我尝尝你的草莓| h片下载地址| 国产精品你懂的在线播放| 黄色三级图片| 免费人妻AV无码专区五月| 精品国产三级a| 国产精品嫩草影院在线观看免费| 国精一区二区AV在线观看网站| 久久九九日本韩国精品| 欧美.亚洲.日韩.天堂| 色婷婷欧美在线播放内射| 亚洲激情网站| 亚洲国产精品99久久久久久| 中国国产不卡视频在线观看| VIDEOSGGRATIS欧美另类| 国产精品视频大全| 久久合| 强行撕开衣服捏胸黄文| 亚州性夜夜射在线观看| 24小时日本免费看| 国产成人免费不卡在线观看| 九九热在线视频精品店| 啪啪后入内射日韩| 亚洲国产欧美日韩在线一区| 97人妻无码AV碰碰视频| 国产精品久久久久无码AV色戒| 久久久96| 双腿打开揉弄高潮H苏安安秦慕深| 亚洲视频无码高清在线| 草莓AV福利网站导航| 九九热视频免费观看|