chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

C語(yǔ)言究竟會(huì)不會(huì)過(guò)時(shí)?

wFVr_Hardware_1 ? 來(lái)源:未知 ? 作者:胡薇 ? 2018-10-17 14:09 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

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

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

因?yàn)樗麄冇猩钌畹膿?dān)憂,萬(wàn)一C語(yǔ)言就像Fortran,perl語(yǔ)言那樣過(guò)時(shí)了怎么辦?

先上一個(gè)表,這個(gè)就是著名的TIOBE語(yǔ)言排行榜。

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

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

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

每次C語(yǔ)言的排名上升,都會(huì)讓做硬件的朋友覺得是硬件的春天來(lái)了。。。

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

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

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

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

這時(shí),會(huì)有朋友提出不同的意見了:你這么說(shuō)C語(yǔ)言,讓匯編語(yǔ)言情何以堪?

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

匯編語(yǔ)言,你不會(huì)編啊!

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

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

人在開車的時(shí)候,每秒要收集60個(gè)不同的物體,然后根據(jù)這60個(gè)物體的不同組合和反映來(lái)做20個(gè)最重要的決定。然后從這20多個(gè)決定中選一個(gè)執(zhí)行。所以就算用上最快的硬件,自動(dòng)駕駛現(xiàn)在還不敢說(shuō)能像人那樣開車。就算是自動(dòng)駕駛成功了,下一步還要自動(dòng)飛行呢?因?yàn)槲覀兝显缇皖A(yù)言了:你咋不上天呢!

所以說(shuō):計(jì)算速度永遠(yuǎn)是不夠的!因?yàn)樾碌膽?yīng)用會(huì)越來(lái)越復(fù)雜,越來(lái)也實(shí)時(shí)。對(duì)了!我還忘了一個(gè)更重要的限制:計(jì)算的能耗!NASA飛行器上的CPU最多就是32位的,說(shuō)出來(lái)你可能不信,國(guó)際空間站上沒有一個(gè)CPU是64位的,我猜一個(gè)最主要的原因是航天員不愛看硬盤小電影吧。

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

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

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

再后來(lái)這個(gè)技術(shù)也過(guò)時(shí)了。因?yàn)槲④浀娜苏J(rèn)識(shí)到,帶有窗口的應(yīng)用程序說(shuō)到底不是C語(yǔ)言的本職工作,再這么一層一層包下去就有露餡的危險(xiǎn),于是他們發(fā)明了一個(gè)全新的語(yǔ)言C#來(lái)負(fù)責(zé)這個(gè)任務(wù)。

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

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

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

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

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

全世界只需要五臺(tái)電腦 -IBM創(chuàng)始人

640K內(nèi)存足夠了 -微軟創(chuàng)始人

沒必要在家里用電腦-DEC創(chuàng)始人

如果再有人對(duì)你說(shuō)C語(yǔ)言已經(jīng)過(guò)時(shí)了,最好自己思考一下,能求真最好,如果不能,至少要做到存疑。

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

    關(guān)注

    183

    文章

    7642

    瀏覽量

    144525
  • 匯編語(yǔ)言
    +關(guān)注

    關(guān)注

    14

    文章

    413

    瀏覽量

    38697

