• <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>

            longshanks

              C++博客 :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
              14 Posts :: 0 Stories :: 214 Comments :: 0 Trackbacks

            常用鏈接

            留言簿(10)

            我參與的團隊

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            re: GP技術的展望——C-- longshanks 2008-08-08 11:28
            @Alleluja
            說得好,說得好。兄臺有blog沒,咱也加一個。:)
            oop老前輩可差遠了。我也就是稍微早一些學C++時學了OOP。我心目中更完善的C++應該是有class,但沒有oop。呵呵,有點胡說了。我是指動多態(tài)。它的功能用runtime concept代替。我希望的是C with GP,包括static的和dynamic的。
            re: GP技術的展望——C-- longshanks 2008-08-07 09:49
            @AlexEric
            說對了,concept就是模板的發(fā)展方向,看C++09。
            說道人如何取舍,對于多數(shù)程序員而言,取舍的東西太多,影響他們的發(fā)揮。這也是C++發(fā)展concept的原因之一。
            re: GP技術的展望——C-- longshanks 2008-08-05 08:08
            @Computer Worker
            舍棄vtable很容易,但如果我還希望同時獲得高級抽象能力呢?
            re: GP技術的展望——C-- longshanks 2008-08-03 18:04
            @陳梓瀚(vczh):
            的確如此。只是在vtable下,即便沒有指針也無法非侵入地處理對象。但pod可以。C+gp同樣可以在模型上建立serialization架構,但副作用相比oop更小。兩害相權取其輕啊。

            @Michael Li:
            這些想法原本也就是沿著C++未來發(fā)展路線的進一步“遐想”。C++09走出了static concept這一步,并且正在以庫的方式模擬runtime concept,那么更進一步便是語言級別的runtime concept了。我只是想看看如果C++擁有語言級別runtime concept,可以獲得什么樣的結果。
            @oldrev
            這個就沒辦法了。這些接口都是需求設計驅使的,只是不同的手段實現(xiàn)而已。這方面的問題由于沒有廣泛的應用,還不太清楚,需要實踐檢驗。
            concept相比interface的直接好處在于兩點:1、不需要在接口實現(xiàn)類型產(chǎn)生前定義concept,任何時候都可以,這樣可以減少設計上的壓力。這是非侵入的好處。2、concept驅動下的模板在runtime和compiletime是相同的,也就是同一個模板可以同時用于runtime和static,而不需要另搞一套。
            間接的好處是會對語言整個模型產(chǎn)生根本性的影響,從而消除語言某些方面的復雜性和缺陷。這個我打算在下一篇blog里探討。
            to oldrev兄:
            我不太理解“只為約束函數(shù)參數(shù)而沒其他作用的 concepts”這個概念,能否給個例子。這個問題我這么想:concept以及runtime concept同oop的interface的差異我以前的blog和toplanguage討論中都談論過。本質上,interface是“用一個類型來表征一組類型”,邏輯上就不那么和諧。而concept則是用一個獨立的,專門用于描述一組類型的概念實現(xiàn)這個功能。interface的弊端,比如侵入的接口、造成類型耦合等等,在concept中不會存在。運用concept,我們可以消除這部分問題。至于其他的interface問題,可能來自于需求和設計,通常也無法全部通過這種技術手段消除。
            當然就像clear兄所說,concept可以auto(需要在定義concept指定auto),這也消除了不少麻煩。只是auto需要謹慎,只有那些含有公共語義約定的concept,比如swappable、copyable等等,以及形式(成員)非常特殊,不可能有其他語義的類型與之混淆的情況下,才可以使用,否則容易引起混亂。
            btw:如何才能把鏈接的樣式改成標準樣式?我寫的時候都是藍色帶下劃線的,但是發(fā)出來就不見了。
            to duguguiyu:
            如果沒有concept當然可以,但是必須有一種完成concept功能,也就是類型特征描述的機制,實現(xiàn)模板(泛型)的類型參數(shù)約束,以及提供優(yōu)化線索的功能。
            關于編譯器,靜態(tài)concept是未來C++09標準的一部分預計明年可以出臺。據(jù)我所知,現(xiàn)在只有一個試驗性編譯器支持concept:conceptGCC,http://www.generic-programming.org/software/ConceptGCC/
            而runtime concept,八字還沒一撇。Bjarne有一篇論文,可能在今年三月份發(fā)表,提到了runtime concept。但沒有涉及語言層面的實現(xiàn),而是庫方面的實現(xiàn)。相關這些內(nèi)容的其他文獻,可以看我前一篇文章《OOP的黃昏》后面給出的參考。
            re: 業(yè)務邏輯的強類型化 longshanks 2007-11-09 08:49
            to TeirDal:
            其實,“每個類型都是類”和“每個類都是類型”是等價的,只要語言不再區(qū)分內(nèi)置類型和用戶定義類型這兩種概念。隨著操作符重載的出現(xiàn),我們有能力使得用戶定義類型同內(nèi)置類型具有相同的特性。
            貨幣是我能找到的最簡單的案例,目的當然不會是創(chuàng)建一個貨幣系統(tǒng)。主要是為了展示C++的gp和tmp的運用。以及強類型約束對于構建穩(wěn)固、便捷的系統(tǒng)
            隱式轉換是利用=操作符實現(xiàn)轉換/賦值操作。它有一個好處就是:同一個語義,同一種形式。這種抽象的表達形式更貼近于現(xiàn)實業(yè)務。由于它在邏輯上的抽象性,那么對軟件的修改更加有利。比如:
            //成員函數(shù)
            USD u=20;
            RMB r;
            r=u->toUSD();
            //隱式轉換
            USD u=20;
            RMB r;
            r=u;
            如果r的類型變成JPN,那么只需修改r的類型即可,而無需做更多的改動。
            //成員函數(shù)
            USD u=20;
            JPN r;
            r=u->toJPN();
            //隱式轉換
            USD u=20;
            JPN r;
            r=u;
            此外,多個香爐多個鬼,顯式的轉換函數(shù)可能寫錯,會引發(fā)很多不必要的麻煩。
            實際上,使用成員函數(shù)的方案的工作量比我給出的方案來的大很多。因為如果有n個貨幣,那么每個貨幣類都必須有n-1個轉換函數(shù)。所有轉換成員函數(shù)的總數(shù)將達到n*(n-1)。這是組合爆炸,也正是我的方案所要解決的問題。
            如果你真要用顯式的轉換函數(shù),那么也應該用成員函數(shù)模板:to<>()。這樣可以利用我在這里使用的元編程技巧把轉換函數(shù)的個數(shù)變成n。
            但在運用了operator=()操作符模板后,只需要一個轉換函數(shù)即可。也就是說,這里的方案把原本n*(n-1)的代碼量變成了1。你說實現(xiàn)起來哪個更長?:)
            python的思想,我不能說他錯,但用在這里并不合適,因為python的應用領域在于高層的應用開發(fā),而這里所探討的問題則是基礎級別的軟件設計。python并不能應付這里所面臨的問題。
            這個貨幣系統(tǒng)的真正的問題是,它是靜態(tài)的,而在現(xiàn)實軟件中,貨幣必須是動態(tài)的,也就是說我在編程的時候,并不知道我要把那兩種貨幣相加或者賦值。這樣,這個類型系統(tǒng)也就失去作用了。
            re: C++之歌——噢,我親愛的++ longshanks 2007-11-07 14:05
            non member non friend這一點上,Sutter的案例有些極端。但他的思想代表了整個C++社群,或者說現(xiàn)代multiple-pariadm風格的主流。而meyes的文章則更加理論化。
            這種函數(shù)的分離帶來兩個好處:首先,就是靈活性。無論如何成員函數(shù)的靈活性無法同自由函數(shù)相比。我們無法得到一致性的論斷,自由函數(shù)絕對好,但是可以明確自由函數(shù)更靈活,更易于替換,特別是有能力在維持原有的訪問形式之下,擴種針對一個類的操作,這是成員函數(shù)無法做到的。
            另一個方面,自由函數(shù)更利于泛化,構造通用的算法或算法框架,提高整個設計的擴展性。
            使用自有函數(shù)基本上沒有什么副作用,但成員函數(shù)由于被強行綁定在類上,無法自由變換。
            re: C++模板類的三種特化[未登錄] longshanks 2007-07-16 16:11
            如果這樣分的話,還應該有第四種特化:
            template<typename T1, typename T2>
            class X {...};

            template<typename T>
            class X<T, int> {...};
            以及2、3、4的混合
            template<typename T>
            class X<T, T*> {...}
            template<typename T>
            class X<vector<T>, T&> {...};
            ...
            更極端的,這樣的特化是否該歸為第5類呢:
            template<typename T>
            class Y;
            template<typename R, typename P1, typename P2>
            class Y<R (P1, P2)> {...};//針對帶兩個參數(shù),有返回值的函數(shù)類型特化

            實際上,3僅僅是局部特化結合template-template parameter的一個應用。算不上一“種”特化。
            總的來說,還是C++標準中的分類更加清晰。

            另外,根據(jù)C++標準術語,應該是“類模板”(class template),而不是“模板類”。一般認為,“模板類”是模板實例化(特化)后的類:
            vector<int>
            re: 什么是concept longshanks 2007-05-31 14:52
            現(xiàn)在對concept有什么正式的譯法嗎?
            stl的核心,也就是平臺軟件的核心,就是“可擴展”。
            平臺軟件通常很難遍歷所有的需求,于是抽象出業(yè)務模型框架就顯得尤為重要。一旦抽象出業(yè)務框架,則可以通過插入和替換組件的方式實現(xiàn)擴展,將軟件定制的開發(fā)量減到最小。
            模板帶來的是強類型的多態(tài)(利用靜多態(tài))。它的好處就是利用強類型在編譯時攔截大量的錯誤。同時,類的出現(xiàn),使得操作成為類型的一部分。強類型化后,不僅僅數(shù)據(jù)結構的邏輯性得到檢驗,連施加在這些數(shù)據(jù)上的操作也得到約束。因此,合理地運用模板和隨之帶來的強類型多態(tài),可以使得代碼更高效,更簡潔,也更安全。
            由于業(yè)界的大多數(shù)程序員還在努力消化OOP帶來的技術革命,還無法理解gp帶來的優(yōu)勢。不同于OOP,業(yè)界也還沒有出現(xiàn)GP方面完整的理論,所以對模板及其帶來的好處還未能充分理解。
            午夜精品久久久久久| 久久精品99久久香蕉国产色戒| 国产精品久久网| 久久99精品久久久久久秒播| 66精品综合久久久久久久| 国产亚洲精午夜久久久久久| 国产成人精品久久亚洲高清不卡| 亚洲国产精品久久久久| 亚洲午夜精品久久久久久app| 久久精品国产久精国产一老狼| 人妻少妇久久中文字幕| 99久久国产热无码精品免费久久久久| 91亚洲国产成人久久精品| 亚洲伊人久久综合中文成人网| 久久亚洲私人国产精品vA | 亚洲国产成人久久综合碰碰动漫3d| 国产ww久久久久久久久久| 99久久夜色精品国产网站 | 欧美日韩久久中文字幕| 四虎国产永久免费久久| 午夜精品久久久久久久无码| 国产精品岛国久久久久| 欧美日韩精品久久免费| 麻豆精品久久精品色综合| 亚洲AV日韩AV天堂久久| 久久久久婷婷| 91麻豆精品国产91久久久久久| 久久国产热精品波多野结衣AV| 亚洲精品美女久久久久99小说| 久久精品成人免费网站| 99久久精品国产高清一区二区| 亚洲国产综合久久天堂| 久久精品国产99国产精品| 亚洲精品高清国产一久久| 国内精品久久久久影院优| 精品久久一区二区| 久久99精品久久久久久| 久久丫精品国产亚洲av不卡 | 亚洲AV日韩精品久久久久| 久久久久久国产精品无码下载| 亚洲伊人久久综合影院|