亚洲精品无码乱码成人|最近中文字幕免费大全|日韩欧美卡一卡二卡新区|熟妇性饥渴一区二区三区|久久久久无码精品国产AV|欧美日韩国产va在线观看|久久精品一本到99热动态图|99国产精品欧美一区二区三区

您現(xiàn)在的位置是: 財(cái)經(jīng) > > 正文

全球速讀:嵌入式C開(kāi)發(fā)VS嵌入式CPP開(kāi)發(fā)!

時(shí)間:2023-06-17 03:25:25 來(lái)源:面包芯語(yǔ) 發(fā)布者:DN032

這是知乎嵌入式領(lǐng)域的一個(gè)熱門(mén)話題,原文鏈接:


(資料圖)

幾個(gè)高贊回答:

答主:聽(tīng)心跳的聲音

單片機(jī)的主流編譯語(yǔ)言可預(yù)見(jiàn)的長(zhǎng)期仍然是C和少量匯編的結(jié)合體,而嵌入式Linux領(lǐng)域的未來(lái)在我看來(lái)更傾向于多語(yǔ)言范式的混合應(yīng)用編程,內(nèi)核模塊使用C,應(yīng)用層邏輯使用C++, Python,nodejs的混合編程,而界面的話使用java和QT/C++,下面說(shuō)原因。

在單片機(jī)領(lǐng)域C++不太流行既有歷史原因,也有工業(yè)界的需求,對(duì)于單片機(jī)是從51發(fā)展到現(xiàn)在,主流的flash容量仍然在64KB~256KB左右。

目前的容量限制注定了C++中的模板,泛型編程和STL等很難被運(yùn)用到開(kāi)發(fā)中,但如果不使用這些,只使用支持class的C++,在C語(yǔ)言是有結(jié)構(gòu)體+函數(shù)指針可以替代的情況下,從C換成C++并沒(méi)有迫切的需求,而python和js的推廣困難,也有著類似的理由,此外在加上調(diào)試?yán)щy。

不過(guò)對(duì)于rust,這個(gè)理由是不存在的,但是因?yàn)闅v史的慣性,目前行業(yè)內(nèi)無(wú)論大小公司,都大量的遺留和正在做的都是C語(yǔ)言項(xiàng)目(包含原廠的方案),替換成rust就是商業(yè)成本問(wèn)題,而不是語(yǔ)言問(wèn)題(在我看來(lái)rust語(yǔ)言層面優(yōu)于C太多),所以rust熱愛(ài)者們應(yīng)該是多去為各主流廠商平臺(tái)提供開(kāi)源項(xiàng)目(具體項(xiàng)目,不是移植跑個(gè)hello world就完事了,能跑和能用在產(chǎn)品中是兩個(gè)概念),而不是呼吁語(yǔ)法層面多優(yōu)秀。

另外單片機(jī)優(yōu)勢(shì)不僅僅是實(shí)時(shí)可控,而是價(jià)格便宜,對(duì)于出貨量十萬(wàn)甚至上百萬(wàn)的設(shè)備,flash容量也是可觀的成本,所以工業(yè)界更希望是用最小的成本做最多的事,從這方面來(lái)說(shuō),C是比C++,python, js有明顯優(yōu)勢(shì)的。

在嵌入式Linux領(lǐng)域, C++絕對(duì)是應(yīng)用層主力之一,QT/C++雖然目前因?yàn)樾酒阅艿奶嵘?,逐漸被Android/Java所替代,但仍然在醫(yī)療,工控,車載導(dǎo)航等領(lǐng)域占據(jù)主流地位,而且這也是目前C++的重要應(yīng)用領(lǐng)域之一,說(shuō)嵌入式比較難,而C++也十分困難,所以嵌入式人員學(xué)習(xí)C++比較少是十分片面客觀的印象。

另外C++難的地方是移動(dòng)語(yǔ)義,模板偏特化,lambda, 模板元編程等知識(shí),C++各種語(yǔ)法組合成的奇淫巧技如果不花大量時(shí)間去鉆研,看起來(lái)是猶如天書(shū)(很少有人例外),但對(duì)于工業(yè)界,特別是嵌入式類應(yīng)用來(lái)說(shuō),只使用STL封裝的vector,map以及算法等方便開(kāi)發(fā),封裝些模板函數(shù)或者類幫助復(fù)用,很多時(shí)候C++11的新特性都用不全,說(shuō)困難就有點(diǎn)夸大其詞了。

工業(yè)界的難點(diǎn)永遠(yuǎn)是如何把產(chǎn)品的需求轉(zhuǎn)換成具體的任務(wù)分解(滿足性能,成本和功能的平衡,同時(shí)能夠長(zhǎng)期穩(wěn)定性),而不是使用何種語(yǔ)言來(lái)實(shí)現(xiàn)任務(wù),當(dāng)需求導(dǎo)向任意語(yǔ)言,無(wú)論是python,js,C++還是java,面向工資編程,只要有需求,總會(huì)有人會(huì)踏入這個(gè)方向,難度不是問(wèn)題,需求和薪水才是問(wèn)題。

答主:pansz

現(xiàn)實(shí)情況是:C++太難了,嵌入式人才本來(lái)就少,你還要能用C++且不出幺蛾子,那就更少。

所以用C確實(shí)是主流。因?yàn)镃程序員要求還是低些。

記得我當(dāng)初剛搞嵌入式的時(shí)候,系統(tǒng)連MMU都沒(méi)有,整個(gè)系統(tǒng)所有代碼全都在一個(gè)內(nèi)存空間,還得自己管理內(nèi)存池避免內(nèi)存碎片。隨便一個(gè)內(nèi)存訪問(wèn)錯(cuò)誤可以影響到完全不相干人的模塊的代碼。這種系統(tǒng)你敢用C++?

