关于学习一种应用程序开发框架——谈编程的学习

以c/c++为例,在你学习完基本的语法后,书中所说的思想(面向过程、面向对象、自顶向下)很难领悟,而且,我相信除了ACMer以外,几乎没有人能接受在学习完几个月乃至一年的编程后,编写出的代码仍然是一个黑白框的界面。从编程兴趣的角度、从思想领悟的角度,先学习一门应用程序的开发库是很有必要的。

 

1、windows API

说起windows下的应用程序开发库,很多童鞋会自然而然的想到利用windows API、MFC。没错,利用windows API来构建一些业务逻辑是很好的选择,它能让你慢慢的学会自顶向下或者是自下向上的设计一个程序,让你明白模块之间接口的定义和交互,让你知道函数指针的应用之一——回调函数,如果有兴趣,还可以把这些API封装一个自己的小型类库,让它初具面向对象的思想。虽然,这很难具有面向对象的三个特性,封装、继承、多态,但也会体会到代码重用时,只用两行代码就能画一个windows窗口的快感。

 

2、MFC

MFC是对windows API的封装。MFC通过面向对象的思想,隐去了API的实现细节,这样,程序员可以花费更多的心思在业务逻辑的构建上。但是,正是由于MFC的面向对象思想,让一个新手在学习MFC时很难一下就接受在给出的.cpp文件中,没有main函数的事实。而且,虽然众多MFC学习书籍中给出了类之间的继承关系,但一个新手仍然很难站在一个全局的角度来理解这种继承关系。最终对MFC的初步学习,也只是演变成了对成员函数的调用,与直接学习API的差别倒没有多明显了。

MFC曾在windows应用程序开发中,占有着重要地位。然而,随着对用户界面需求的增加,特别是Aero效果的风靡和Metro效果的宣传以及B/S隐有替代C/S之势,MFC在界面方面的能力缺陷不断的展现。事实上,在visual studio 2003对MFC添加了.net支持和后来添加的Ribbon支持,MFC的代码几乎没有做过大的改动。微软也明确表示windows 7不提倡MFC做界面。或许MFC终将会像window 2000那样退出历史的舞台。

所以,个人认为,从学习的角度和将来找工作的角度,深入学习MFC都是不值当的选择。

 

3、GTK+

GTK+是一款跨平台的界面开发库,对windows和Linux都有着很不错的支持,也能运行在上述系统的嵌入式设备中。GTK+虽然有个加号,但是却是一个纯c开发库。c++版本名叫GTKmm。开发者也可以将界面开发和业务流程开发分隔进行,即界面的细节改变不会影响到整个业务流程。开发者可以用Glade界面设计器进行所见即所得的界面设计,将界面保存为XML文件的形式。在代码中,读入这个XML文件即可。GTK+2.X的版本对触摸界面的展示上支持的不太好,GTK+3.0虽然有些改进,但是仍不太让人满意。MFC、QT早就有了的Spinner控件,GTK+才刚刚开始支持。而且网上的第三方插件支持比较少,如果想做一个炫一点的界面,只能自己重绘了。

另外还要提一点的是,GTK+所提供的其他功能,比如多线程(创建、管理、线程同步)等,也都是支持跨平台的。这也是GTK++最主要的优势之一。


4、wxWidgets

wxWidgets源于linux下的c++界面开发框架。开发者可以通过wxFormBuilder(也有一些其他的工具,不过没用过)生成界面XML文件,也可以实现类似GTK++的界面和业务流程的分离开发。wxWidgets面向对象思路清晰,初学者不用像学MFC那样去强制自己背下类的继承关系,随着对每个控件的使用,初学者会潜移默化的了解面向对象的思想。wxWidgets的主函数可是要自己写的哦。

 

5、QT

