為什麼C語言能長盛不衰?

時間 2021-05-05 15:41:25

1樓:支浩宇

為什麼英語是全世界通用語言? 因為很多國家都學它,用它。

為什麼很多國家都學英語、用英語?因為英語是全世界通用語言!

這是乙個先有雞先有蛋的問題。

2樓:Mimosa

C語言是神奇之作,簡單而強大!許許多多的程式語言(包括C++)都在不斷公升級,唯獨C語言幾乎沒有什麼公升級,好像也不需要什麼公升級。

3樓:靈劍

因為無論如何都還是需要一種:

極少抽象, 幾乎完全對應到彙編實現的

可以完全沒有runtime支援的

遷移到不同平台成本最低的

高階語言。這就好比雖然小刀切東西不方便,但沒有還是不行,拿大刀亂切容易切手。

4樓:斡貓

有一種需求,那就是在組合語言(指令集)之上提供乙個足夠簡單的抽象,它能支援對於記憶體更為簡單的訪問(變數與指標),更方便的子程式呼叫(函式),貼合機器記憶體的型別系統,基礎的流程控制。當你想為了實現這樣的需求發明一種程式語言的時候,你發現c早已經存在這個生態位。

底層開發,裸機開發(微控制器),這種需求一直存在,c足夠簡單,而且能滿足上述開發的需求,所以c能長盛不衰。並不是所有程式都是執行在作業系統上的,目前裸機開發雖然也可以有不少選擇,但是c一定是支援最好的

5樓:白彬

C語言確切的反應了計算機是怎麼計算的,它對這種工作方式的抽象不多也不少,剛好合適。

除非整個計算的方式變了,否則C語言一定有一席之地。

6樓:無心

所有語言都長盛不衰。

語言其實很簡單,啥語言都差不多。都是那幾個元素。

外掛程式的函式庫也差不多,有的用沒什麼區別。

c系列就是多了一點指標而已

7樓:lu luce

因為C語言一開始被設計的原因是取代編寫困難的組合語言。

因此上,C語言一開始的目標是操作自動機硬體。在方便編寫的基礎上,最大程度的模擬組合語言執行。只要計算機還是基於自動機體系。C語言就要一直存在。

C語言在計算機中的地位是相當於人類文明中的輪子。你等於在問為什麼人類發展了這麼久,地面交通工具仍然使用輪子作為運動器件。

8樓:

難道不是因為中國大學的第一程式語言還是c語言這種實際工作中使用概率極低的語言嗎?因為大學教了,所以搞得這玩意好像很火的樣子。

國外好些大學的第一程式語言都是Python。

至於國內為什麼一直還教c語言,可能是因為在中國想要撤掉一門課程的難度實在是太高了。還有就是撤掉c語言到底換成哪個語言,這就牽扯到了到底什麼才是最好的程式語言這種終極問題。這個問題是永遠也吵吵不清的。

9樓:

因為抽象程度不夠高,比組合語言抽象,但又足夠貼近硬體。

C語言熟練的人,基本寫什麼都可以知道編譯後是什麼彙編語句。

在歷史上和C唯一同生態位的語言是Pascal和其加強版本Ada,Ada比另外兩個稍微高階一些,但脫離不了這個抽象層次,C和Pascal兩者基本可以互譯,而且我記得兩者的庫好像也可以互相呼叫,Pascal和Ada比C早7年進入ANSI/ISO標準,我估計C取代了Pascal的主要原因是Pascal實在太羅嗦了,導致浪費儲存器和打字的時間。(在80年代短暫的時間裡,Pascal以及Ada曾經一度是最流行的語言,而且C的使用者數量壓倒Pascal/Ada的時間點,確實在C進入ISO標準前後)

10樓:丟貓

一方面是工程上的慣性。

另一方面是,大部分語言要比你想象的年輕。

@偏飛 你說的很對,C語言連reference和raw_pointer的區別都無法表達,心智模型真簡單。

11樓:遠遊客

雖然現在網際網路、移動網際網路、AI等已經不是以C語言為業務基礎語言,但對於資訊科技整個IT、CT底層系統,C語言仍然是唯一的選擇。

12樓:狂徒歸來

C語言誕生非常早,早就佔據了目標領域的絕大部分市場,基礎設施非常完整,語言本身又足夠簡單。像C語言這樣簡單接近底層又高效的語言不多吧? go有gc,rust可比c複雜得多,對標的是cpp。

