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

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

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

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

為什么C語言不會過時呢?

wFVr_Hardware_1 ? 來源:趙巖 ? 2023-03-16 09:38 ? 次閱讀

評價任何一門編程語言,都是招人罵的。永遠(yuǎn)是這樣。就像是春寒料峭的季節(jié), 街上穿棉襖和穿單衣的擦肩而過,雙方一定是同時在心里出現(xiàn)了兩個字:“***!”這個在心理學(xué)上有個專業(yè)的名字:叫做“二逼”現(xiàn)象!

那我為啥還要做這個挨罵的事呢?作為《C語言點滴》《drop of knowledge of C++》書籍的作者,《C語言新思維,第二版》的譯者。

我覺得我有責(zé)任系統(tǒng)的介紹一下這本語言,他的特點,還有他的未來。這個問題對很多剛剛踏入程序猿這個行業(yè)的新手至關(guān)重要。

因為他們有深深的擔(dān)憂,萬一C語言就像Fortran,perl語言那樣過時了怎么辦?

先上一個表,這個就是著名的TIOBE語言排行榜。

目前它是一個最權(quán)威的一個語言流行度的排行榜,從這個排行榜上看,你會得到一個最直觀的結(jié)論。

Java和C都在下降,而下降的部分被第三名以后的語言所瓜分。

bb40d1ca-c32d-11ed-bfe3-dac502259ad0.jpg

最新的TIOBE數(shù)據(jù)顯示Java和C分別以17.8%和15.37%排在前兩名)

每次C語言的排名上升,都會讓做硬件的朋友覺得是硬件的春天來了。。。

對所有的編程語言,他們的最后的目的其實就是兩種:提高硬件的運行效率和提高程序員的開發(fā)效率。

遺憾的是,這兩點是不可能并存的!你只能選一樣。在提高硬件的運行效率這一方面,C語言沒有競爭者!舉個簡單的例子,實現(xiàn)一個列表,C語言用數(shù)組int a[3],經(jīng)過編譯以后變成了(基地址+偏移量)的方式。對于計算機來說,沒有運算比加法更快,沒有任何一種方法比(基地址+偏移量)的存取方法更快。

C語言已經(jīng)把硬件的運行效率壓縮到了極致。這種設(shè)計思想帶來的問題就是易用性和安全性的缺失。例如,你不能在數(shù)組中混合保存不同的類型,否則編譯器沒有辦法計算正確的偏移量。同時C語言對于錯誤的偏移量也不聞不問,這就是C語言中臭名昭著的越界問題。

C語言自詡的“相信程序員”都是漂亮的說辭,它的唯一目的就是快,要么飛速的運行,要么飛速的崩潰。C語言只關(guān)心程序飛的高不高,不關(guān)心程序猿飛的累不累。就是這樣!

這時,會有朋友提出不同的意見了:你這么說C語言,讓匯編語言情何以堪?

但是匯編語言的編程效率,是開發(fā)周期不能忍受的。

匯編語言,你不會編啊!

bb5ac30a-c32d-11ed-bfe3-dac502259ad0.jpg

現(xiàn)在來看看那些非C的語言,他們的長處都在于提高程序員的開發(fā)效率上。或者支持動態(tài)的列表,或者支持安全的列表。但是加入任何的中間層,加入任何的安全檢驗,它不可能比(基地址+偏移量+無檢驗)的方式更快。這個世界上不存在“開發(fā)容易,運行快”的語言,開發(fā)容易畢竟來源于對底層的一層一層又一層的包裝。

現(xiàn)在回答兩個最普遍的問題:硬件這么便宜了,有必要讓軟件更快嗎?有這種疑問的人大部分都是網(wǎng)吧的固定客戶,他們理解的計算機只在電腦城,他們理解的計算只是游戲和播放硬盤中的小電影。不要玩?zhèn)€游戲開個掛就樂得不行不行的,別忘了還有全實景仿真,還有3D渲染,還有自動駕駛

人在開車的時候,每秒要收集60個不同的物體,然后根據(jù)這60個物體的不同組合和反映來做20個最重要的決定。然后從這20多個決定中選一個執(zhí)行。所以就算用上最快的硬件,自動駕駛現(xiàn)在還不敢說能像人那樣開車。就算是自動駕駛成功了,下一步還要自動飛行呢?因為我們老早就預(yù)言了:你咋不上天呢!

