前几天,猪头问我最近技术上有什么新动向?我最近还是在学习操作系统,学了一些汇编,虽然进度很慢,但幸好还在坚持。我最近对Linux桌面环境比较感兴趣,了解X window System的Server/Client结构,以及GNOME(Ubuntu为代表)和KDE(Fedora为代表)两大桌面环境,以及QT库,GTK库。最近还使用Studio2008的VC9做一些开发,试用了VC9的feature库,例如符合C++标准的正则表达式。有这样一些心得:
1.一直不了解Picasa图片管理软件和世界之窗浏览器的界面是怎么做的,了解Linux桌面技术后,有了答案,这两个软件的风格与Ubuntu很接近,所以应该也是用了GTK图形库开发。
2.因为学习操作系统,所以尝试从系统的角度全面的看待具体的开发工具和关注的软件,这一年和各种各样的外设打交道,大多数是PC外设,所编写的程序从硬件层面上看是完成了I/O操作,从操作系统的层面看是“文件”读写,从API就可以看出,操作系统把外设都通通归为文件,file是硬盘文件,Socket是网络文件,串口COM还是文件。
3.原来Qt,GTK是同MFC一样的用于开发桌面程序的图形库,基于图形库之上的桌面环境GNOME/KDE除了提供资源管理器之类的管理和应用软件之外,更重要的是提供了平台,框架甚至开发工具,当应用程序框架为多数人认同时,这个桌面环境的功能会越来越强大,所以桌面环境也就繁荣起来了。反之,正向windows证明的那样,首先是操作系统和绑定软件的普及,然后是框架(例如MFC应用程序框架/ActiveX)的繁荣。——所以这几年windows越来越少支持MFC库和框架,C++桌面软件开发也就有些没落了,所以我会转而关注QT的库和框架。
4.当我看到studio2008的VC9有一些重要的变化,例如C++标准(VCP90的304版本)库扩展了对持C++标准的支持(TR::STD::),开始支持正则表达式,MFC库也大大加强了,支持开发Office2007的ribbon风格界面的软件——我下载和破解了studio2008,安装了针对VC的featurPack包,做了一些开发。
开发完成后移植程序到没有安装2008开发环境下的机器时,运行提示找不到C标准库(VCR90.dll)和C++标准库(VCP90.dll),而实际上我已经把该带的库都放到同级目录下了,最后同事给我找了一篇文章《VC2008程序发布指南》,原来是因为缺少库的manifest文件,另外嵌入我程序的manifest文件所指定的库版本与我附带的库版本不一致。
VC6和XP的组合从来没有遇到过这样的问题,不禁感慨,VC6已经升级到VC9,操作系统停留在XP上,VC新开发的软件缺少操作系统的支持了,发布上就繁琐了一些,微软这几年有些廉颇老矣,Vista和office2007都没有推广起来,互联网上也无所作为,Google掌握着未来,而微软也许连操作系统这块自留地都保不住了。
5.开始反思自己对windows操作系统了解有多少,对windows应用程序框架使用得有多好,其实可以把自己所开发的程序的日志写到系统的日志管理器去,让系统做统一管理;目前我们把数据采集程序做成系统服务,让它开机自动运行,其实也可以开发成任务栏右下角的托盘程序,想要有界面显示时,点击会蹦出数据的实时显示界面。——显然,熟知框架和平台,才能够为应用程序选择合适的构架,不是只有交互式的MFC对话框程序和文档视图程序可以选择的。