c目前根本沒有替代品。

13樓:

其他語言是可樂雪碧芬達脈動雀巢。而C是純淨水。其他語言在不斷加各種佐料變換口味拼個你死我活,而水是沒辦法競爭的,只好默默的在那裡看著它們。

14樓:呵呵呵

事實上任何程式語言從發明出來到現在都是不衰的。至於長盛的原因,一般也語言關係不大,往往取決於航母掉頭收益和成本的比較,當然還有新入坑的學習成本。

15樓:rengo

c比起前些年已經衰了不少了,除了一些底層、嵌入式、高效能的工作用c,其他的地方沒必要用c,用起來也不合適,有更好的語言可以用。c現在的定位也就是些核心模組了,用的人必然會越來越少,不知道過上幾十年c程式設計師們會不會被從家裡拉出來維護上古系統。

16樓:張浩

可以確切知道每一行程式幹了什麼,沒幹什麼。但是,彙編也能做到?

換一台機器,從x86換成arm,從大型機換到微控制器,從太空梭到電飯鍋,只需要極少的修改。程式層次做好了,只要改硬體相關的底層就行,上層邏輯可以原樣照抄。彙編就做不到了。

17樓:liuzikai

貼近硬體底層,能與組合語言建立直接的對應關係,overhead小、可控。

同時在現有程式語言環境下,能提供足夠的抽象,雖不像Python等容易上手,但用來實現一些實用的程式邏輯還是足夠的。

故C語言編譯器幾乎是各個嵌入式處理器工具鏈的必要組成部分,對於貼近底層的專案或研究也是繞不開的。

如果未來技術變革,各個場景的算力多到用不完,新的程式語言急劇減少程式設計工作量,那C語言可能就要退出歷史舞台了。

18樓:五星程式設計師

從效能上看彙編最好,但是對開發人員不友好。

C語言效能最接近彙編,而且可讀性也很高,在很多領域都只有它適用。

很多高階語言都是基於C的基礎建立起來的,要替換它很難。

19樓:黃文海

第乙個優勢他是可以操作虛擬記憶體的,這對於一些特定的場景非常有用,第二,相對於其他語言,其可執行檔案指令數很可能更少(相同演算法),這決定了它有更高的執行效率。

20樓:

C語言正好卡在乙個點上:

足夠高階到容易理解,又足夠底層到僅僅是對硬體的直接抽象。掌握需要的基本概念極少,而能適應的場景極其寬廣。

能卡在這個點的過程式語言,基本上只有關鍵字不一樣。

21樓:轉圈圈

這好像是因為做底層支援的需要吧,另外靜態編譯是某些需求的絕對優點…總的來說它是現在的多數語言的工具編寫語言,所以總是要有人生產生產工具不是?!

22樓:disturbwe

c語言有著其它高階語言無法比擬的優勢:速度。

同時,jvm是c語言寫的;瀏覽器核心是c語言寫的…c語言是現代程式語言帝國的地基。

如果學過計組、彙編等,一定會驚嘆於c語言的優美、指標的簡潔。

23樓:

開發時間、執行時間、學習時間構成乙個不可能三角,C語言在三者中達成了相對平衡。

比如C++和C執行差不多快,同樣功能開發比C還快,但是學習時間太TM長了。

比如Python學習容易,開發也容易,但是跑得和牛一樣慢。

24樓:傳統的幻想書屋

c沒有理由被替換,能做到跟c一樣的相容性,簡單易學,跟彙編的對應關係很簡單,又使用廣泛,這種語言就算不叫c,那也跟c差不多。你看看組合語言有幾種,說白不就一種,無非幾個助記符的樣式有點區別,指令集有區別,本質還是一樣的。現在大部分的基礎設施都是c寫的,不管什麼新語言,支援c的ffi已經成為了基本功能。

經過幾十年的發展,現在已經形成了底層c,上層百花齊放的形式了,應用開發的抽象方式太多了,不可能一種語言走天下,但是c作為高階彙編,僅僅抽象了硬體,真的沒什麼好變的,在這個層面能代替c的,基本都長得跟c差不多,或者多的那點東西平添學習難度,又沒有多少收益,那麼也沒必要換了。你看看有人想整一種新形式的彙編嗎?不存在的,沒有必要。

