為什麼 C 語言沒有被 C 取代?

時間 2021-05-29 22:47:19

1樓:avoidant

如果這個世界上只有c和c++,那c早就被c++取代了。

正是因為那些不認同c++理念的語言的存在,才讓c更加有了存在的必要——作為一種不同語言都願意接受的普通話。

事實上,別說不同語言,就是不同c++編譯器也選擇了c作為彼此間溝通的普通話。

2樓:恆星

這就好像為什麼30系顯示卡都發布了卻還有人在用9系、10系、20系的呢??

沒錢(沒資源),沒來得及換(更新換代較為麻煩)、夠用了(C語言已經夠用了為啥要費力換C++呢?)等等

3樓:

我以前學過C,現在學C++就很輕鬆。

如果以前學過C++,再回去學C就更輕鬆。

所以不要糾結,倆都學了就是。

當然,僅包括語法。跟程式設計能力可沒什麼關係,就好比學了數學也不一定會做題。

兩個語言其實並不像很多人說的是什麼OOP的區別,但OO感覺並沒有多大差別,無非就是多型被吹得很神,對於一般的小專案來講,根本用不到。我覺得對於大專案,只要總指揮控制得當,多型也沒啥必要。

4樓:Poly000

C和C++語言改進關注不同社群

或者說它們的應用場景不同。

C++是大型的語言,而且據說難以編寫可移植的程式(待驗證);

C是靈活強大簡單的語言。

5樓:zaxon

C++11一年半經驗,好處是玩的比較偏底層,老跟kernel打交道。深感c寫好了比c++優雅太多。最近打算試試C懟一把。 我覺得我二狗子有點浮

6樓:

c為什麼要被取代?c的程式設計思想和c++完全不同,子集就能取代?完全不切實際。

很多人天天forif,然後char*,你以為你學會了c語言?笑話,不用c寫乙個中大型專案,你會什麼c,你才入門而已。c的程式設計思想只有專案才能體現,不懂c別亂講。

7樓:Axis816

仍有一些場合是需要一切盡在掌握的,c比c++更容易做到盡在掌握,尤其是由第三方庫的時候

c++過載後+號運算子很可能驚天地泣鬼神,但使用者很可能注意不到

8樓:慧航

我是用C的,主要做一些科學計算的東西,說實話並不需要太多的高階特性,能夠直接操作記憶體能夠讓我保持對空間和時間複雜度的警惕。

而且C不僅快,還非常的優雅。

只是我現在也老大不小了,最近突然想通了,想換到C++,因為用C沒有物件。

9樓:

C 語言的生命力,主要依託於Linux 和基於 Linux 的無窮的應用場景。只要 Linux 不凋零,C 語言也永遠有活力。C++其實早就和 C 語言處於平行宇宙中,已經沒有取代和被取代的概念了。

10樓:xx xx

相當多的領域用C就足夠了,尤其是工業控制領域。這些領域有個特點,對研發工程師來說,專業能力要求遠大於程式設計能力要求。電力裝置的研發工程師需要清楚的理解電力系統發生短路後,電流電壓的幅值和相位關係,暫態分量的變化;發生區域性放電後,超聲波的傳輸路徑和特徵;軟體上採用何種演算法,動作是何種邏輯,如何解決干擾問題等等。

這些問題解決後,程式設計能力反而是不重要的,而C又是大路貨,人人皆可上手。本專業的問題足夠讓人發狂了,幹嘛還要再引入另乙個讓人發狂的問題呢?另一方面這些領域的研發工程師基本上是本專業畢業的,這些專業,在大學也就學個彙編和C了,C++?

這是什麼鬼?

11樓:心靈專家

因為二者用途不同,所以不存在互相替換的問題。

C++優勢是用於通用系統,而C的優勢是嵌入式系統。

大家的電腦和智慧型機就屬於通用系統,資源往往嚴重過剩。可以隨時切換其使用目的:今天裝個qq,明天裝個wps之類的。

嵌入式系統資源是與其工作條件要嚴格匹配,多一絲成本提高,少一絲功能不足。

C++比C多出的那些優勢大多都是靠犧牲硬體資源換來的,所以在嵌入式系統中,為了成本考慮,都會選擇使用C。

12樓:蕭涵

c++的初衷不是為了替代c,《C++設計和演化》裡面說的很清楚,老爺子要乙個趁手的工具,寫了cpre預處理工具,後來有了C With Class,然後有了C++。

