{eval=Array;=+count(Array);}
c語言是不是世界上最好的編程語言?答案肯定是否定的。
c語言真的永遠不會過時嗎?答案當然也是否定的。
任何東西,沒有最好之說,只有最適合之說。
一、c語言的最大優(yōu)勢是效率。提起效率,其實效率最高的語言是匯編語言,但是匯編語言是機器語言,不符合人類的使用習慣。所以綜合編程效率和運行效率來看,c語言就是首選了。
然而,是不是在任何情況下,我們都對執(zhí)行效率這么苛刻呢?
當然不是了。
在嵌入式系統(tǒng)里,比如像智能手表、針孔攝像頭等,由于體積、能耗和硬件資源的限制,我們對代碼的運行效率比較苛刻(這樣才能能節(jié)省內(nèi)存和cpu,從而節(jié)省成本)。所以我們使用c語言,就是最合適的。
二、但是在pc系統(tǒng)或者服務(wù)器系統(tǒng)里,尤其是隨著硬件價格成本的不斷降低(請參考摩爾定律),我們對代碼的運行效率不那么苛刻了。反而隨著軟件復(fù)雜度的提升,我們對代碼的編程效率和代碼的集成度有了更高的需求,而這些卻都不是c語言的強項,這個時候面向?qū)ο笳Z言,比如java會更加合適。
所以,綜合編程語言的發(fā)展歷史,從來沒有也不會有一款編程語言永遠都不會過時。因為社會在發(fā)展,有些制約因素在以前是制約因素,現(xiàn)在可能就不是了,那么所謂合適的主體也就變了。c語言在過去的幾十年里一直興盛不衰,但是并不意味著以后不會消亡。我們看到隨著嵌入式設(shè)備的和web化趨勢的結(jié)合,golang語言開始嶄露頭角,在一些領(lǐng)域慢慢替代c語言了。相信在未來,開發(fā)語言會不斷的進行進化,進化出符合當前需求的新的開發(fā)語言。
是不是最好的語言?俗話說,文無第一,所以也不存在最好的語言,只有最合適某些領(lǐng)域的語言。
永遠不會過時?計算機出現(xiàn)才幾十年,現(xiàn)在任何的語言、設(shè)計,都遠遠談不上永遠。一定會有過時的一天。
但是,我們可以說,C語言是最經(jīng)典的流行語言。從1970年代發(fā)展到現(xiàn)在,足夠經(jīng)典,也足夠優(yōu)秀。因為:
C語言方便、高效的完成了對計算機體系結(jié)構(gòu)的抽象。而從1970年代到現(xiàn)在,計算機底層的體系結(jié)構(gòu)并無巨大變化
C語言與UNIX系統(tǒng)構(gòu)成了良好的共生關(guān)系。而UNIX及類UNIX系統(tǒng)到現(xiàn)在仍統(tǒng)治整個計算機界(Linux, macOS, Android, iOS等等,連Windows都號稱POSIX兼容)
C語言是互聯(lián)網(wǎng)TCP/IP編程的原生語言,很多基礎(chǔ)協(xié)議內(nèi)容如socket,都是基于C實現(xiàn),也適合C實現(xiàn)。而TCP/IP正統(tǒng)治整個網(wǎng)絡(luò)
C語言編譯器容易實現(xiàn),對一個新CPU,可以迅速實現(xiàn)對應(yīng)的C編譯器,移植成本低?,F(xiàn)在大量的MCU都實現(xiàn)且僅實現(xiàn)了C編譯器
小結(jié)一下:
C語言雖然談不上最好,也談不上永不過時,但在與硬件系統(tǒng)接近的領(lǐng)域,如操作系統(tǒng)、驅(qū)動程序、MCU編程等領(lǐng)域,C語言是最適合的,并且在硬件底層未發(fā)生巨大變化的情況下,仍會具備強大的生命力,是一個值得花時間學(xué)習的語言。
首先,C語言是世界上最好的編程語言,它是其他的編程語言需要膜拜的編程語言,它是編程語言世界“神一樣”的存在,永遠不可能過時,因為它是指引初學(xué)者學(xué)習編程語言的“燈塔”。
其后任何的編程語言,都有C語言的身影。它們出現(xiàn),由于時間的推移和應(yīng)用的特殊需要,C語言搭建的家園必須擴建,但是它們的基石離不開C語言,至少擺脫不了C語言的影子。
C語言是最接近底層(匯編語言)的編程語言,它編譯后的效率極高。
C和C++語言都有指針,特別是函數(shù)指針,而其他高級語言極力反對的就是指針的存在。
有些編程語言的崛起就是以指針為攻擊對象而吸引眼球的。
在嵌入式領(lǐng)域,中斷向量實際就是函數(shù)指針。
C語言的函數(shù)指針和結(jié)構(gòu)及聯(lián)合,構(gòu)成了完美的“COM接口技術(shù)”,故在嵌入式領(lǐng)域,C/C++編程語言是其他任何編程語言無法取代的。
菜農(nóng)認為,沒有指針的編程語言,就別在嵌入式領(lǐng)域混了!
如圖所示,菜農(nóng)在2003年在PIC上用宏匯編實現(xiàn)的“HPL語言”(早已完美地應(yīng)用到產(chǎn)品上),它也跑不出C語言的影子!
菜農(nóng)從1981年就開始用匯編語言,BASIC,TC,BC,DBASE,F(xiàn)OXBASE,VB,VC++,F(xiàn)OXPRO,BC++,DELPHI,CVI,mysql,JAVA,C#,html,css,js,VB腳本到如今的PHP,也在2006年學(xué)過python,也看過QT……總之菜農(nóng)用過、學(xué)過和看過幾乎所有流行的編程語言。
不請自來,作為一名長期使用C語言進行開發(fā)的老司機,來回答一下這個問題。
答主本人從2000年開始接觸使用C語言,那還是486計算機還是天價的時代,上一次計算機課和過年一樣興奮。迄今已經(jīng)近20年的時間,很多其它語言有的衰落了,有的起來了,有的是起起落落。
像pascal、basic、fortran等等,現(xiàn)在有的學(xué)生可能連聽說過都沒有,現(xiàn)在幾乎已經(jīng)消失了,像C/C++/java/python/php/javascript等等都是經(jīng)過大浪淘沙的勝利者,尤其是C語言,生命力是最頑強的。因為幾乎所有的計算機系統(tǒng)底層都是用C語言開發(fā),尤其是linux/unix以及其衍生系統(tǒng)都是以C語言為主的操作系統(tǒng),windows系統(tǒng)也是如此,只不過微軟花了大價錢開發(fā)了VC,但是還是以C語言為基礎(chǔ)的封裝的。
后來的嵌入式操作系統(tǒng)更是離不開C語言,所有嵌入式的BSP都是以C語言編程的,固件庫也是用C語言封裝的。包括已經(jīng)一統(tǒng)手機天下的android操作系統(tǒng),所有的driver層還必須是C語言開發(fā),因為android的底層就是linux,android不過是在linux上開發(fā)優(yōu)化了java虛擬機,然后用java語言開發(fā)了UI庫。其實嚴格來說android并不是新的操作系統(tǒng),而是一個適用于手機的UI庫。
正如一個城市建筑群,所有建筑的地基都是用C語言打下的,你能把地基丟掉嗎,顯然是不行的,C語言青春永駐也是自然而然的事情。
答案是:不會,上面已經(jīng)說了,C語言是可以直接和硬件驅(qū)動語言,是所有操作系統(tǒng)的基礎(chǔ)。除此之外,C語言的效率是除匯編語言之外效率最高的語言,即使目前計算機的算力已經(jīng)非常廉價的今天,在某些要求苛刻的關(guān)鍵計算任務(wù)上,首先仍然是C語言,甚至有時使用C語言有時并不是完全因為效率,而是因為可控。高級語言由于封裝了操作系統(tǒng)的某些特性,比如線程安全、內(nèi)存管理等等。這些高級特性再某些時候運行結(jié)果可能是未知的,比如有可能內(nèi)存分配失敗,線程得不到及時調(diào)度等。對于實時性要求比較高的場景,這些不可預(yù)知的問題都是致命的。而C語言的簡單直接,就顯得格外重要了。
即使不斷誕生新的語言,有一部分任務(wù)采用其他語言完成,但是和底層硬件打交道仍然離不開C語言,如果你打算在driver層面或者從事嵌入式開發(fā)謀一份工作,那就毫不猶豫的擁抱C語言吧,如果你是高手,高薪工作那都不是事兒。
如果您有什么不同意見,歡迎留言討論。
C與言是不是最好的編程語言這個不好說,但是在可預(yù)見的未來是不會過時的。
這世上有很多優(yōu)秀的編程語言,C語言,C++語言,Java,C sharp等,每種語言都有自己的特點和使用場景,也都有自己的缺點和無法彌補的遺憾。要說哪種編程語言是世界最好的編程語言這個問題是沒有意義的。
C語言不一定是最好的編程語言,但它是一個不可被替代的編程語言,它的許多精髓仍然被其他的編程語言借鑒著!學(xué)好C語言吧!
問一種語言是不是世界上最好的編程語言,實際上這種問法是不恰當?shù)?。C語言也好,Basic語言也好,或者是Python語言也好,不存在好與不好之說,只能說哪個更適合你,哪種編程語言更擅長哪種領(lǐng)域而已。
如對于C語言,應(yīng)該說是一種比較重要的、比較基礎(chǔ)的編程語言。如果你以后的工作方向更側(cè)重于硬件方面(如單片機開發(fā))、操作系統(tǒng)底層通信開發(fā)、復(fù)雜信號處理算法等等方面,那學(xué)習C語言是確實比較合適的。C語言是一種編譯型語言,運行效率比較高,在這些領(lǐng)域更合適些。
但C語言的的缺點也比較明顯,相對于Python等動態(tài)類型的編程語言來講,它入門相對較大,自己在學(xué)習過程中必須要有足夠的耐心、恒心,多多練習、多多調(diào)試才能積累更多的編程經(jīng)驗,得心應(yīng)手的解決實際的工程問題。
在C語言是否會過時方面,應(yīng)該也不存在過時之說,各種編程語言的編程思想方法(如程序結(jié)構(gòu)都有順序、循環(huán)、選擇等結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu)的組織)等思路方面都是相通的。學(xué)好C語言,對于你將來學(xué)習第二種編程語言肯定是有好處的,能夠幫助你更快的學(xué)習理解其它的編程語言思想,會有極大的促進作用。
直接從數(shù)據(jù)來看,TIOBE公布了5月編程語言的排行榜,C語言時隔5年重回第一。
首先,C語言是編程語言世界中“神一樣”的存在?,F(xiàn)如今市面上大多數(shù)編程語言都或多或少的包含C語言的身影。C語言是最接近底層的編程語言,編譯后的效率極高。C語言有指針,特別是函數(shù)指針,中斷向量實際就是函數(shù)指針。
C語言的函數(shù)指針和結(jié)構(gòu)及聯(lián)合,構(gòu)成了完美的“COM接口技術(shù)”,在嵌入式領(lǐng)域,C/C++是其他任何編程語言無法替代的。如果語言沒有指針,那在嵌入式領(lǐng)域是非常難生存的。
如果你要懂得C語言,那必須要懂得程序設(shè)計的思想,想真正學(xué)會程序的設(shè)計必須與數(shù)據(jù)結(jié)構(gòu)打交道。如果初學(xué)者從Java或者VB入手,基本上很難理解如何構(gòu)造數(shù)組、鏈表、樹、圖等結(jié)構(gòu),這些東西比較容易和封裝、繼承等概念沖突,反觀C語言則可以清楚明白的表示。只有真正理解數(shù)據(jù)結(jié)構(gòu),才可以體驗程序設(shè)計的思想和算法精髓。
所有包含微處理器的設(shè)備都支持C語言,從微芯片到手機都可以通過C語言推動。C語言是一個比較少見的應(yīng)用領(lǐng)域極為廣泛的語言。所有的系統(tǒng)平臺都支持C語言,所有的應(yīng)用程序也都可以由C語言來開發(fā)。
1.C語言可以讓你更好的了解計算機。
2.設(shè)備驅(qū)動程序和操作系統(tǒng)只能用C語言編寫。
3.微控制器程序的編寫。
4.相較于其他編程語言,在實現(xiàn)相同功能的前提下,C語言所需要的代碼更少,運行效率更快。有時候,你程序所需要的速度,只有C語言可以完成。
5.幾乎所有高級編程語言都是以C語言為基礎(chǔ),所以學(xué)習過C語言,在學(xué)習其他編程語言時會簡單很多。
6.C語言的存在時間很長,使用團體非常廣泛并且有大量的現(xiàn)成代碼可以利用。這就使你能在過去程序的基礎(chǔ)上,快速進行更新。
7.C語言是開源組織的語言。Linux就是用C語言編寫的,Linux的功能有多強大,這個我不多贅述。
8.C語言是唯一一個闡述指針本質(zhì)的語言,C#和Java跳過了指針,但是不可否認的是,指針卻是讓C語言更加強大。
如果你是計算機專業(yè)的學(xué)生,幾乎各大高校入門的第一種語言就是C語言。當然也會有以C++或者Java入門的。正經(jīng)的說,沒有一門語言可以被稱為最好的編程語言,之所以會有這么一說,多半都來自程序員間的囧談。IT行業(yè),你適合的,對你來說就是最好的。
其次,C語言會不會過時,這個不會的。主要從兩個方面聊聊:
第一:為什么更多的搞笑采用C語言作為入門語言?并不是說C語言簡單(現(xiàn)在大部分程序員沒有多少敢說精通C語言的),而是C語言可以更快的帶你進入編程世界,了解編程的常規(guī)思維方法。C語言是一門面向過程語言,相對面向?qū)ο蠖?,很多邏輯可以看得更清晰,不至于對于初學(xué)者而言太過于抽象。從C語言學(xué)到的概念理論,也都可以很快的套用到其他編程語言。比如判斷、循環(huán)、函數(shù)、數(shù)據(jù)結(jié)構(gòu)等等。
第二:大家都知道C語言是一門底層語言,略高于匯編語言之上,低于Java/Python等高級語言。C語言的存在就是更方便的銜接硬件和軟件。比如電腦開機,從按下電源按鈕到屏幕顯示開機Logo,這個階段運行的絕大部分程序都是C語言(早些時候更多的是匯編)。換言之,C語言服務(wù)的行業(yè)更多的是制造業(yè),制造業(yè)雖然說不如互聯(lián)網(wǎng)那樣讓人眼花繚亂,但是也不可或缺。沒有制造業(yè),何談互聯(lián)網(wǎng)。
如果你想入門編程,還是先想好自己的方向。C語言多掌握一些,甚至你會覺得很多問題你都會有更深的理解。比如變量存儲、對象生存期等等。
c語言永遠不會過時,為什么呢?要從我們解決問題的思維方式和方法上來看。人類的思維方式和方法基本原理都一樣,都是通過抽象,分類,然后按照一定的步驟去執(zhí)行。實際這就是計算機里對程序的定義。而c語言基本覆蓋了這些,并且簡潔,優(yōu)美。它是我們解決問題的基本語言,什么都可以做。
而大家看到的很多高級語言,實際上他們更注重的是應(yīng)用,讓開發(fā)人員能更快,更方便的去開發(fā)應(yīng)用。大家知道,應(yīng)用是在不斷變化的,也是在不斷的被淘汰,而基本原理是不會變的,學(xué)會c語言,可以做到以不變應(yīng)萬變。
第一、在沒有界定范圍的時候,沒有人能夠說什么是最好。每一種語言出現(xiàn)都有它出現(xiàn)的應(yīng)用場景,在那個時代,那個場景下,那個語言才能說最好。如果你需要一個效率極高的語言,那肯定就是C語言或者匯編。如果你要搞嵌入式開發(fā),那肯定也是C語言,java和C#沒法在嵌入式系統(tǒng)上運行,所以他們在這方面不存在好不好。
第二、在現(xiàn)在看來,C語言是永遠不會過時的語言。起碼在馮諾依曼機的時代是這樣的,我們也沒有跡象能看出馮諾依曼機要被淘汰。
10
回答10
回答10
回答1
回答10
回答9
回答8
回答10
回答9
回答10
回答