所以說:計算速度永遠(yuǎn)是不夠的!因為新的應(yīng)用會越來越復(fù)雜,越來也實時。對了!我還忘了一個更重要的限制:計算的能耗!NASA飛行器上的CPU最多就是32位的,說出來你可能不信,國際空間站上沒有一個CPU是64位的,我猜一個最主要的原因是航天員不愛看硬盤小電影吧。

另外一個流行的疑問是:我可以發(fā)明一種同樣快的語言,但是沒有C語言那么多的坑。想法是可以的,而且還真巧有這個語言,真巧它的名字叫D語言,真巧沒有太多的人用!這是因為一個基本的事實。現(xiàn)在有太多,太多太多的C代碼,他們大部分都在正常工作,就像Linux, Window, MacOS,Unix,Vxworks。你沒有看錯,這些操作系統(tǒng)的內(nèi)核都是C,我雖然不確定C在Window中所占的比例,但是我相信微軟的人不會傻到用C#去全部改寫一個操作系統(tǒng)的內(nèi)核。你想讓這些人去用你的全新的語言,這就不是“有點”很傻,很天真了!

而且有些代碼,我們根本就不能改!NASA一個簡單的5個CPU飛控軟件編寫完畢后,要進(jìn)行一種“全覆蓋”測試。如果CPU A壞了會發(fā)生什么?如果CPU A,B壞了呢?如果CPU A,C壞了呢。。。。?如果你愿意,你可以做個簡單的數(shù)學(xué)組合。測試完畢后,別說重寫,就算加個注釋都不行。因為主管payload的大媽會非常嚴(yán)肅的質(zhì)問你,為什么你上報的東西數(shù)量增加了,但是質(zhì)量沒有增加?你需要和她詳細(xì)的解釋:硬件和軟件是不同的,硬件是那種摸起來硬硬的東西,但是軟件不是那種摸起來軟軟的東西。看著大媽鄙夷的眼神,這個時候你會非常后悔自己手欠加入的哪一行注釋。你還別不當(dāng)真,這個是NASA的真實故事。

哪為什么C語言還下降這么多呢?很簡單,有些任務(wù)本身就不是C語言的。我上學(xué)的時候還用C語言編過窗口界面呢?然后很快微軟的人就推出了MFC,就是一大堆宏把底層的C windowAPI包裝了起來。

再后來這個技術(shù)也過時了。因為微軟的人認(rèn)識到,帶有窗口的應(yīng)用程序說到底不是C語言的本職工作,再這么一層一層包下去就有露餡的危險,于是他們發(fā)明了一個全新的語言C#來負(fù)責(zé)這個任務(wù)。

Java也是這樣,突出網(wǎng)絡(luò),易用,安全,跨平臺。無論是Java, c#還是python, 他們都有意避開提高硬件的運行效率這個問題,因為這個問題上沒辦法和C競爭,也無法撼動Linux, Unix,GNU tool這些已有C代碼的位置。剩下的就只是提高程序員的開發(fā)效率上大作文章。這對C語言是好事,把自己不善長的東西去掉,讓自己跑的更快!

伴隨著嵌入和實時系統(tǒng)的興起,AI機器人,自動駕駛等。這些都是C語言的核心應(yīng)用,而且在這種應(yīng)用上面,C語言沒有競爭者。所以我感覺C語言會穩(wěn)定在自己核心的應(yīng)用中,并開始逐步回升。

但是Java語言我個人不樂觀。小型和靈活性上,Python更勝一籌。一行python代碼后,你根本不知道自己還是不是duck類型?平臺領(lǐng)域,每個平臺都推出自己專屬的語言。Windows會繼續(xù)支持C#,蘋果偏愛Swift, Android推出Kotlin,Google用go。Java宣稱自己可以自由到每家做客,但是無論是到誰家,都會發(fā)現(xiàn)客廳里面坐著一個親兒子,這個時候自己這個干兒子多多少少有點尷尬。所以我猜測,最后Java會穩(wěn)定在對跨平臺有嚴(yán)格要求的,大型非實時應(yīng)用上。

