• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            huaxiazhihuo

             

            回顧C(jī)++

            本人對(duì)于c++的認(rèn)識(shí),多年下來,經(jīng)歷了以下幾個(gè)階段,

            1、 c++很好很強(qiáng)大,盲目追求運(yùn)行性能,簡直巴普洛夫條件反射,貢獻(xiàn)了一大坨垃圾代碼;

            2、 c++的面向?qū)ο髮?duì)持很垃圾,什么鬼,代碼很容易就耦合,于是迷上對(duì)象+消息發(fā)送的面向?qū)ο螅?/span>

            3、 c++太復(fù)雜了,template太抽象,天外飛仙,搞不懂,二進(jìn)制復(fù)用又差。整個(gè)c++就是垃圾,簡直程序設(shè)計(jì)語言里面的敗類,C語言多好啊,小巧精致簡單清晰;

            4、 使用其他語言做開發(fā),javaC#F#elispschemepythonhaskelljavascriptphp等等一大坨語言,感概每一種語言都比垃圾C++不要好太多,發(fā)誓不再用c++寫哪怕一行的代碼;

            5、 某一天,突然有點(diǎn)理解了這種語言,一切變得清晰了,原來c++也相當(dāng)不錯(cuò),也可以做一些事情,看開之后,感覺開發(fā)效率也跟上來了,做同樣的事情,用c++實(shí)現(xiàn)不會(huì)比C#python等慢。

            相比于其他語言,c++的獨(dú)特優(yōu)勢(shì)在于

            預(yù)編譯期的偽圖靈完備,這一點(diǎn),好多語言還是有的,并且更超級(jí)好,比如rustscheme

            編譯期間的C++是功能完備的解釋器,其輸出結(jié)果是正常運(yùn)行的c++代碼,結(jié)合宏,可以制造很多其他語言必須在語法層面上支持的語法糖。這個(gè)解釋器的奇妙之處在于它運(yùn)行于編譯期,一旦錯(cuò)誤的模板代碼要進(jìn)入運(yùn)行期,就會(huì)出現(xiàn)編譯錯(cuò)誤,而不需要進(jìn)入運(yùn)行時(shí)的代碼,即便天大錯(cuò)誤,也都不要緊,而一旦這段代碼要進(jìn)入運(yùn)行時(shí),那么模板錯(cuò)誤就逃不過編譯期解釋器的法眼。

            生成各種內(nèi)存布局的便利語法糖和自由的內(nèi)存操控;不同類型的對(duì)象,只要其內(nèi)存布局一致,通過強(qiáng)制轉(zhuǎn)換,就可按同一類型來處理,這一點(diǎn)作死能力,絕不被有gc的語言支持。內(nèi)存的無節(jié)操玩弄,結(jié)合template,分分鐘就能仿真出來其他必須語言層面上提供的數(shù)據(jù)結(jié)構(gòu),類型安全、運(yùn)行性能、易用性,一點(diǎn)都不遜色,好比string,委托,元組,列表,可空類型;

            C++的專有特性,raii、多繼承和全局變量。特別是全局變量,結(jié)合它的構(gòu)造函數(shù)特點(diǎn)和類型推導(dǎo),所能玩出來的豐富新花樣,其他語言很難做到。全局變量是連接運(yùn)行期和編譯期的橋梁。如果沒有全局變量,本座應(yīng)該不會(huì)再次對(duì)c++產(chǎn)生熱情。奇怪的是,至今為止,c++的基礎(chǔ)庫都不怎么挖掘全局變量的潛能。當(dāng)然,對(duì)全局變量的使用,肯定是把它當(dāng)做常量來用,全局變量有唯一的內(nèi)存地址,就起到原子的作用,但它又可打包了豐富的靜態(tài)類型信息。

            以上的獨(dú)特,造就了c++層出不窮的新意,而卓越的運(yùn)行性能,只是其微不足道的優(yōu)點(diǎn)。雖然說,語言不重要,思想才重要,軟件架構(gòu)才重要,但是c++所能承載的思想,以及其到達(dá)的抽象高度,的確就真的大大降低框架的復(fù)雜性,誠然,c++的基礎(chǔ)庫開發(fā)要面臨無窮無盡的細(xì)節(jié)糾結(jié),其實(shí),這也反映了c++編譯器掌控細(xì)節(jié)的能力,因此,我們又可以讓編譯器自動(dòng)完成很多很多細(xì)節(jié)重復(fù),從而大幅度地減輕代碼數(shù)量,還無損其運(yùn)行性能。又由于c++完備強(qiáng)大的靜態(tài)類型特性,在用動(dòng)態(tài)語言風(fēng)格的簡潔來編寫代碼的同時(shí),又無損其快速方便地代碼重構(gòu)。筆者的基礎(chǔ)庫項(xiàng)目,幾十次大規(guī)模的重構(gòu),借助單元測(cè)試,保證了重構(gòu)順利快速的完成,深感c++在重構(gòu)上的便利,這些代碼,包括不到1千行卻功能完整的xml庫(還支持對(duì)象與xml數(shù)據(jù)的直接互相轉(zhuǎn)換);不到1千行卻一點(diǎn)都不遜色于boostspirit組合子解釋器(編譯速度卻快了很多,語法上簡潔很多,更能方便地解釋各種語法);才1千多行的異步io框架;輸入輸出,文件操作,數(shù)據(jù)庫,協(xié)程等代碼都簡潔異常,所有這些代碼都支持動(dòng)態(tài)庫上的二進(jìn)制復(fù)用,讓人很驚詫于c++的光怪陸離的強(qiáng)大。

            當(dāng)然,c++的缺陷也震撼人心,

            1、 語言特性太過繁雜抽象微妙,比如template、多繼承、運(yùn)算符重載、類型轉(zhuǎn)換、兼容性考慮的很多糟糕語言特性,所以對(duì)使用者的節(jié)制力要求很高,要求他們時(shí)刻清楚自己在干什么,瑣碎上的思考太多;

            2、 缺乏統(tǒng)一的二進(jìn)制標(biāo)準(zhǔn),基礎(chǔ)庫都用源代碼的形式共享,這讓原本就龜速的編譯速度更加地令人大大感動(dòng);

            3、 缺乏高標(biāo)準(zhǔn)的基礎(chǔ)庫,stlboost更在某些技術(shù)運(yùn)用的展示上更起到很壞的影響;

            4、 缺乏某些延遲求值的機(jī)制,缺乏必要的函數(shù)式語言機(jī)制,所以c++始終就無法成為堂堂正正的現(xiàn)代化高級(jí)語言!

            就這樣吧。

            posted on 2017-07-15 20:07 華夏之火 閱讀(1844) 評(píng)論(2)  編輯 收藏 引用 所屬分類: c++技術(shù)探討

            評(píng)論

            # re: 回顧C(jī)++ 2017-07-17 10:55 天下

            ABI 不好搞,不過C++17如果module 標(biāo)準(zhǔn)確定的話,基本上也夠用了.
            但跨語言的ABI標(biāo)準(zhǔn)除了MS 的 COM,
            有幾個(gè)公司會(huì)去搞跨語言的ABI.因?yàn)镃形式的DLL已經(jīng)基本夠用了,

              回復(fù)  更多評(píng)論   

            # re: 回顧C(jī)++ 2017-07-17 11:32 華夏之火

            @天下
            C形式的dll顯然不夠用。其實(shí),只要在c的基礎(chǔ)上再做多一些工作,情況就會(huì)好很多,但是委員會(huì)向來追求大而全的陋習(xí),比如要支持虛繼承、要支持各種函數(shù)調(diào)用規(guī)定,要照顧各個(gè)編譯器的自定義等等因素,因此導(dǎo)致就連最基本的統(tǒng)一的面向?qū)ο竽P投歼t遲未曾出現(xiàn)  回復(fù)  更多評(píng)論   

            導(dǎo)航

            統(tǒng)計(jì)

            常用鏈接

            留言簿(6)

            隨筆分類

            隨筆檔案

            搜索

            積分與排名

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            久久99精品国产麻豆宅宅| 久久综合成人网| 久久人人爽人人爽人人片AV不| 国内精品久久国产| 久久电影网2021| 久久久久久无码国产精品中文字幕 | 久久国产欧美日韩精品免费| 久久受www免费人成_看片中文| 亚洲国产精品无码久久SM| 久久99热狠狠色精品一区| 亚洲乱码日产精品a级毛片久久 | 久久精品国产99久久久香蕉| 99久久这里只精品国产免费| 97久久超碰成人精品网站| 久久久久国产成人精品亚洲午夜| 久久一日本道色综合久久| 久久黄色视频| 亚洲精品高清国产一久久| 亚洲精品乱码久久久久久 | 久久久久亚洲精品日久生情| 久久亚洲AV成人出白浆无码国产 | 精品人妻伦九区久久AAA片69| 伊人久久大香线蕉精品不卡 | 久久亚洲AV成人出白浆无码国产| 精品国产热久久久福利| 久久精品国产亚洲AV大全| 无码任你躁久久久久久| 久久se精品一区二区| 亚洲愉拍99热成人精品热久久| 日日狠狠久久偷偷色综合免费| 国产精品一区二区久久精品| 久久精品无码午夜福利理论片| 国产精品99久久久精品无码| 亚洲AV伊人久久青青草原| 中文字幕无码久久人妻| 欧美久久一区二区三区| 很黄很污的网站久久mimi色| 久久最近最新中文字幕大全 | 久久免费看黄a级毛片| 久久精品国产亚洲AV不卡| 久久99精品国产麻豆宅宅|