女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

C語言能夠被替換嗎

jf_B3xDfZry ? 來源:C語言學習聯盟 ? 2023-02-10 16:19 ? 次閱讀

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

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

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

操作系統內核。例如 Linux

微控制器

視頻編解碼器

底層共享庫,例如 OpenSSL 等

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

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

Go 和 Rust 有一定的可能性

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

LLVM:填補空白

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

Zig:一門開源的編程語言,專為穩定性、可維護性和最優性而設計。

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

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

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

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

能夠重用現有的 C 庫。Ada、Modula-2 等語言在很大程度上就在這一點上栽了跟頭,因為你無法在大型 C 生態系統中有效使用這兩種編程語言。

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

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

控制可執行文件的大小。像 C 一樣,Zig 可以將可執行文件壓縮到很小。你無法在嵌入式等領域使用 Go 語言,因為這些語言生成的可執行文件都太大。

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

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

我們深入討論一下最后一點。如果需要一次性重寫整個程序,那么壓根沒有人會考慮替換掉現有的用 C 語言編寫的基礎設施。以我的經驗來看,從 Objective-C 過渡到 Swift 之所以如此簡單,是因為我可以一次重寫一個方法,重新編譯,并測試程序。 使用 Zig 之類的語言,也可以輕松地做到這一點。

總結

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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • C語言
    +關注

    關注

    180

    文章

    7629

    瀏覽量

    140083
  • Rust
    +關注

    關注

    1

    文章

    233

    瀏覽量

    6931

原文標題:C語言能夠被替換嗎?

文章出處:【微信號:C語言學習聯盟,微信公眾號:C語言學習聯盟】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    貼片電阻和插件電阻可以替換嗎?

    設計要求,包括電阻的阻值、精度、功率等關鍵參數。 確保替換后的電阻能夠滿足電路設計要求,不會引入額外的誤差或不穩定因素。 空間限制: 貼片電阻體積小,重量輕,適合高密度集成和自動化生產,特別適用于空間受限的場合,如
    的頭像 發表于 04-30 15:32 ?113次閱讀
    貼片電阻和插件電阻可以<b class='flag-5'>替換</b>嗎?

    深入理解C語言C語言循環控制

    C語言編程中,循環結構是至關重要的,它可以讓程序重復執行特定的代碼塊,從而提高編程效率。然而,為了避免程序進入無限循環,C語言提供了多種循環控制語句,如break、continue和
    的頭像 發表于 04-29 18:49 ?665次閱讀
    深入理解<b class='flag-5'>C</b><b class='flag-5'>語言</b>:<b class='flag-5'>C</b><b class='flag-5'>語言</b>循環控制

    AD7701ARZ有沒有能夠直接替換,或者原設計線路商改動較少的型號?

    AD7701ARZ有沒有能夠直接替換,或者原設計線路商改動較少的型號
    發表于 04-15 07:32

    C語言的歷史及程序介紹

    電子發燒友網站提供《C語言的歷史及程序介紹.pdf》資料免費下載
    發表于 04-09 16:10 ?0次下載

    技術干貨驛站 ▏深入理解C語言:掌握C語言條件判斷,從if到switch的應用

    在編程中,條件判斷語句是控制程序流程的核心元素之一。它們使得程序能夠根據不同的輸入和狀態,做出相應的決策。特別是在C語言中,條件判斷語句的使用極為廣泛,涵蓋了從簡單的if語句到更復雜的switch
    的頭像 發表于 11-09 01:10 ?751次閱讀
    技術干貨驛站 ▏深入理解<b class='flag-5'>C</b><b class='flag-5'>語言</b>:掌握<b class='flag-5'>C</b><b class='flag-5'>語言</b>條件判斷,從if到switch的應用

    C語言指針學習筆記

    本文從底層內存分析,徹底讓讀者明白C語言指針的本質。
    的頭像 發表于 11-05 17:40 ?538次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言</b>指針學習筆記

    MCU編程語言和開發環境介紹

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

    C語言C++中結構體的區別

    同樣是結構體,看看在C語言C++中有什么區別?
    的頭像 發表于 10-30 15:11 ?618次閱讀

    C語言與Java語言的對比

    C語言和Java語言都是當前編程領域中的重要成員,它們各自具有獨特的優勢和特點,適用于不同的應用場景。以下將從語法特性、內存管理、跨平臺性、性能、應用領域等多個方面對C
    的頭像 發表于 10-29 17:31 ?891次閱讀

    C語言與其他編程語言的比較

    C語言作為一種歷史悠久的編程語言,自其誕生以來,一直在軟件開發領域扮演著重要角色。它以其高效、靈活和可移植性強的特點,成為了系統級編程的首選語言之一。
    的頭像 發表于 10-29 17:30 ?846次閱讀

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

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

    技術干貨驛站 ▏深入理解C語言:掌握程序結構知識

    在計算機編程的世界中,C語言廣泛認可為一門強大而高效的編程語言,其簡潔的語法和直接的指令使得它成為了許多程序員的首選。了解C
    的頭像 發表于 07-27 08:45 ?1735次閱讀
    技術干貨驛站 ▏深入理解<b class='flag-5'>C</b><b class='flag-5'>語言</b>:掌握程序結構知識

    C++語言基礎知識

    電子發燒友網站提供《C++語言基礎知識.pdf》資料免費下載
    發表于 07-19 10:58 ?8次下載

    按照這樣學習C語言,成為卷王不是夢!

    在計算機編程領域,C語言被譽為一種強大而靈活的編程語言,掌握好C語言不僅可以讓你輕松駕馭各種編程任務,還
    的頭像 發表于 07-06 08:04 ?535次閱讀
    按照這樣學習<b class='flag-5'>C</b><b class='flag-5'>語言</b>,成為卷王不是夢!

    PLC編程語言C語言的區別

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