软件开发方案

作者:韦易笑

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

来源:知乎

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

短平快的话:

1. Electron:js开发界面,可用cpp扩展

2. PyQt5: Py开发界面,可用cpp扩展

3. QWebView:js开发界面,py cpp做后端(非界面部分)

比开发速度,上面三个方案完爆c#

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

微软自己都很少用 WPF,做个 vscode还要去用 electron。

界面脚本化是大势所趋,弄个界面就该快,改两行代码按个快捷就该跑起来,避免改个文件一编译就等半天,或者出个bug找两天:

编码-测试-编码 这个核心工作流越短越好。上面三个方案都跨平台,况且人的时间本来就有限,上面几门技术学了你不亏,其他好多地方都用得上,关键是开发效率都比c#高。

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

Qt 5.6 MinGW 和 .NET 4.5 WPF 跑同一个测试,Qt 的速度是 WPF的两倍!

主要是两个技术序列:

1. 基于web技术的桌面产品,比如vscode,atom,Slack,网易云音乐,钉钉之类的成熟应用挺多,文档也丰富,问问题有人答,搜问题搜得到。

短短两年间,这么多来自微软,Facebook, Slack,Docker等公司的桌面产品使用 Electron开发出来,更多的可以到:Electron Apps自己看。

2. 基于PyQt的桌面产品:DropBox client,R Studio,Calibre,Eric Python IDE, Spyder,PDF Catalog Creator for Magento,出活快,写小工具用它根飞一样,做专业系统可以和C++Qt无缝整合。

R Studio

R Studio

Spyder

Spyder

上面两张 R Studio / Spyder 的截图,PyQt做的,不算简单吧,这界面,想看酷炫的可以去看 PyQt的 demo,不要觉得 PyQt有多大, DropBox客户端打包出来 24MB,比很多手机app都小。

Electron 内核整合了 NodeJS,所有 NodeJS能用的模块 js都能用,比如:

node-ffi/node-ffi模块,可以让你直接调用 C++写的动态库,不需要用C++写个node扩展:

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线上产品不考虑,不要看着你们办公室没人用xp就以为天下没xp了,你去二三线城市的网吧里看看,大范围的xp。现在这个时间点国内还有 45%的电脑跑xp,这问题三年内不会缓解,你要做线上系统你基本不可能抛弃这群用户,做内部工具又没有上面三个快捷,更何况跨平台问题。

虽然我承认 C#是一门好语言,但堆逻辑还是没有 js,python之类的快,且不管 C#还是 WPF,应用面太窄,学会了将来能用的地方也不多,不值得投入。而上面我给你推荐的三套方案,所涉及到的技术应用范畴都广的多,比如你学会了js/Electron,可以无缝把你桌面应用迁移到 web上,比如同时开发web版本,可以稍微该一下做成移动app,学了python/qt,也有好多别的事情可以做。

所以,学一个东西要考虑它本身的价值

ps:用过win32,owl,vcl,mfc,c#,tk,wx,手撸DirectUI,qt

不会坑你

你可能感兴趣的:(软件开发方案)