GacLib 的意義是什麼?

以現在及以後的技術發展,gaclib還有存在的必要嗎?

有什麼人或組織開始使用這個庫了嗎?

vczh使勁的開發這個類庫意義何在?


用gaclib的人雖然已經數不過來的,不過人數距離我們熟悉的全球範圍內使用的MFC和WPF什麼的肯定差遠。

話說我開發東西是不功利的。我都不知道開過過多少坑了,至於為什麼我寫了三年gaclib還在寫,是因為我還想寫,沒什麼太特別的理由。說到gaclib存在的價值,這東西從一開始就是設計來給我用的。不過我做東西都不想做太簡單的,所以我是以大家都能用的爽的規格來開發gaclib的,因此有人用也就不奇怪了。不過我也是在網上看到大家討論才知道使用gaclib的人比我想像的要多得多,他們根本就沒有來聯繫過我。

=======================================================

更新,今天終於來聯繫了,是一個在日本Intel的Havok程序員說的,這可是微軟給了一千萬日元都因為微軟日本太日本最終沒有去的,啊哈哈。

==================================================

就算是我大三的時候開發的垃圾單線程仿javascript語言(Vczh Free Script 2.0 beta 發布,當然那些我覺得是坑的東西都全部修掉了,而且有class),都有人給做了IIS的插件跟asp.net一起寫網站。不過我對開發js那樣子的語言的熱情很快就熄滅了,因為難度實在太低了。當然了,gaclib在中國普及的障礙是,不給我錢我就一定不會支持XP的,因為這個做法實在太無聊了,需要錢才能抵消我支持XP的痛苦。

什麼是以大家都能用的爽的規格開發呢?舉個例子,現在gaclib使用的方法已經跟手寫xaml差不多了,當然比起VS我沒有intellisense和自動的代碼生成(因此才需要開發GacStudio)。不過我仍然提供了一個命令行工具來做代碼生成。現在使用gaclib開發GUI程序,只需要寫個xml,然後調用一下我的命令行工具GacGen.exe,你就可以得到一些C++代碼。這些C++代碼已經根據xml生成好了各種窗口類,還有事件處理的回調函數。你可以修改這些C++代碼,因為至少你還要寫回調函數的代碼對吧。最重要的是,當你的xml修改了之後,我可以把新的代碼merge進被你修改過的C++代碼裡面去,就跟你用VB、Delphi、WinForm的感覺是一樣的。而且我現在還全面支持MVVM模式,data binding比WPF更靈活,你們喜歡的angular.js實際上從功能上看完全無法跟gaclib相比(我正在私底下研究怎麼開發gac2html,把xml編譯成瀏覽器可以運行的東西,以後再也沒有什麼angular.js了。用html和js無法抽象出控制項這個概念是死穴,誰也救不了)。現在在我開源的代碼裡面你們能看到我正在使用gaclib開發GacStudio——第一個版本當然只有拖控制項功能。這個GacStudio我全盤使用MVVM開發,我只需要操縱object model就可以跟GUI互相同步,根本不用真的去寫操作控制項的代碼

說到為什麼我要開發gaclib。其實在我心裡有個很大的roadmap,不過我是不會全盤供出來的,我只講gaclib的部分。我以前用WinForm寫過一個帶intellisense的我的某個語言的開源編輯器(開發自己的IDE),intellisense用起來就跟C#一樣爽,但是不爽的地方是WinForm很多地方都阻礙我寫這麼複雜的GUI邏輯。當我要換C++寫的時候,我已經學習了WPF,然後發現C++根本沒有一個庫能提供等價於WPF的功能,因此我決定做一個。

在這裡貼上我上面說到的編輯器的樣子,Ribbon部分是我用GDI+畫的,高仿Word 2007,那個時候WinForm還沒有Ribbon庫可以用:

gaclib也提供了一個簡陋的demo(GacLib - Demos)來介紹怎麼寫一個簡單的帶intellisense的文本框:


我把GacLib的意義分成三層:

  1. 對輪子哥自己的意義:一個持續了三年並將不知道持續多久的大型cpp輪子,差不多算得上鋼鐵之星了,堅持做這件事下來,無論是對設計、代碼的品味還是對輪子的掌控能力都大大提高了,這是很寶貴的財富,而且做起來還很有趣。
  2. 對用戶的意義:無需多言
  3. 對我們這種看客的意義:知道有這麼一個大牛花了3年造了一個這麼光滑圓潤功能強勁的輪子這件事。。。。對於走不動路的爬不動樓的腰腿不好的,可以打打雞血一口氣上五樓。對於不夠專註的,可以警醒自己。意義多種多樣五花八門,這要看你怎麼挖掘了。

補充一個意義。。對於想造輪子的同學,造出來後參考一下GacLib的代碼,可以方便地知道自己的水平是半輪一輪什麼的,這也算是利國利民吧。

另外我記起來在這個項目剛開始的時候就看過。。。不過當時不認識輪子哥,也不知道這是國人寫的,與高手擦肩而過。。。哎


這個本身是輪子哥的一個個人項目,有誰用,有沒有組織在用,又如何?這個項目跟許多個人的開源項目的初衷都是相似的,

  1. 自己有個很好的想法,想要實現它
  2. 通過實現它,練習和熟悉相關的技術細節
  3. 最近在工作或學習的過程中,獲得了許多Best practices,想要在項目中用一下
  4. 通過實現它,尋找成就感
  5. 在與別人討論相關的問題時,作為demo或sample來支撐自己的論點

@vczh 輪子哥我說得對嗎?你批准了我就取消匿名好不。


程序員信條:I do it because I can do it.


必要是肯定有的,c++上還沒有一款GUI庫能讓大多數人滿意。不過gaclib好不好用這個就見仁見智了,可能是我自己水平不行,沒有用出感覺。不過其實我還真想知道都有什麼成品軟體是用gaclib做的。就我自己用來看穩定性有待加強。想著是建議輪子哥在git上讓大家把用gaclib做的作品都貼一貼,這樣大家可能更容易看到gaclib優秀的一面。還是匿了,以免被鄙視了0.0


居然木有收錄到List of widget toolkits這一頁這不科學(逃


大多數的個人開源軟體誕生的原因其實都是:看某個已經存在的東西不順眼,但是那東西的老大不鳥我,或者我想要的東西這個地球上就木有,所以我自己寫一個吧.

有沒有其他人用?自己先覺得爽再說了,也許哪天就流行了呢.當年某個日本人不就是看Perl不爽,自己倒騰了一個語言,十幾年後莫名其妙的火了一把.


一個碼農的一生


vc什麼動機只有他明白,不過一個C++的類似wpf的UI庫,這已經是很有價值的東西了吧


class GuiApplication : public Object, private INativeControllerListener, public Description&

如果作者去掉這些私有繼承,估計會有更多人嘗試用用


推薦閱讀:

如何評價新版 Evernote for Mac 的設計風格?
2011 年 11 月新版 Gmail 的界面設計如何?
Android 為什麼要採用這種「應用管理界面與主屏分離」的形式,而不是直接採用 iOS 那樣的「主屏即應用管理」的界面?
有那些知名網站使用了 Bootstrap UI 庫?

TAG:用戶界面設計 | GacLib |