結(jié)論:如果你是自己一個(gè)人開(kāi)發(fā)代碼,并且對(duì)自己的C++水平有信心,那么用C++當(dāng)然沒(méi)有問(wèn)題。但是考慮到整體程序員群體的C++水平以及C語(yǔ)言水平,用C做嵌入式項(xiàng)目會(huì)更現(xiàn)實(shí)一些。

答主:candy

作為一個(gè)嵌入式十多年老手,可以說(shuō)CPP太復(fù)雜,語(yǔ)言特性太多,實(shí)現(xiàn)一個(gè)功能能能用幾十個(gè)以上的方法,太多稀奇古怪的方法去實(shí)現(xiàn)一個(gè)功能,CPP特性復(fù)雜得沒(méi)有5年以上經(jīng)驗(yàn)別想用好。但一個(gè)項(xiàng)目組幾個(gè)人CPP能力不一致,用一些稀奇古怪的特性去實(shí)現(xiàn)一些功能,多個(gè)人之間就沒(méi)法維護(hù)了。

在調(diào)試的時(shí)候,面向?qū)ο蟮恼{(diào)試最好上圖形界面的工具才好調(diào)試,而嵌入式大多數(shù)時(shí)候是沒(méi)有這種調(diào)試工具的,CPP寫(xiě)業(yè)務(wù),后期bug調(diào)試也會(huì)搞死你,CPP嵌入式調(diào)試比C復(fù)雜一個(gè)數(shù)量級(jí)以上。

第三點(diǎn),C語(yǔ)言特性雖然少,但完全夠用,實(shí)現(xiàn)一個(gè)功能方法不會(huì)很多,1年左右入門(mén),3年老手,而CPP 3年連CPP特性還沒(méi)搞清楚。C可以簡(jiǎn)單用,也可以復(fù)雜用,C with class小cass,結(jié)構(gòu)體加指針輕松實(shí)現(xiàn),看看linux kernel, 看看內(nèi)核頭文件,結(jié)構(gòu)體,宏各種精妙用法,你就會(huì)發(fā)現(xiàn)CPP完全多余了,CPP死于復(fù)雜。有經(jīng)驗(yàn)的大公司團(tuán)隊(duì)使用CPP都是使用CPP的一個(gè)子集,只使用一部分特性。

CPP設(shè)計(jì)特性太多不是優(yōu)點(diǎn),而是缺點(diǎn),別看什么特性幾乎都支持,其實(shí)太多選擇其實(shí)就是沒(méi)有選擇。實(shí)現(xiàn)一個(gè)功能有且僅有一種方法才是一個(gè)好語(yǔ)言,例如python,go也不錯(cuò)。

第四點(diǎn),產(chǎn)品應(yīng)用層其實(shí)重要的是業(yè)務(wù),各種復(fù)雜的業(yè)務(wù)邏輯,語(yǔ)言特性太多反而會(huì)混亂業(yè)務(wù)邏輯。C完全夠用,各種設(shè)計(jì)模式,C也可以實(shí)現(xiàn)。

能吸收內(nèi)核一些優(yōu)秀特性,例如內(nèi)核雙向鏈表,一些結(jié)構(gòu)體,宏,日志,內(nèi)存管理,線程管理,線程間進(jìn)程間通訊,各種鎖基本都需要C自己封裝套來(lái)用,這些東西學(xué)會(huì)了才能說(shuō)用好了C。即使對(duì)于新手來(lái)說(shuō),不會(huì)這些高級(jí)C用法,有一個(gè)高級(jí)C也可以帶領(lǐng)一群低級(jí)剛?cè)腴T(mén)的寫(xiě)一寫(xiě)業(yè)務(wù)代碼。而一個(gè)高級(jí)CPP沒(méi)法帶領(lǐng)一群剛?cè)腴T(mén)的CPP初學(xué)者完成同樣的項(xiàng)目。

第五點(diǎn), 資源限制,效率限制,同樣的業(yè)務(wù)功能,C的內(nèi)存占用,速度高于CPP,這些東西CPP里面基本都有現(xiàn)成的,可是了體積大,依賴多,對(duì)于嵌入式環(huán)境來(lái)說(shuō)太過(guò)于笨重了。就是說(shuō)同樣的產(chǎn)品,使用C可以使用更低端的主控芯片,更小的內(nèi)存,產(chǎn)品bom成本比使用cpp低,產(chǎn)品競(jìng)爭(zhēng)優(yōu)勢(shì)遠(yuǎn)高于使用cpp的。

本文來(lái)源網(wǎng)絡(luò),免費(fèi)傳達(dá)知識(shí),版權(quán)歸原作者所有。如涉及作品版權(quán)問(wèn)題,請(qǐng)聯(lián)系我進(jìn)行刪除。

注意

猜你喜歡:

談?wù)勄度胧杰浖募嫒菪裕?/p>

我是韋東山老師的忠實(shí)粉絲!

標(biāo)簽:

搶先讀

精彩放送

關(guān)于我們| 聯(lián)系我們| 投稿合作| 法律聲明| 廣告投放

版權(quán)所有© 2011-2023  產(chǎn)業(yè)研究網(wǎng)  m.www-332159.com

所載文章、數(shù)據(jù)僅供參考.本站不作任何非法律允許范圍內(nèi)服務(wù)!

聯(lián)系我們:39 60 29 14 2 @qq.com

皖I(lǐng)CP備2022009963號(hào)-13