最后說點閑話,C++不會淘汰C語言。有了對象后你會發(fā)現(xiàn)再簡樸的對象也耗費資源,而且有了對象以后,總是不由自主的去想繼承這個事,一但繼承實現(xiàn)了,你會發(fā)現(xiàn)繼承帶來的麻煩遠(yuǎn)超過你的想象。Java的發(fā)明人James被問到如果可以從新設(shè)計Java語言的話,第一個要做什么事?他說:“去掉對象”!作為一個已婚,有兩個孩子的程序猿,我感同身受。如果大家感興趣,我可以再寫一個博客,聊聊C++和C的真實區(qū)別所在。

如果你看到這里,還什么都沒記住。那就只記住一點:沒人能預(yù)測未來。





審核編輯:劉清

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

    關(guān)注

    211

    文章

    28632

    瀏覽量

    208003
  • JAVA
    +關(guān)注

    關(guān)注

    19

    文章

    2974

    瀏覽量

    104984
  • C語言
    +關(guān)注

    關(guān)注

    180

    文章

    7614

    瀏覽量

    137438
  • MFC編程
    +關(guān)注

    關(guān)注

    0

    文章

    8

    瀏覽量

    6268

原文標(biāo)題:為什么C語言不會過時?

文章出處:【微信號:Hardware_10W,微信公眾號:硬件十萬個為什么】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    2019年這些編程語言不會過時

    2019年學(xué)習(xí)哪些編程語言不會過時
    發(fā)表于 06-26 10:10

    嵌入式過時了嗎?會不會被淘汰?

    嵌入式過時了嗎?會不會被淘汰?每一個想學(xué)習(xí)嵌入式的人肯定都考慮過這個問題。對于很多想入行的嵌入式開發(fā)的新人而言,其實有這種疑慮是應(yīng)該的。學(xué)習(xí)一門技術(shù)不考慮其前景顯然是不科學(xué)的!從目前的形式看,隨著
    發(fā)表于 11-24 17:00

    C語言基礎(chǔ)怎么學(xué)51單片機

    C語言基礎(chǔ)怎么學(xué)51單片機?為什么學(xué)好C語言不會弄單片機
    發(fā)表于 10-18 09:17

    C語言具有什么特點

    了解嵌入式開發(fā)的朋友們都非常的清楚其核心的開發(fā)語言C語言C語言在嵌入式開發(fā)的過程中占有十分重要的地位,可以說兩者之間“你中有我,我中有你
    發(fā)表于 11-08 07:26

    C/C++編程語言學(xué)習(xí)難點及語言

    一般學(xué)C++前都要學(xué)C,所以通常叫它們C/C++。C/C++歷經(jīng)40余年,也是經(jīng)久不衰的號稱“永
    發(fā)表于 08-15 10:24 ?2289次閱讀

    C語言究竟會不會過時

    專業(yè)的名字:叫做“二逼”現(xiàn)象!  那我為啥還要做這個挨罵的事?作為《C語言點滴》《drop of knowledge of C++
    的頭像 發(fā)表于 10-17 14:09 ?4744次閱讀

    市面上編程語言幾百種,是不是C語言就不行了

    如今,市面上編程語言幾百種,很多人覺得Python、 JAVA這種語言比較火,是不是C語言就不行了
    的頭像 發(fā)表于 07-23 11:29 ?4255次閱讀
    市面上編程<b class='flag-5'>語言</b>幾百種,是不是<b class='flag-5'>C</b><b class='flag-5'>語言</b>就不行了<b class='flag-5'>呢</b>?

    C語言到底是不是真的過時了嗎

    現(xiàn)在說到編程,大家提得更多的似乎永遠(yuǎn)是前端、后端、小程序、Android App、iOS App,但奇怪的是,在編程語言排行榜上, C語言卻永遠(yuǎn)是前一、前二,那C
    的頭像 發(fā)表于 02-05 11:02 ?3342次閱讀

    為什么C語言不會過時

    先上一個表,這個就是著名的TIOBE語言排行榜。目前它是一個最權(quán)威的一個語言流行度的排行榜,從這個排行榜上看,你會得到一個最直觀的結(jié)論。Java和C都在下降,而下降的部分被第三名以后的語言
    的頭像 發(fā)表于 06-05 16:12 ?2118次閱讀
    為什么<b class='flag-5'>C</b><b class='flag-5'>語言</b><b class='flag-5'>不會</b><b class='flag-5'>過時</b>?

    單片機C語言C語言為什么有差異?

    許多小伙伴在學(xué)完C語言后想入門單片機,但學(xué)著學(xué)著發(fā)現(xiàn)明明都是C語言,為什么單片機C語言和我當(dāng)初學(xué)
    發(fā)表于 09-01 16:39 ?3815次閱讀

    嵌入式開發(fā)為什么不選擇匯編、Java而是C語言?

    ID:技術(shù)讓夢想更偉大作者:李肖遙對于現(xiàn)在我們從事嵌入式開發(fā)的人員來說,C語言好像是必備的技能,也是最常見的開發(fā)語言.但是我們有沒有想過為什么嵌入式開發(fā)要使用C
    發(fā)表于 11-02 19:21 ?45次下載
    嵌入式開發(fā)為什么不選擇匯編、Java而是<b class='flag-5'>C</b><b class='flag-5'>語言</b><b class='flag-5'>呢</b>?

    [ 愛找茬 ]都是C語言,單片機C語言和普通的C語言究竟有什么差異

    許多小伙伴在學(xué)完C語言后想入門單片機,但學(xué)著學(xué)著發(fā)現(xiàn)明明都是C語言,為什么單片機C語言和我當(dāng)初學(xué)
    發(fā)表于 11-20 19:36 ?31次下載
    [ 愛找茬 ]都是<b class='flag-5'>C</b><b class='flag-5'>語言</b>,單片機<b class='flag-5'>C</b><b class='flag-5'>語言</b>和普通的<b class='flag-5'>C</b><b class='flag-5'>語言</b>究竟有什么差異<b class='flag-5'>呢</b>?

    短期精通C語言

    C語言的學(xué)習(xí)上少走彎路,其實這何嘗不是一種花時間最短且高產(chǎn)出的精通C語言的方法?這里不會教你
    發(fā)表于 01-13 13:49 ?7次下載
    短期精通<b class='flag-5'>C</b><b class='flag-5'>語言</b>

    C語言C++的區(qū)別看法

    編寫了自己的業(yè)務(wù)愛好項目。那么,為什么我沒有拋棄 C 而選擇其他語言?我對于 C++的看法又是如何的? 1 為什么說
    的頭像 發(fā)表于 07-06 14:29 ?1065次閱讀

    為什么說指針是C語言的靈魂

    指針是C語言的靈魂,這句話并不夸張。
    發(fā)表于 09-05 17:03 ?728次閱讀
    為什么說指針是<b class='flag-5'>C</b><b class='flag-5'>語言</b>的靈魂<b class='flag-5'>呢</b>?
    主站蜘蛛池模板: WWW国产亚洲精品久久久日本 | 美国一级大黄一片免费的网站 | 中文字幕乱码在线人视频 | 最新国产麻豆精品 | 夫妻性姿势真人做视频 | gogo亚洲肉体艺术照片9090 | 国产欧美在线亚洲一区刘亦菲 | 久久99热这里只有精品66 | 超碰视频在线观看 | 国产无遮挡无码视频在线观看不卡 | 国产精品婷婷久青青原 | 性做久久久久免费观看 | 亚洲国产成人精品青青草原100 | 香蕉AV福利精品导航 | 久色乳综合思思在线视频 | 久久香蕉国产线看观看精品 | 双腿被绑成M型调教PLAY照片 | 特大黑人娇小亚洲女mp4 | 国产36d在线观看 | 国产99久久久欧美黑人刘玥 | 亚洲AV國產国产久青草 | 早乙女由依在线观看 | 中文字幕按摩 | 欧美特黄99久久毛片免费 | 国产一级做a爰片久久毛片男 | 激情内射亚州一区二区三区爱妻 | 色偷偷网站 | 精品香蕉99久久久久网站 | 麻豆成人久久精品二区三区网站 | 日本视频中文字幕一区二区 | 欧美午夜特黄AAAAAA片 | 亚洲2017久无码 | 久久久久伊人 | 亚洲中文字幕国产综合 | 亚洲AV久久无码精品九号软件 | 丰满少妇发泄14p | 日韩免费一区二区三区在线 | 久久99精品国产自在自线 | 亚洲福利网站 | 一本一本之道高清在线观看 | 亚洲香蕉网久久综合影院 |