為什么C和C 難以被取代?
時間:2021-10-08 16:44:19
手機看文章
掃描二維碼
隨時隨地手機看文章
[導讀]大家好,我是張巧龍。大家應該發(fā)現(xiàn)了,近些年編程語言發(fā)展很快,各種新編程語言非常多,有些熱門編程語言如Pythonjsgoswift等迅速流行了起來,使用者越來越多。但是在嵌入式開發(fā)領域,C和C卻是YYDS,幾十年一直排名前列,甚至是唯一的選擇。這是為什么呢?難道沒有其他語言能取代...
大家好,我是張巧龍。
大家應該發(fā)現(xiàn)了,近些年編程語言發(fā)展很快,各種新編程語言非常多,有些熱門編程語言如Python js go swift等迅速流行了起來,使用者越來越多。
但是在嵌入式開發(fā)領域,C和C 卻是YYDS,幾十年一直排名前列,甚至是唯一的選擇。
這是為什么呢?難道沒有其他語言能取代C/C 嗎?
我個人認為確實很難有。即使技術上有了(如rust)也很難真的流行起來,在市場使用上打敗C/C 。原因有這么幾個。
原因1:人們總是傾向于使用自己熟悉的技術,總是在不得不改變時才會去改變。
C和C 經(jīng)過幾十年的發(fā)展,已經(jīng)培養(yǎng)了大量的成熟開發(fā)者,孵化了大量優(yōu)質(zhì)項目和基礎軟件,這些都是全人類全行業(yè)的優(yōu)質(zhì)基礎設施資產(chǎn),不可能丟棄,也沒必要重寫,繼續(xù)使用是非常合理的選擇。
你想讓這些成熟開發(fā)者放棄C和C 去用某種新語言,除非有非常明確且充分的理由,有大的好處,否則沒人會理你。也許你的新語言會好一些,但是沒有帶來本質(zhì)優(yōu)勢的95分到99分的好,其實很難說服成熟的傳統(tǒng)開發(fā)者。
畢竟,人都是念舊的。
原因2:C和C 從技術上已經(jīng)很難被優(yōu)化了。
因為這兩個語言已經(jīng)是直接操作內(nèi)存,并且都支持很好的指針操作,內(nèi)存對象的建立和維護。熟悉匯編語言和CPU指令集的同學們就會清楚,這些特性和硬件層已經(jīng)深度接軌,效率最高了。
所以不管是java,還是js,python,他們本質(zhì)上都是在更上層和人(程序員)接軌的部分在做文章,提供更多編程者覺得更好用的特性(譬如垃圾回收機制),然后在內(nèi)部又使用C和C 式的內(nèi)存對象建立和管理來實現(xiàn)這些特性。
所以你對這些有所了解后就會發(fā)現(xiàn),在和硬件接軌的嵌入式開發(fā)領域,技術上確實很難去優(yōu)化C和C 了。除非CPU自己發(fā)生很大的變化,譬如打破了馮諾依曼結(jié)構(gòu),否則C和C 穩(wěn)如泰山。
那在性能上沒文章做,在靠近程序員的易用性和語法安全上是否可以優(yōu)化呢?當然可以,實際上java和go,rust等語言就是這樣的思路。
但是要么就是要犧牲效率導致嵌入式領域不想用,要么就是必要性不大發(fā)展緩慢推動艱難。rust目前看來最有希望,但是仍然很幼小,繼續(xù)觀望吧!
最后,C和C 本身都是開放使用的。既沒有限制任何人使用,又不用付費,沒有隱患,為什么不用他呢?
綜合以上,大家就會明白為什么這倆兄弟這么強,并將一直強下去!
大家如何看待呢?歡迎在留言區(qū)討論,截止到10月8號12點前,點贊前三位同學將獲取三個紅包(88.88、66.66、33.33)
大家應該發(fā)現(xiàn)了,近些年編程語言發(fā)展很快,各種新編程語言非常多,有些熱門編程語言如Python js go swift等迅速流行了起來,使用者越來越多。
但是在嵌入式開發(fā)領域,C和C 卻是YYDS,幾十年一直排名前列,甚至是唯一的選擇。
這是為什么呢?難道沒有其他語言能取代C/C 嗎?
我個人認為確實很難有。即使技術上有了(如rust)也很難真的流行起來,在市場使用上打敗C/C 。原因有這么幾個。
原因1:人們總是傾向于使用自己熟悉的技術,總是在不得不改變時才會去改變。
C和C 經(jīng)過幾十年的發(fā)展,已經(jīng)培養(yǎng)了大量的成熟開發(fā)者,孵化了大量優(yōu)質(zhì)項目和基礎軟件,這些都是全人類全行業(yè)的優(yōu)質(zhì)基礎設施資產(chǎn),不可能丟棄,也沒必要重寫,繼續(xù)使用是非常合理的選擇。
你想讓這些成熟開發(fā)者放棄C和C 去用某種新語言,除非有非常明確且充分的理由,有大的好處,否則沒人會理你。也許你的新語言會好一些,但是沒有帶來本質(zhì)優(yōu)勢的95分到99分的好,其實很難說服成熟的傳統(tǒng)開發(fā)者。
畢竟,人都是念舊的。
原因2:C和C 從技術上已經(jīng)很難被優(yōu)化了。
因為這兩個語言已經(jīng)是直接操作內(nèi)存,并且都支持很好的指針操作,內(nèi)存對象的建立和維護。熟悉匯編語言和CPU指令集的同學們就會清楚,這些特性和硬件層已經(jīng)深度接軌,效率最高了。
所以不管是java,還是js,python,他們本質(zhì)上都是在更上層和人(程序員)接軌的部分在做文章,提供更多編程者覺得更好用的特性(譬如垃圾回收機制),然后在內(nèi)部又使用C和C 式的內(nèi)存對象建立和管理來實現(xiàn)這些特性。
所以你對這些有所了解后就會發(fā)現(xiàn),在和硬件接軌的嵌入式開發(fā)領域,技術上確實很難去優(yōu)化C和C 了。除非CPU自己發(fā)生很大的變化,譬如打破了馮諾依曼結(jié)構(gòu),否則C和C 穩(wěn)如泰山。
那在性能上沒文章做,在靠近程序員的易用性和語法安全上是否可以優(yōu)化呢?當然可以,實際上java和go,rust等語言就是這樣的思路。
但是要么就是要犧牲效率導致嵌入式領域不想用,要么就是必要性不大發(fā)展緩慢推動艱難。rust目前看來最有希望,但是仍然很幼小,繼續(xù)觀望吧!
最后,C和C 本身都是開放使用的。既沒有限制任何人使用,又不用付費,沒有隱患,為什么不用他呢?
綜合以上,大家就會明白為什么這倆兄弟這么強,并將一直強下去!
大家如何看待呢?歡迎在留言區(qū)討論,截止到10月8號12點前,點贊前三位同學將獲取三個紅包(88.88、66.66、33.33)