GacUI終於獲得第一個願意跟我溝通的商業的case了

以前一直都有很多人在使用GacUI的過程中遇到了問題來諮詢我,不過他們獲得了答案之後就不理我了。所以我也不知道他們到底用的怎麼樣。這次這個case的區別,就是終於肯讓我track他的進度了(逃

當然人家都還沒做好我就不透露太多了,反正是面向海外客戶的,你們多半以後也看不見。一開始本著負責任的態度,我向他推薦了XAML,他說不要,一定要用C++,而且看著我這個東西編譯出來體積小(2M)沒有依賴,所以QT和UWP也不想用,一定要試試GacUI。既然人家一定要試試,還質問我為什麼開發了GacUI還要向他推薦別的,由於我 Before 1.0 的事情做完之後才會開始寫文檔,所以只能自己來做人肉文檔了。在GacUI的Telegram的人應該目睹了這起事件的發生,後來就轉到了微信上。

這個人自稱十幾年前是個Java程序員,現在當老闆了,但是還是做一些investigation的工作,等prototype寫出來了就讓手下的人去改成產品。雖然在寫代碼的過程中,我發現人家有大量的一般程序員所擁有的缺點,不過既然人家自稱已經不是程序員了,那我也就不好說什麼。本來GacUI也是設計給普通程序員用的,應該滿足他們的需求。

GacUI抄襲了XAML的先進思想,把很多使用過程中大家抱怨的東西順便也改掉了,而且做成了更合適C++使用的樣子。結果竟然是因為體積小而得到了別人的興趣。世界真奇妙。

隨著諮詢的進一步深入,我發現對方的知識基本停留在MFC的時代,而且它告訴我業內很多人寫MFC/QT的GUI也是hardcode了按鈕大小之後根據窗口的變化人肉調整位置的。我聽了都驚呆了,XAML都出來20年了現在人們還在做這種原始的事情。我覺得我有點曲高和寡自絕於人民的感覺。

設計GacUI的時候我有意讓直接設置坐標的幾個函數顯得不那麼明顯,所以我沒告訴他還有這個功能,逼他全部用布局來做。於是有了如下幾個發現:

  • 存在一些人是完全不介意在XML裡面使用腳本的(在他們得知會生成C++代碼之後),而且似乎總是盡量想再XML裡面寫腳本。
  • 我改良的這套可以寫任意表達式的data binding,每個人都說用的超級爽,從來沒有在其他UI框架上體驗過。
  • 只要他們發現MVVM是他們唯一的solution,那他們就會願意花時間學習MVVM。
  • 只要他們不知道怎麼設置坐標,最後還是會願意學習Layout,而且一定會覺得有Layout更好。

其中一個例子是,這個人想用GacUI做異質的TreeView(也就是每個item長的不一樣),GacUI裡面最自然的方法當然是用一顆異質的樹綁定到BindableTreeView上面去,最後寫ItemTemplate來解決。因為你要使用data binding,你還要做這個TreeView,自然你就只能用MVVM的這套方法了。經過了痛苦的學習,他終於學會了這個跟GacUI抄襲了XAML的、20年前一直領先到現在的先進設計。

做前端的人還是要好好改良他們的工具。到了現在JS的observing系列feature還沒定稿,導致data binding和MVVM沒有形成統一標準,最後Layout做UI的時候還那麼幾把複雜(我承認HTML那套東西寫起文章來還是挺舒服的,但是做UI特別彆扭)。什麼時候才能全盤抄去呢?20年過去了還這樣,難道要30年?

本來一直很抗拒MVVM,最後還是把整個程序都改成了MVVM的樣子,不過看他的編程思想過於陳舊,我沒有要求他必須使用純粹的方法來做,還是告訴他GacUI留了很多可以給你hack的地方,是用來應付變態需求的。最後他告訴我,經過了這幾個星期的折騰,他深刻地領會到了UI與邏輯分離的好處,決定要把他們公司的其他app也全部改成GacUI,人肉Layout的部分說是佔用了他們超過了50%的UI部分的代碼,剩下的一大半可以用幾行data binding代替,不能再這樣繼續傻下去了。

這個人進來的時候天時地利人和具備,剛好幾個月前GacUI經歷了一次超級大重構,設計應該是不會改了。要是他早點來,說不定後面還得再折騰一下(逃

雖然我的License很寬鬆,不過人家覺得既然他寫的軟體要賣錢,那就得支持我一下才行。經過了討論,我獲得了把他的代碼的GacUI XML和圖標的部分抄來當demo的許可(因為我的License認為這部分代碼開發者說了算我默認沒有權利使用,跟GPL系列惡魔License有著本質的區別),最後還要寫篇文章給我吹吹牛,我把他的東西以後放進網站里做case studying。他們發現的bug要全數上報,如果他們自己修了也得讓我知道我合併進master。

不過這個過程中居然只發現了兩個bug,果然慢工出細活(逃

總的來說,GacUI獲得了普通程序員的肯定,比那些高手說GacUI牛逼要讓我開心一個數量級。因為這是我當初開發GacUI的時候,給自己定下幾個目標裡面最難達到的——用得爽。牛逼的人如果說GacUI好,多半還是出於他們自己所堅守的開發哲學跟GacUI相匹配。這一點我並不關心,反正每個人都有自己的想法,恰好跟我一致也不能說明什麼問題。而普通程序員說GacUI好,才是出於感性的、直覺上的體驗。

@鄒欣 在上他的軟體工程課的時候,要求學生做的作業要發到網上去讓大家下載使用,從而獲得反饋。其實開發GacUI也是一樣,一直以來人們問完我問題就跑了,這樣也是不行的。難得有個人願意持續使用和反饋,我覺得是個良好的開始。

推薦閱讀:

英文水平到什麼程度,學習C++ primer英文版比中文版好?
初學c++要怎麼學?
如何評價基於 C++ 17 的框架 MCF?
做遊戲與搞圖形學有什麼聯繫?
從現在看,非操作系統(或平台)的軟體在動態鏈接時用二進位本機代碼,是一個錯誤嗎?

TAG:C | 圖形用戶界面 | 編程 |