軟件開發(fā)方案

作者:韋易笑

鏈接:https://www.zhihu.com/question/24461881/answer/140104855

來(lái)源:知乎

著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。

短平快的話:

1. Electron:js開發(fā)界面,可用cpp擴(kuò)展

2. PyQt5: Py開發(fā)界面,可用cpp擴(kuò)展

3. QWebView:js開發(fā)界面,py cpp做后端(非界面部分)

比開發(fā)速度,上面三個(gè)方案完爆c#

Qt5以后,Qt全面使用gpu加速繪制。

微軟自己都很少用 WPF,做個(gè) vscode還要去用 electron。

界面腳本化是大勢(shì)所趨,弄個(gè)界面就該快,改兩行代碼按個(gè)快捷就該跑起來(lái),避免改個(gè)文件一編譯就等半天,或者出個(gè)bug找兩天:

編碼-測(cè)試-編碼 這個(gè)核心工作流越短越好。上面三個(gè)方案都跨平臺(tái),況且人的時(shí)間本來(lái)就有限,上面幾門技術(shù)學(xué)了你不虧,其他好多地方都用得上,關(guān)鍵是開發(fā)效率都比c#高。

再比較下性能:https://www.youtube.com/watch?v=8O-0k4MLKs8

Qt 5.6 MinGW 和 .NET 4.5 WPF 跑同一個(gè)測(cè)試,Qt 的速度是 WPF的兩倍!

主要是兩個(gè)技術(shù)序列:

1. 基于web技術(shù)的桌面產(chǎn)品,比如vscode,atom,Slack,網(wǎng)易云音樂(lè),釘釘之類的成熟應(yīng)用挺多,文檔也豐富,問(wèn)問(wèn)題有人答,搜問(wèn)題搜得到。

短短兩年間,這么多來(lái)自微軟,F(xiàn)acebook, Slack,Docker等公司的桌面產(chǎn)品使用 Electron開發(fā)出來(lái),更多的可以到:Electron Apps自己看。

2. 基于PyQt的桌面產(chǎn)品:DropBox client,R Studio,Calibre,Eric Python IDE, Spyder,PDF Catalog Creator for Magento,出活快,寫小工具用它根飛一樣,做專業(yè)系統(tǒng)可以和C++Qt無(wú)縫整合。

R Studio

R Studio

Spyder

Spyder

上面兩張 R Studio / Spyder 的截圖,PyQt做的,不算簡(jiǎn)單吧,這界面,想看酷炫的可以去看 PyQt的 demo,不要覺(jué)得 PyQt有多大, DropBox客戶端打包出來(lái) 24MB,比很多手機(jī)app都小。

Electron 內(nèi)核整合了 NodeJS,所有 NodeJS能用的模塊 js都能用,比如:

node-ffi/node-ffi模塊,可以讓你直接調(diào)用 C++寫的動(dòng)態(tài)庫(kù),不需要用C++寫個(gè)node擴(kuò)展:

varffi=require('ffi');varlibm=ffi.Library('libm',{'ceil':['double',['double']]});libm.ceil(1.5);// 2// You can also access just functions in the current process by passing a nullvarcurrent=ffi.Library(null,{'atoi':['int',['string']]});current.atoi('1234');// 1234

Python/PyQt也有類似的接口。

WPF線上產(chǎn)品不考慮,不要看著你們辦公室沒(méi)人用xp就以為天下沒(méi)xp了,你去二三線城市的網(wǎng)吧里看看,大范圍的xp?,F(xiàn)在這個(gè)時(shí)間點(diǎn)國(guó)內(nèi)還有 45%的電腦跑xp,這問(wèn)題三年內(nèi)不會(huì)緩解,你要做線上系統(tǒng)你基本不可能拋棄這群用戶,做內(nèi)部工具又沒(méi)有上面三個(gè)快捷,更何況跨平臺(tái)問(wèn)題。

雖然我承認(rèn) C#是一門好語(yǔ)言,但堆邏輯還是沒(méi)有 js,python之類的快,且不管 C#還是 WPF,應(yīng)用面太窄,學(xué)會(huì)了將來(lái)能用的地方也不多,不值得投入。而上面我給你推薦的三套方案,所涉及到的技術(shù)應(yīng)用范疇都廣的多,比如你學(xué)會(huì)了js/Electron,可以無(wú)縫把你桌面應(yīng)用遷移到 web上,比如同時(shí)開發(fā)web版本,可以稍微該一下做成移動(dòng)app,學(xué)了python/qt,也有好多別的事情可以做。

所以,學(xué)一個(gè)東西要考慮它本身的價(jià)值

ps:用過(guò)win32,owl,vcl,mfc,c#,tk,wx,手?jǐn)]DirectUI,qt

不會(huì)坑你

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 當(dāng)我再次準(zhǔn)備點(diǎn)燃香煙的時(shí)候,卻發(fā)現(xiàn)最后的一支已經(jīng)被我剛剛抽完了,記不起今晚抽了多少,只是現(xiàn)在我終于有了一絲眩暈的...
    守望撒哈拉閱讀 972評(píng)論 0 0
  • 1、書中首先舉了比恩的例子:他似乎不知如何面對(duì)失敗!————我不知道比恩的成長(zhǎng)過(guò)程,以及他形成固定性思維模式的原因...
    飛蛾娥閱讀 1,670評(píng)論 0 0
  • 昨天因?yàn)楹屠瞎鷼?,一個(gè)人去逛街去了,想想好久沒(méi)有化妝了,就買了口紅和睫毛膏,到家才想出來(lái)忘記買眼影了,真的是好多...
    薇_9d79閱讀 110評(píng)論 0 1
  • 偶爾回顧一下過(guò)去,發(fā)現(xiàn)過(guò)去真的有很多不好其實(shí)是好事兒,說(shuō)明自己的品味和審美提高了。 只有從過(guò)去不好的狀態(tài)走出來(lái)了,...
    遇見(jiàn)人間四月天閱讀 356評(píng)論 0 3

友情鏈接更多精彩內(nèi)容