關(guān)于桌面軟件的開發(fā)語言和開發(fā)框架的思考
作者:朱金燦
來源:http://blog.csdn.net/clever101
?
??????? 什么是好的開發(fā)語言和好的開發(fā)框架?這個問題可能一千個人有一千種答案,我的答案是在滿足用戶效率需要的前提下能降低開發(fā)者對計(jì)算機(jī)知識的依賴而把盡可能多的精力用在滿足業(yè)務(wù)開發(fā)需要的開發(fā)語言和開發(fā)框架就是好的開發(fā)語言和開發(fā)框架。這話說得有點(diǎn)拗口,其實(shí)它包含下面幾層意思:首先是開發(fā)語言或開發(fā)框架必須滿足用戶的效率需要,比如一個軟件它要申請大內(nèi)存來處理大數(shù)據(jù),而某種開發(fā)語言它無法申請大內(nèi)存,那它肯定是不行的;二是假如滿足了用戶效率需要之后,降低開發(fā)者的要求從而提高開發(fā)效率就成了首要目標(biāo)了。
??????? 從這個角度我開始反思以前我在桌面軟件的開發(fā)語言和開發(fā)框架的選擇。以前用得比較多的還是開發(fā)語言是C++,開發(fā)框架是MFC。這種選擇優(yōu)點(diǎn)是軟件運(yùn)行效率高,界面漂亮,缺點(diǎn)也是顯而易見的,好的C++程序員難招,特別是還要熟悉VC的,半吊子的C++程序員造成軟件有無數(shù)多的bug。
?
??????? 進(jìn)而我想到了qt,一個比MFC更優(yōu)雅的開發(fā)框架。理解信號槽機(jī)制比MFC的消息機(jī)制還是要容易一些的。還有就是qt在跨平臺和多語言界面的支持比MFC要好。熟悉qt的C++程序員要比熟悉MFC的程序員要多。小眾的GTK或wxWidget我基本不考慮。不過C++這門充滿陷阱的開發(fā)語言依然是一道門檻。
?
?????? 今年試用了C#做界面,感覺真是棒,開發(fā)效率高,運(yùn)行效率也不低,并且C#可以很方便的調(diào)用C接口函數(shù),就是說在以前做的C++庫增加一個C接口函數(shù),就可以很方便的被C#調(diào)用。
?
?? ???? 在未來的桌面軟件的開發(fā),我會這樣考慮:windows系統(tǒng)下,C#編寫界面,C#編寫對效率要求不高的算法,C/C++編寫對效率要求高的算法。需要跨平臺時,如果C#現(xiàn)在的跨平臺做得足夠好,即mono項(xiàng)目(注:mono是指由Novell公司(由Xamarin發(fā)起,并由Miguel de lcaza領(lǐng)導(dǎo)的,一個致力于開創(chuàng)·NET在Linux上使用的開源工程)足夠成熟,允許商業(yè)開發(fā),Linux也照搬windows的做法;如果C#現(xiàn)在的跨平臺做得不好,PyQt(注:PyQt是一個創(chuàng)建GUI應(yīng)用程序的工具包。它是Python編程語言和Qt庫的成功融合)做界面,C/C++編寫算法。界面使用腳本語言python編寫主要是為了提高開發(fā)效率,當(dāng)然前提是能夠滿足用戶的效率需要。
??????? C#能夠在Linux取代qt嗎?會有這個可能,但面臨的困難也不少:微軟是否會放棄C#的一些相關(guān)專利而把它貢獻(xiàn)給開源社區(qū);mono項(xiàng)目能否一直開發(fā)下去;開發(fā)者是否愿意使用mono去開發(fā)開源軟件,現(xiàn)狀是基于mono的開源代碼和基于qt的開源代碼在數(shù)量上不是處在同一個級別的。我希望C#在Linux上也能大放異彩,但這肯定需要一段時間!