软件开发:界面库详细对比,开发工具的选择指导

5001 人浏览 | 时间: 2016-03-29 11:13:47 | 作者: codexia

    在网上无意看到这篇文章,不过,却给我很大的指导。分享给大家看看,可以借鉴一番。学习你熟悉的,只要你学的现在有需求,就好好学。什么语言流行,什么框架已死,什么PC端没落,微软都靠不住了,都是扯淡。XP不是还没有完全退出市场吗?在天朝,更迭是很慢的,不要随意切换,否则很难精深,反而会让你很疲惫,让你不知所措。

    下面是原文:


  说起界面,那真是百家争鸣。C++里面其他的都好说,像什么XML解析顶多也就十几个著名开源库而已。Office 操作的开源库仅有几个,更可怜的是有个很著名的Office开源库只有JAVA和C#版本,但是木有C++版本o(╯□╰)o。 网络方面、字符串处理方面、多语言方面等等都很少,最重要的是,这些开源库中几乎任何一个都能满足我们的需求,所以确实不需要多少个。

    但是界面就不一样了,虽然很多,但貌似目前还没有一个能够让大部分人满意的。那就先介绍一下它们的历史吧(以下描述很多都是凭记忆,若有不对,请小伙伴们指正~O(∩_∩)O~):

一、MFC(Microsoft Foundation Classes)

    最开始人们使用win32 API来编程,后来出了MFC,MFC封装了几乎所有的win32 API,并且提供了强大的可视化界面编辑器,所以如果用VC++,基本都是用MFC了,而游戏方面因为有大量的游戏引擎,并且MFC根本满足不了游戏的需 求,所以游戏方面一直是win32 API为主。

    界面框架最经典的非MFC莫属,而MFC的编译器最经典的非VC6.0莫属。 VC6从1998年就开始发行,打败天下无敌手,到现在15年过去了,依然很多公司在用,与XP、IE6一样令人纠结。早在2003年的时候,很多人就唱 衰MFC,说MFC已经死掉了,没人用了,不要再学习了。 的确,自VC6以后,MFC确实没有什么大的变化,因为微软早在2001年的时候就发布了C#,而C#的设计者就是Delphi的作者 Hejlsberg,而Delphi所属公司正是被VC6打败的Borland。虽然C#宣称比VC++好上一万倍,也确实比VC++好了不止几个档次, 但是10多年过去了,VC++依然被大量使用,至少客户端和游戏是VC++占主角。所以其实不管一门语言多么的被唱衰,多么的过时,只要有大量公司招聘, 这就比任何一个强大的语言都要好。比如很多高级语言如Erlang,据说年薪数十万上百万,但是国内有多少公司招? 而VC++尽管被唱衰十几年,却还是有大量公司招聘,所以时间是谣言最好的粉碎机。

    当然,Alberl也不是推荐大家都去学VC++,学MFC框架,只是在鼓励已经入行的朋友们。不过VC++的适用范围也越来越窄了,十年前几乎是什么都 能做,但现在用VC++的公司基本上是做客户端(正常客户端、外挂、病毒等)、游戏、服务器(据说纯C++居多,只是用VC++编译而已)。如果对这几个 方面没兴趣的话,就不要选这方面了。其实VC++现在很大程度上都仅仅只有以下几个作用:

1、C++的编译器而已

2、MFC做界面而已

3、做游戏(DirectX等等,用了游戏引擎后,基本不关VC++什么事了)