13樓:nzczll

沒有其它原因,應用決定採用的技術。

C++太複雜,對於高速度和高穩定性的單元模組的編碼,不合適,比如核心模組。

在高速度和高穩定性兩個方面同時具有高要求的地方,都得用純C編碼。

你非要用C++,當然沒人阻攔你,但這樣會降低你產品的質量。

不需要同時具備這兩個要求的地方,則無所謂,看每個公司自己的喜好和技術偏好。

有人要較真,說很多C語言的程式也不穩定。那是基於不同的人而言。對於同乙個人,C++和C都很熟練的情況下,非大系統的單元模組的編寫,用C寫出來的程式,肯定比C++的速度和穩定性要高,這個完全無疑。

對於同乙個人,C都寫出來有問題,那C++寫出來問題只會更多。

14樓:洛陽小散戶

可以這樣理解,每個流行語言背後都是一群某領域的專家在支撐。比如cpp,是做遊戲和圖形的,而c的背後就是做系統,基礎演算法,硬體介面。而之所以每個語言都是相應的領域人員,是因為這個語言的複雜度,效能,各方面的均衡剛好滿足這個領域。

舉個例子,我要做個二維圖形的布林運算的演算法,那麼整個演算法是基於幾何運算的,根本沒有幾個物件概念,更不會出現繼承,多型,那我何必用cpp呢?何況效能也更低。相反,我要做個圖形設計的軟體,那整個系統到處都是各種物件,各種繼承關係,那犧牲點效能,選擇設計上的圓滿就更合適了。

所以,c不被替代,就是因為,我的需求用它剛剛好。

15樓:tearshark

為什麼 C 語言沒有被 C++ 取代? - 圓胖腫的回答 - 知乎 https://www.

zhihu.com/question/266995763/answer/496067073按照這個回答,自C以後,就沒有成功過的語言了。

因為目前還沒發現任何能取代C的語言。所以,別管C++多差勁,其他語言也是一樣的差勁。50步笑100步,有意思麼?

奉勸智商欠缺的程式設計師不要學C++。那樣會非但學不會,還成為C++黑。然後就出來無腦黑C++,黑了還不敢讓人反駁。這樣不好,容易被我這樣的看不起。

16樓:

C語言有formal驗證過的編譯器。用人話講,它的bug-free是可以用數學證明的。

C++... clang++的bug我每星期都能碰上。

如果要你給自己的心臟起搏器寫code,你用哪個?

17樓:HOOCCOOH

反過來問可能還要想想。

如果現在出現一門語言把世界上所有語言合一起(並集),讓你可以隨意混用,那麼你覺得它會取代現在的所有語言嗎?

18樓:Gavin

根據我的了解,c語言只所以沒有被c++替代有如下幾個原因。

首先,c++和c語言完全是兩種語言。雖然很多人都說c++是c語言的加強或者公升級版,當然這麼說有一些道理,但是在我看來他們完全是兩種語言。如果混合c語言和c++,那麼最好的程式設計方式就是基於介面,他們各自自成體系,別想直接混用。

其次c語言只所以目前存活很大程度上是因為它和硬體比較親切,c語言容易處理硬體邏輯,因此現代作業系統的核心都是c語言寫的,Windows也不例外。不過Windows花費了不少力氣,提供了很多vc的封裝,比如mfc。而vc就是一種c++的方言。

而Linux系統則完全就是赤裸裸的c語言級別的系統呼叫。如果你需要進行Linux開發,特別是需要使用系統呼叫,當然你必需得用,c語言就是首選。

至於開發效率,我並不覺得c++有多好。雖然c++有大量的模板支援,但是這樣的資料結構對業務系統可能更有用。

最後我想說,c語言真的不是優雅的語言。想反它十分的工程化,什麼都是直來直去的,比如對字串的各種處理,拼接,找子串,這些動作只會讓人頭疼。

以上都是個人看法。

19樓:林奇

我提乙個,目前銷量最火的「電腦」——STM8,每年售出一億台以上,2023年至今系列出貨量超過20億,他有以下配置:

16Mhz主頻的單核CPU

1KB的記憶體空間

8KB的硬碟空間

在這樣的晶元平台上簡直寸土寸金,C++乙個類佔乙個位元組,乙個虛函表又佔幾個位元組,記憶體總共才1024個位元組啊,一下子就把記憶體給頂破了,跑C++完全划不來。

