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