軟體開發中,不是很有必要換的東西一般是不會動的,更何況c已經使用這麼廣泛了。

25樓:

因為c語言基本上就是彙編套上一層皮_(:з」∠)_

其實很多人都有感覺,懂一點彙編和反編譯以後,寫c腦子裡面都能模擬出對應指令來……

26樓:

C語言的生態位比較特殊:它是唯一乙個語義直接對應當前主流體系結構組合語言的高階語言,也既是說:第一,它完全不需要任何執行時;第二,它可以和彙編無縫混合程式設計,直接對硬體層面實施控制

所以其他語言才需要C語言來寫他們的執行時,哪怕編譯器已經實現自舉;所以底層的作業系統一直離不開C,哪怕這個作業系統並不是UNIX

多少年來這個生態位上沒有挑戰者,直到Rust的出現,所以說Rust未來可期

27樓:姚冬

C語言恰好是開發效率和執行效率的最佳平衡點比C語言開發效率高的,執行效率不如它

比C語言執行效率高的,開發效率不如它

兩項都比C語言好的,目前不存在

而對於一些基礎演算法,系統核心領域的開發來說,後來的語言在開發效率上都不一定比的上C語言。

28樓:runner time

總有不懂行的跟我扯什麼歷史遺留問題。

我上次回答華為鴻蒙系統,他們都跟我說那是因為其他作業系統歷史遺留包袱太重,要相容舊程式,而華為鴻蒙是從頭開發的,所以開發效率高很多。

得,那麼多字白寫了。

現在看到C,又有人說是歷史遺留問題太重,不得不相容,不然早就被拋棄了。

我就搞不懂了,怎麼滿大街都是這種人,自己不懂不學習,還要到處教別人。

C還真就是你大爺,你大爺還沒死呢,就天天嚷嚷把你大爺給扔了,真是一堆不肖子孫。

29樓:fr劍

worse is better.

在系統設計領域原本有兩套理念。

第一套的核心是: the right thing。他把乙個系統的正確性擺在首要的位置,而簡潔性,一致性,完備性都以正確性作為前提。

大體是指在設計乙個系統之初就要保證它是正確的,但因此系統可能不會十分簡潔。

第二套的核心是: worse is better。即一切以簡潔為中心,為了保證足夠的簡潔,允許在一定限度內出現可能的錯誤。

歷史證明,優秀的設計大多來自後者,如C語言,unix。

原因很多,這裡就舉乙個方面做例子。想象一下病毒的構造,乙個好的病毒剛開始最重要的能力一定不是它的破壞力而是他的傳播能力,只有足夠簡潔才有足夠的傳播力。C語言某種意義上就像一種「病毒」。

因為它被創造出來的時候足夠簡潔,很多人(硬體)願意嘗試它。等越來越多使用者開始使用C語言並發現它的不足時,由於龐大的使用群體加上實現層面的簡潔性,C語言有了提公升的原動力。幾十年迴圈往復,造就了今天C語言的長盛不衰。

30樓:

因為c可以內聯彙編直接和硬體系統核心打交道 。比純寫彙編效率高多了;可移植性強幾乎任何系統都必須有c的runtime;c程式的符號表很簡潔簡單可以直接接入絕大部分語言作為基礎模組使用。

總之你別的語言搞不定我c都可以幫你搞定,而且可以讓你可以在幾乎任何環境下使用。

C語言能實現C 的物件導向,為什麼還要有C ?

rayshen 架構整潔之道一書有答案 c語言能夠實現物件導向,甚至對於使用c構建大型系統設計來說物件導向是有效控制系統複雜度,模組解耦,架構持續演進的最佳實踐之一,比如作業系統對io裝置的管理就是物件導向的設計。c可以實現面向的封裝多型繼承以及依賴倒置,實際上c 底層關於物件導向的實現很多就是用c...

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

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

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

avoidant 如果這個世界上只有c和c 那c早就被c 取代了。正是因為那些不認同c 理念的語言的存在,才讓c更加有了存在的必要 作為一種不同語言都願意接受的普通話。事實上,別說不同語言,就是不同c 編譯器也選擇了c作為彼此間溝通的普通話。 恆星 這就好像為什麼30系顯示卡都發布了卻還有人在用9系...