原文標(biāo)題:為什么C語(yǔ)言不會(huì)過(guò)時(shí)?

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    C語(yǔ)言和單片機(jī)C語(yǔ)言有什么差異

    單片機(jī)c語(yǔ)言相對(duì)于普通C語(yǔ)言增加了一些基本的指令,還有變量的賦值是16進(jìn)制,當(dāng)然單片機(jī)c語(yǔ)言只牽
    發(fā)表于 11-14 07:55

    C語(yǔ)言的printf基本用法介紹

    也是代碼的一部分,但是它并不會(huì)給程序帶來(lái)任何影響,編譯器在編譯階段會(huì)忽略注釋的內(nèi)容,或者說(shuō)刪除注釋的內(nèi)容。我在《C語(yǔ)言標(biāo)識(shí)符、關(guān)鍵字和注釋》一節(jié)中做了詳細(xì)講解。 3) money 的輸出值并不是
    發(fā)表于 11-12 07:04

    浪涌多次作用后,TVS參數(shù)會(huì)不會(huì)漂移?

    常常會(huì)問:如果系統(tǒng)多次遭受浪涌沖擊,TVS的參數(shù)會(huì)不會(huì)發(fā)生漂移?它還能保持原有的防護(hù)性能嗎?一、TVS的工作機(jī)理與應(yīng)力積累TVS在浪涌事件中承受的是極高的瞬態(tài)電流和功率
    的頭像 發(fā)表于 08-21 10:01 ?458次閱讀
    浪涌多次作用后,TVS參數(shù)<b class='flag-5'>會(huì)不會(huì)</b>漂移?

    三防漆與散熱的關(guān)系:涂層會(huì)不會(huì)影響設(shè)備散熱?

    電子設(shè)備的散熱與防護(hù)同樣重要,前者保證芯片、元件在工作溫度內(nèi)穩(wěn)定運(yùn)行,后者避免水汽、灰塵破壞電路。很多人擔(dān)心:PCB板涂覆三防漆后,涂層會(huì)不會(huì)像“保溫層”一樣阻礙散熱?其實(shí)兩者的平衡關(guān)鍵在“涂層特性
    的頭像 發(fā)表于 07-28 10:17 ?606次閱讀
    三防漆與散熱的關(guān)系:涂層<b class='flag-5'>會(huì)不會(huì)</b>影響設(shè)備散熱?

    深入理解C語(yǔ)言C語(yǔ)言循環(huán)控制

    C語(yǔ)言編程中,循環(huán)結(jié)構(gòu)是至關(guān)重要的,它可以讓程序重復(fù)執(zhí)行特定的代碼塊,從而提高編程效率。然而,為了避免程序進(jìn)入無(wú)限循環(huán),C語(yǔ)言提供了多種循環(huán)控制語(yǔ)句,如break、continue和
    的頭像 發(fā)表于 04-29 18:49 ?1722次閱讀
    深入理解<b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言</b>:<b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言</b>循環(huán)控制

    如果主節(jié)點(diǎn)使用AD2433,從節(jié)點(diǎn)使用AD2428,會(huì)不會(huì)有什么風(fēng)險(xiǎn)點(diǎn)?

    如果主節(jié)點(diǎn)使用AD2433,從節(jié)點(diǎn)使用AD2428,會(huì)不會(huì)有什么風(fēng)險(xiǎn)點(diǎn)?晚上找不到AD2433的數(shù)據(jù)手冊(cè),感謝各位把遇到的問題提前預(yù)警一下。 萬(wàn)分感謝!
    發(fā)表于 04-15 07:09

    C語(yǔ)言的歷史及程序介紹

    電子發(fā)燒友網(wǎng)站提供《C語(yǔ)言的歷史及程序介紹.pdf》資料免費(fèi)下載
    發(fā)表于 04-09 16:10 ?0次下載

    使用DLPC4422+DLP650NE+三色LED,原理設(shè)計(jì)DLPC4422的LMPSTAT這個(gè)管腳懸空未接,會(huì)不會(huì)有什么影響?

    設(shè)計(jì)投影儀,使用DLPC4422+DLP650NE+三色LED,原理設(shè)計(jì)DLPC4422的LMPSTAT這個(gè)管腳懸空未接,會(huì)不會(huì)有什么影響
    發(fā)表于 02-26 06:57

    如果只用到DLPC3433的mipi輸入,將并口進(jìn)行接地處理(如下圖)會(huì)不會(huì)對(duì)mipi-dsi的使能有影響呢?

    問下我如果只用到DLPC3433的mipi輸入,將并口進(jìn)行接地處理(如下圖)會(huì)不會(huì)對(duì)mipi-dsi的使能有影響呢?
    發(fā)表于 02-26 06:54

    ads1253e是24位AD,實(shí)際使用中使用24位采樣會(huì)不會(huì)誤差很大?

    你好,我主要有以下兩個(gè)問題: 1)ADS1253E共4路輸入,我只用一路,比如我用CH1,我把CH1+接入信號(hào),CH1-應(yīng)該直接接地還是串聯(lián)電阻接地還是其他方法? 2)ads1253e是24位AD,實(shí)際使用中使用24位采樣會(huì)不會(huì)誤差很大? 謝謝!
    發(fā)表于 02-14 07:12

    請(qǐng)問DAC8871不小心接錯(cuò)線,而且沒共地,導(dǎo)致在VOUT端加了18V的電壓,會(huì)不會(huì)燒壞芯片?

    請(qǐng)問DAC8871芯片由于不小心接錯(cuò)線,而且沒VCC,VSS沒有和DGND共地,導(dǎo)致我在VOUT端加了18V的電壓,會(huì)不會(huì)燒壞芯片
    發(fā)表于 01-17 08:49

    ADS1274接了3.3V會(huì)不會(huì)燒毀芯片?

    由于原先的板子是1278的板子PWDN的8個(gè)通道全部接了3.3V,現(xiàn)在改成1274由于板子沒換,PWDN的引腳也是接了3.3V。我看芯片手冊(cè)上寫著PWDN[8..5]必須0V,我想問問如果我接了3.3V會(huì)不會(huì)燒毀芯片?這樣還能正常工作嗎
    發(fā)表于 01-17 07:45

    ADS1271使用不當(dāng)會(huì)不會(huì)出現(xiàn)采樣率的主時(shí)鐘不是這個(gè)對(duì)應(yīng)關(guān)系的情況?

    ADS1271在MODE浮空的情況下采樣率Wie主時(shí)鐘的512分之一,即fs=fclk/512,如果使用不當(dāng),會(huì)不會(huì)出現(xiàn)采樣率的主時(shí)鐘不是這個(gè)對(duì)應(yīng)關(guān)系的情況,例如當(dāng)fclk=1024kHz時(shí),理論上fs=2K,但實(shí)際上fs=1.2K或者其他,什么情況下會(huì)出現(xiàn)這種問題?
    發(fā)表于 12-20 08:24

    74lv165時(shí)鐘clk和ser信號(hào)的在上升沿是同時(shí)觸發(fā),請(qǐng)問會(huì)不會(huì)造成誤采樣?

    spec要求時(shí)鐘clk和ser的信號(hào)建立時(shí)間在3.3v供電是需要大于5ns,但是由于硬件設(shè)計(jì)原因,導(dǎo)致時(shí)鐘clk和ser信號(hào)的在上升沿是同時(shí)觸發(fā),請(qǐng)問會(huì)不會(huì)造成誤采樣? 如果造成誤采樣的話,是不是只能通過(guò)延時(shí)clk的方法來(lái)確保采樣ser正確?
    發(fā)表于 12-12 08:35

    AMC7836的各個(gè)Channel之間是否獨(dú)立?會(huì)不會(huì)互相影響?

    關(guān)于AMC7836有如下問題需要請(qǐng)教: 1. AMC7836的各個(gè)Channel之間是否獨(dú)立?會(huì)不會(huì)互相影響? 2. AMC7836將採(cǎi)集到的電壓狀況告知MCU是通過(guò)何種方式: 將採(cǎi)集到的電壓
    發(fā)表于 12-05 07:26