前面介绍的四款库都是消息驱动机制的。消息驱动机制最通俗的理解就是利用回调函数(就是函数指针),界面通过消息循环来控制,每产生一条消息,就去调用与这个消息对应的消息响应函数。QT除了对消息驱动机制支持外,还提供了另外一种灵活性更强的机制,消息槽机制。与消息驱动机制相比,消息槽机制更像是把两个模块对接在一起,然后传送任意你想传送的信息。

大名鼎鼎的QT,是大名鼎鼎的Nokia公司的产品,是一款跨平台、技术支持强劲的界面开发框架。它可以应用在PC、Android设备、或者是其他嵌入式设备。也许QT本身自带的很多组件并不怎么好看,但是在技术社区上由其他第三方人员开发的组件,才是QT作为一个界面开发最诱人的地方——大量、强悍的第三方组件支持。QT封装、继承的思想也十分清晰,很适合理解面向对象思想和模块化编程。

 

6、WPF+XAML

素未谋面,没有过多的了解。XAML是微软自己发明的一个可扩展应用程序标记语言。WPF是微软的.Net应用程序框架。大概思想也是利用XAML设计界面,然后编译成BAML,再被WPF程序调用。.Net不是c#,.Net的底层是COM(Component Object Model)技术。也就是说,通过调用COM组件,开发者可以用VB、c/c++,c#来完成.net程序的开发。所以c#包含于.Net。

 

 

上述都是针对C/S模式界面的开发。现在B/S模式也越来越流行了,与云相结合,很多厂商都说把软件装到云上,然后本地只通过浏览器就能够操作这些软件。这从根本上解决了跨平台的问题,随着HTML5、Ajax的普及,用户体验也在不断的飙升。如果只是做一个小型的用户界面展示的话,也没有必要大费周章的去学JSP、PHP什么的后台语言,c语言也支持这些功能的。可以通过c语言利用CGI+Apache实现。当然,如果想尝试利用c语言cgi搭建一个大型的网站,还是不要考虑了吧,因为它没有得到普遍认可的原因就是运行效率和速度都很低…

 

 

出去工作的话,做一个界面是一个程序员必须具备的基本能力之一。但是只会做界面的话,难免让人看轻。从技术的角度、算法的角度,都还有很多需要深入的学习和摸索。界面只是一个让自己的程序增加效果的一个小手段。

 

 

上述内容全都由自己的体验得来,有些框架比如wxWidgets学习的很不深入,所以难免会有一些谬误,请大牛一笑了之,莫过分深究。只是把这些框架大概的特点整理出来,方便有心人进行更深入的学习。

转载于:https://www.cnblogs.com/raymon/archive/2011/11/27/2265399.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这篇文章反映了图书馆员学习新的应用程序,无论是为自己还是为他人提供帮助。 由于我们使用的应用程序种类繁多,并且需要跟上它们的步伐,因此我们已经开发出找出它们的能力,即使特定更改存在令人沮丧的错误。 这一段总结如下:我们中的许多人之所以没有进入图书馆行业,是因为热爱小工具和高超的技术。 然而,我们最终还是玩弄了这项技术。 为什么? 从根本上说,这是关于我们对服务的承诺,使用该技术有助于我们为顾客服务。 二十年前,我们通过获取资源(书籍、期刊、Westlaw、LexisNexis)、组织资源(编目和分类)、提供资源并对其进行跟踪(流通、上架)、帮助人们使用资源来服务我们的顾客(参考、说明、查找辅助工具)。 现在我们执行相同的基本功能,但新技术会影响如何。 我们获得更多的电子资源。 对目录的更改(在线目录、个性化、RSS 提要)会影响我们组织资源的方式。 我们以旧方式(书架上的书籍)提供资源,但也通过门户网站、在线指南、IP 认证、联合搜索、赞助人发起的从其他机构借阅和其他应用程序提供资源。 我们使用各种新应用程序——电子邮件、聊天、博客、截屏、在线教程等等——来帮助人们使用资源。 我们不得不学习很多新的应用程序,但这有一个很好的理由:帮助我们提供服务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值