• <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>
            隨筆-341  評(píng)論-2670  文章-0  trackbacks-0
                眼下新的GUI Framework的第一版也就只剩下3個(gè)控件了。雖然之前說(shuō)過(guò)要開(kāi)發(fā)一個(gè)理論上是P2P上的遠(yuǎn)程對(duì)象交互協(xié)議、要開(kāi)發(fā)一個(gè)窗口設(shè)計(jì)器、還要開(kāi)發(fā)一個(gè)LALR Parser GUI作為GUI Framework的demo。我想這也是一個(gè)大的工程,對(duì)于我一個(gè)人來(lái)說(shuō)。但是今天的一個(gè)想法終于把這三個(gè)東西串了起來(lái)。

                想必大家MFC用得很?chē)灏伞inux下面開(kāi)發(fā)C++反正所有選擇相比起當(dāng)年的Borland C++Builder來(lái)說(shuō)都是很爛的,那就不說(shuō)了。Windows下面開(kāi)發(fā)C++是哭笑不得。C++ Builder雖然想法是好的,其實(shí)我也不介意他用Delphi的VCL,只是編譯器的bug實(shí)在是太多了。新的C++Builder連試用版的安裝程序都有問(wèn)題,于是徹底失去希望了。現(xiàn)在RAD也就剩下MFC一個(gè)了。說(shuō)實(shí)話(huà)我以前做游戲、做軟件渲染器到現(xiàn)在做編譯器做什么什么的,實(shí)際上都是類(lèi)似庫(kù)或者是中間件的,跟RAD一點(diǎn)關(guān)系都沒(méi)有。只不過(guò)我仍然非常喜歡RAD這樣的開(kāi)發(fā)方式。但是MFC那個(gè)樣子實(shí)在是RAD不起來(lái)啊,所以我干脆揭竿而起,另做一個(gè)了。至于將來(lái)前途怎么樣我就不管了,至少得先讓自己爽起來(lái)再說(shuō)。

                為什么我那么強(qiáng)調(diào)窗口設(shè)計(jì)器呢?其實(shí)可以大家可以開(kāi)個(gè)C#,嘗試做一下我以前那個(gè)破IDE的界面。這樣的話(huà)窗口設(shè)計(jì)器會(huì)給你一份代碼,藏在XXForm.Designer.cs底下,然后寫(xiě)幾行代碼把東西當(dāng)prototype跑起來(lái)。然后你再用MFC做一遍。現(xiàn)在VC++ 9.0對(duì)MFC的支持其實(shí)也是很漂亮的,只不過(guò)量變引起不了質(zhì)變而已。做完了之后比較一下哪個(gè)比較囧(指的僅僅是開(kāi)發(fā)過(guò)程,不要拿效率說(shuō)事兒,那點(diǎn)破界面慢一點(diǎn)無(wú)所謂)。

                現(xiàn)在我揭竿而起重頭來(lái)了一次,就等于給你.NET的System.Windows.Forms一樣,有類(lèi)庫(kù)沒(méi)有界面編輯器。如果你想做一個(gè)界面出來(lái)的話(huà)就要自己親手寫(xiě)一個(gè)XXForm.Designer.cs出來(lái)。這個(gè)其實(shí)比MFC更囧,也令我自己更加不爽。要是我自己做的東西連我自己用著都不高興的話(huà)那就太沒(méi)意思了,所以得來(lái)一個(gè)那樣的設(shè)計(jì)器才行。

                話(huà)說(shuō)到這里,其實(shí)VL++這套類(lèi)庫(kù)(除了GUI還有很多其他東西,用了的話(huà)連STL都免了)文件結(jié)構(gòu)復(fù)雜,每一次使用都要重新一個(gè)一個(gè)添加,也是很不爽的。因此至少窗口設(shè)計(jì)器也要自動(dòng)把這些該加進(jìn)去的文件添加到vcproj不是么。但是VL++并不僅僅是一個(gè)GUI Framework啊,至少還能寫(xiě)編譯器是吧。自己做了一個(gè)Syngram,直接在C++里面寫(xiě)左遞歸文法,用起來(lái)也挺爽的。當(dāng)然爽不是爽在能寫(xiě)文法,而是爽在這樣做,編譯器遇到了大的變化也非常容易改,傳說(shuō)中的解耦啊。Vczh Free Script 1.0只是一個(gè)支持閉包的東西,后來(lái)大刀闊斧修改了,就變成同時(shí)支持很多個(gè)編程范式的腳本語(yǔ)言了。多虧了Syngram啊,改語(yǔ)法真是不費(fèi)吹灰之力。既然我要弄一個(gè)GUI工具來(lái)寫(xiě)編譯器,那么吧兩個(gè)工具整合在一起,就是一個(gè)很自然的想法了。再加上未來(lái)有空的話(huà)還要做一個(gè)遠(yuǎn)程對(duì)象交互協(xié)議,也是很需要GUI工具幫忙的。

                于是呢,雖然工程量很大,但是我們來(lái)展望一下。現(xiàn)在,自己需要開(kāi)發(fā)一個(gè)系統(tǒng)的客戶(hù)端,這個(gè)客戶(hù)端需要跟遠(yuǎn)程的數(shù)據(jù)庫(kù)打交道,同時(shí)還要支持大量的配置。那怎么辦呢?首先,打開(kāi)這個(gè)工具,連接到一個(gè)剛剛建立好的vcproj上面,然后就拖控件了。拖完了之后就是一個(gè)prototype了,一跑覺(jué)得不錯(cuò)。現(xiàn)在,從遠(yuǎn)程的機(jī)器那邊拿到一個(gè)使用遠(yuǎn)程對(duì)象交互協(xié)議的接口說(shuō)明,添加到這個(gè)工具里面,這個(gè)工具就自動(dòng)產(chǎn)生了客戶(hù)端的代碼,讓你可以像調(diào)用一個(gè)類(lèi)一樣跟遠(yuǎn)程的機(jī)器打交道(像SOA?我覺(jué)得不像,我也不想像。像WCF?雖然概念類(lèi)似,不過(guò)既然我不做SOA,那就不像了)。最后一步要配置。現(xiàn)在配置都寫(xiě)DSL啊。所謂的DSL就是面向特定領(lǐng)域的特殊語(yǔ)言。編譯器不會(huì)寫(xiě)?沒(méi)關(guān)系,還是那個(gè)工具,新建一個(gè)編譯器,拖幾個(gè)文法出來(lái),搞一搞,呀,代碼出來(lái)啦。用這個(gè)生成以后的代碼寫(xiě)寫(xiě)后端,一個(gè)DSL就有啦。

                嗯嗯,雖然很理想化,但至少這玩意兒作為一個(gè)原型存在,也是挺好玩的。不過(guò)呢,可能要花很長(zhǎng)時(shí)間,這個(gè)計(jì)劃也不是穩(wěn)定的,得看未來(lái)發(fā)生了些什么事情。不過(guò)最少那個(gè)做編譯器的玩意兒還是要的。ANTLR這個(gè)LL(k)都有了,我Syngram好歹也是LR(k),不做就不爽啦。
            posted on 2008-08-19 09:51 陳梓瀚(vczh) 閱讀(1804) 評(píng)論(5)  編輯 收藏 引用 所屬分類(lèi): 其他

            評(píng)論:
            # re: 關(guān)于VL++輔助C++程序設(shè)計(jì)的設(shè)想 2008-08-19 10:35 | jetricy
            不管3721先sf,
            分布式的做編譯器的環(huán)境?
            我暫時(shí)還是個(gè)對(duì)編譯器有興趣的外行,啥時(shí)候搞一個(gè)像樣的LR(K)還是比較口水的  回復(fù)  更多評(píng)論
              
            # re: 關(guān)于VL++輔助C++程序設(shè)計(jì)的設(shè)想 2008-08-19 15:35 | foxtail
            慢慢玩吧 有的你玩了  回復(fù)  更多評(píng)論
              
            # re: 關(guān)于VL++輔助C++程序設(shè)計(jì)的設(shè)想 2008-08-19 19:42 | 空明流轉(zhuǎn)
            去吧去吧,先搞吧。其實(shí)我用了YACC覺(jué)得也還行,生成現(xiàn)在配合構(gòu)建腳本還算湊合。  回復(fù)  更多評(píng)論
              
            # re: 關(guān)于VL++輔助C++程序設(shè)計(jì)的設(shè)想[未登錄](méi) 2008-08-20 05:34 | missdeer
            做IDE,有意思,我喜歡  回復(fù)  更多評(píng)論
              
            # re: 關(guān)于VL++輔助C++程序設(shè)計(jì)的設(shè)想 2008-08-23 23:58 | dell
            Windows下面開(kāi)發(fā)C++的確很受折磨。  回復(fù)  更多評(píng)論
              
            久久午夜伦鲁片免费无码| 久久毛片一区二区| 国产精品成人久久久久久久| 天天久久狠狠色综合| 日日狠狠久久偷偷色综合0| 久久久久亚洲av综合波多野结衣| 亚洲国产精品一区二区久久hs| 久久精品欧美日韩精品| 久久久久人妻一区精品 | 婷婷五月深深久久精品| 色综合久久88色综合天天| 久久无码专区国产精品发布| 99久久成人18免费网站| 色诱久久久久综合网ywww| 久久精品国产精品亚洲人人| 亚洲AV无码1区2区久久| 久久综合久久鬼色| 久久久久久久尹人综合网亚洲| 久久久久久伊人高潮影院| 久久国产热这里只有精品| 国产精品久久久久久福利漫画 | 国产精品国色综合久久| 四虎国产精品成人免费久久| 国产午夜久久影院| 久久婷婷五月综合国产尤物app| 伊人久久精品影院| 久久青青草原亚洲av无码| 久久青青草原亚洲av无码app| 伊人久久五月天| 久久久久国产成人精品亚洲午夜| 久久91精品国产91久久小草| 久久亚洲日韩精品一区二区三区| 久久亚洲日韩看片无码| 中文国产成人精品久久亚洲精品AⅤ无码精品 | 国产精品久久久久久五月尺| 久久久久久国产a免费观看不卡| 国产美女久久久| 青青青青久久精品国产| 国产呻吟久久久久久久92| 久久se精品一区二区影院| 国产精品VIDEOSSEX久久发布|