4、COM接口(但是这个不分语言,用C#、Delphi等等都可以)

像MFC非界面方面的现在都不推荐用,比如MFC的网络库、文件操作、字符串操作等等(不过Alberl还是比较喜欢CString、CFile之 类,正在转型中~O(∩_∩)O~),都推荐用纯C++的库,当然,老的项目就不用管啦~。所以仔细数下来,VC++真正让人难以抛弃的就是MFC的界面 那一部分。如果不需要绚丽的界面,就无需再纠结其他界面库了,MFC真的很不错。

二、Delphi

    当年微软的强劲对手,不过被微软的VC6完败,之后就没有起来了,虽然现在也一直更新。酷狗之前一直用Delphi做的,不过几年前6.0之后就全部换成 了VC++,当时界面效果非常好,引起了一阵热潮,现在酷狗2013的界面也是越来越漂亮了,所以这也印证了Delphi的局限性。而Borland在 2008年已经将Delphi卖了,并且从招聘来看,已经没几个公司招Delphi了。所以Delphi就不用考虑了。

    不过值得一提的是,现在的Delphi做界面比MFC要方便很多,有容器的概念,也就是控件里面可以有控件,组合起来非常方便,其VCL框架非常不错。拖 控件貌似比WinForm还方便?(Alberl只是听一个8年.net经验的同事说的,仅仅是指拖控件哦,因为Delphi自带的控件及样式非常多)

三、.NET(VB、WinForm、WPF)

    其中VB是单独的语言和界面框架,也是拖拖控件就OK,比MFC方便,但也有局限性,招聘公司几乎比Delphi还少? 不过其中音速启动是一个很成功的例子。

    而WinForm、WPF都是一个框架,他们用的语言都是C#。.net毕竟是微软的亲儿子,比C++和VC++还全能,不仅有JAVA一样的易用性,还 有C++的全能性,还比VC++的MFC好用N倍,除了这些以外还可以做网页、还可以开发Wince、windows Mobile、windows phone、win8 Metro,简直就是个万能胶囊(或者变形金刚),其唯一的坏处就是:

1、要装.net库

但是如果不用高级特性的话,只需要几十M的库就行了,并且等XP淘汰后,就基本不用装库了。91手机助手不就是要装运行库么~~~

2、跟微软绑太紧

老是有人觉得跨平台天下无敌,跨平台当然好,跨平台就什么问题都没了? 想想当年的功能机,JAVA游戏要适配多少个手机!   HTML要适配多少个浏览器!   那么多跨平台的C++库,几乎覆盖了所有范围,为什么微软还健在? 为什么大型3D游戏几乎都不考虑linux? 为什么QQ、360也不看重linux? 为什么? 

所以Alberl想说的是,跨平台这些都是老板关心的事,如果跨平台赚不到钱,谁去跨平台。 不跨平台必死无疑? 杀毒软件有跨平台的吗! 酷狗、酷我、千千、暴风、快播等等,你看看你电脑里的客户端,有几个跨平台的?  连QQ的linux版都不怎么更新,有关注linux的? 如果说这些客户端都是因为太老,跨平台难度大,那百度近两年才开始做客户端,百度影音、百度爱奇艺、百度杀毒等一系列新出来的客户端,哪个跨平台? 如果你的公司能跟上述任何一家公司比,你的水平能跟上述任何一家公司的员工比,那个时候才是我等码农担心跨平台的时候。

    所以无论从公司赚钱,还是个人赚钱的方向来看,不跨平台也可以过得很好,真的没必要去担心跨平台。

    照旧声明,Alberl不想卷入口水战。该跨平台的就跨平台,不该跨平台的就不用瞎操心了。移动客户端、浏览器当然是必须跨平台,还有很多很多跨平台~~~

3、运行缓慢

其实如果只用WinForm,是感觉不到任何缓慢的。 如果WPF也只用低级特性,也是感觉不出来的。 当然,如果用WPF的高级特性就另当别论了,QQ概念版已经停止开发很久了,而据我那个8年.net经验的同事说,一般C#做客户端还是WinForm用 的多,很少用WPF的,所以WPF还有待考验。

    其实上面3点的坏处真的没那么夸张,只有第1点可能会影响大点,但是91手机助手不也过得很不错吗?

    用.net的公司也是一大片,由于没有权威资料,所以无法和MFC比较,总之学会VC++、.net任何一个,都是不会饿死的。不过值得一提的是,虽然那 个同事工作经验8年,而Alberl的经验才2年多(包括在这家公司实习1年),工资却相差不多,甚至还比不上NB的应届生(比如论坛里经常出现的【我同 学一毕业】、【我朋友】系列)。不过他是想学习C++,才放低姿态来我们公司,因为C++的公司看他没有C++经验,一般不招。但是如果他找.net的工 作,特别是同行业的,那就比【我同学一毕业】系列要好不少啦~O(∩_∩)O~

    这也只是代表业内平均水平,不说个别大牛,我们就不要得韩红的病啦~~~

    说了这么多,转来转去还是在微软的手掌心,现在安卓这么流行,要是微软真不行了,我们怎么办?

    不用担心,微软就算倒闭了,PC端还是有几十亿的,暴雪那一系列显卡杀手游戏还在呢,QQ几亿客户端还在呢,工业设备还在呢,那么多公司还在呢。PC端经 过几十年的发展才完善,移动端更需要一个漫长的过渡期,PC端再过个十年没问题,如果什么时候敲代码都不用PC了,那PC真的玩完了。不过我等码农真的不 用担心是否被绑在微软,咱还是担心一下年终奖有多少吧,年终奖不给力就担心下一份工作吧,或者担心一下食品安全,担心一下房价吧,搞不好我们转行卖烧饼、 烤鱿鱼去了,在我们要担心的列表里面,微软真的是排不上号~O(∩_∩)O~

四、QT

    在windows客户端方面,还真的是离不开微软,不过也有做的不错的,像豌豆荚就是自行精简Webkit来做界面,没有实力的小公司就不用学了;WPS(2012及以后的版本)和YY语言都是用QT开发的,很多linux界面也都是QT开发。

    其中WPS可是真正的技术活,国内软件竞争这么激烈,模仿QQ、金山卫士、播放器的一大堆,但模仿WPS的真没几个,可见QT也真是不错啊。(多谢xiepeixing的提示)

    新版的YY语音跟QQ界面也挺像的,很炫。  

    QT也是有容器的概念的,可以控件里面放控件,并且有QML来布局界面,很多库也是封装的很好用,最主要它是跨平台的。但是诺基亚2012年把它卖了,前途未卜~

    既然有这么多好处,特别是那个跨平台,并且是1991年就出来了,而VC++ 1.0是1992年才出来的,直到VC++ 4.0被认可时,也到了1995年了。并且十几年过去了,VC++从98年之后就没有大的更新,微软早就推广.net去了,直到VS2008出来,变化也 不是很大,这中间隔了10年,QT都在发展。但是为啥火的不是QT,而是VC++ ?

    这之间的原因Alberl也不知道,但是只知道以下几点:

1、QT带了几十M的dll(目前的版本),所以也是很多公司不太想用的原因,很多公司连MFC都嫌大,改用WTL(当然,WTL除了小,还有其他优势)。

2、跨平台真的不是那么重要。Alberl刚学MFC没多久的时候,就看到很早就有人说MFC死了,QT才是王道,但是QT却在2012年被卖了,2012年诺基亚好歹还不缺钱...

3、开源库不是万能的。 Alberl之前也是以为有开源库就一定不要用商业库,但想想其实这没有任何科学依据,纵使所有的功能都有开源库,但商业库还是依然火爆,真的不是老板人 傻钱多。 如果一个曲线控件,一个员工开发一个月就需要上万元,而且还不稳定,各种功能不全,就算在开源控件上面改动,也需要很多精力,有时需要几个月才能搞定,所 以花几百甚至几千块买个稳定可靠的控件,真的是只赚不赔。当然了,这是以老板的角度来看,作为码农肯定不能这样想,因为这个不会那个不会,那真的就什么都 不会了。 不过有时候有些东西真的不是花时间就能搞的定的,等你搞定的时候说不定早就不适用了。

4、QT自身的一些局限。 由于不是windows原生的界面库,在外观上看起来可能差不多,但是真用起来的话,可能就有很多细节问题和困难了。这点只是道听途说。(不过经网友 xiepeixing的提示,WPS2012以后也用QT开发了,加上YY语音,有两款完全不同的商业产品,看来还是不错的。)

突然想起来了,本教程所用的VLC,也是用QT做的,VLC还开发了一个皮肤编辑器,真的很强大。VLC有数十款皮肤,还可以自行编辑皮肤,这是Alberl比较喜欢的一个皮肤:

又查了下资料,根据维基百科和百度百科的资料,以下软件也是QT开发:

KDE


    PS:如果作者Alberl 你看到这这篇文章,请联系我们,欢迎来本站发布文章,有大量的初学者需要你的指导,包括本人。虽然我也在不停的给其他初学者解惑,不过我自己也有疑惑。诚邀您加入我们网站!将博客的文章同时发布到网站上。
请微信扫码阅读
为防止恶意爬虫,
已开启反爬机制

相关阅读