那既然划不來,廠家幹哈子費勁給你實現乙個C++的編譯器呢?

整個C編譯器給你就滿足了,還省時省力。

20樓:

因為嵌入式軟體工程師和軟體工程師的知識結構不同,程式設計時面對的場景也不同.

所以很多場合C那套才是最合適的.這種場合甚至都沒有C++編譯器.這些工程師也不會去學習什麼是OO

21樓:靈劍

C語言的規則比較簡單,編譯結果比較確定,而C++的許多語法編譯出的結果隨著編譯器不同而有很大變化,這就容易產生不可控因素,對於一些穩定性要求很高、對記憶體排布敏感的情況就可能出現複雜的難以除錯的bug。那可能還不如一開始就限定只用C語法。

另外,C可以不鏈結任何庫,但C++不行(new和delete的預設實現無論如何都得有),這就限制了在核心中的應用。

沒必要貶低C++,各有各的應用場景而已。

22樓:遠見

哥天天寫程式,二者都有使用。我想我最有資格回答這個問題。

做大程式c++肯定是不二選擇。因為他封裝性,抽象性很好,不容易出風險。

c語言這方面差多了,所以他比較適合寫小程式,比如微控制器的程式,它占用資源比較少,微控制器上是最好的選擇。

c++動不動new乙個物件,然後動不動就釋放它,如果沒有足夠的記憶體是不行的。這就決定了他在小記憶體的微控制器上跑不動。

23樓:孤獨的步行者

物件導向必然付出較高記憶體代價和相對不高的效率,有些平台記憶體只有幾k,執行速度幾MHz,所有物件導向的語言在這樣的平台上都不適用,記憶體消耗對整個系統是很不利的,c語言之所以在嵌入式和作業系統底層沒有被代替,是因為它足夠小,功能也足夠強大,效率足夠高,不佔高記憶體,也不像彙編難以理解,只要硬體的底層還是這樣,c語言就無法被替代,可能在未來技術發展了,隨便乙個晶元的記憶體都達到幾G了,執行速度也超快,這個時候物件導向的語言可能會將c代替。

24樓:dw Liu

然而C語言並不是C++的子集。

C語言的隱式型別轉換就夠剛入門的C++程式設計師喝一壺的

更別說匯出符號、VLAs、designed initializer、restrict指標

25樓:任衛

C++取代C語言還是很成功的,你看後來的功能複雜的軟體也都直接用C++了或者其他工具了。這是我的觀點。

而C語言還留在哪些領域呢?

第一,硬體,硬體不可取代,而且帶軟體帶智慧型化的硬體飛速膨脹,這是C語言維持很高份額的原因,在管理基礎硬體領域,沒有能與C匹敵的其他工具了。這就像摩天大樓再多,造型再奇特,鋼鐵用量各種創新高,整個建築行業內板磚的使用量還是最大的。

第二,直接面向移植和相容的基礎工具。其實這個領域也快呵呵了,也是前面硬體帶來的影響。

為什麼有C語言 有C 卻沒有C 語言?

Alds Nick C 這個名字是Rick Mascitti於1983年中所建議的,並於1983年12月首次使用。更早以前,尚在研究階段的發展中語言曾被稱為 new C 之後是 C with Classes 在電腦科學中,C 仍被稱為C語言的上層結構。它最後得名於C語言中的 操作符 其對變數的值進行...

Rust 可能取代 C 語言嗎?

WayneYang 雖然Rust在不使用unsafe語句塊的情況下無法寫出一些東西,比如雙向鍊錶結構。但是它附加了unsafe語句塊特性,使得它具備c語言的能力。原回答 JayKay x 自古以來多少語言都自稱或者被稱能乾掉C語言,然而,不好意思,C甚至C 都依然活得好好的 看這標題就想到 我就喜歡...

為什麼C語言沒有物件但是還沒有被拋棄?

Constructor 用純C的話,是面向過程,結構化沒有oop強,但是這種思路可以使開發者更專注於解決某一問題,而不是一上來先搭框架,構造類什麼的 C艹的oop是用來支撐更加複雜結構的程式邏輯,提高結構性,便於維護的。也就是說,C艹在C的基礎上豐富了結構化模組化的思想,但是實現這些模組 結構的方法...