2011年(4)
分类: C/C++
2011-01-10 22:24:21
首先来明确几个概念:
C语言:是一种面向过程的高级程序设计语言,它是目前众多计算机语言中举世公认的优秀的结构程序设计语言之一。它由美国贝尔研究所的D.M.Ritchie于1972年推出。(它只是一种语法和规约,和你使用的VC6.0或是Tuber C是没有任何关系的!)
C++:在长期的编程实践中,人们认识到C的代码执行效率和可以重复使用的代码利用率并不是很高……当C语言发展到顶峰的时刻,出现了一个版本叫C with Class,那就是C++最早的版本,在C语言中增加class关键字和类,那个时候有很多版本的C都希望在C语言中增加类的概念;后来C标准委员会决定为这个版本的C起个新的名字,那个时候征集了很多种名字,最后采纳了其中一个人的意见,以C语言中的++运算符来体现它是C语言的进步,故而叫C++,成立了C++标准委员会。
对了,我想你应该明白了吧。不管是C还是C++,并不涉及实质的去编写一个程序 ,只是一组大家都遵守的编程规范和语法而已。
然后,在这个大家都遵守的规矩的指导下,各个公司都开始开发自己的C语言编译和开发工具:
微软(MicroSoft)做出了自己的编译器——Visual Studio(大家熟悉的VC6.0就是Visual Studio早期版本的一个组件)
为了进一步的方便用户开发程序,微软还特别在自己的开发环境Visual Studio中放入了一个类库,已完成功能相似部件的直接使用。我们把这个类库叫做MFC……
Sun公司做出了自己的编译和开发环境,那就是JAVA。
Trolltech 公司做出来的开发环境,呵呵,那不就是QT么!
那么,工具有了,到底该选择哪一个去学习呢?
最好的办法当然是都学了,只是比较费劲而已。如果你已经学习过MFC或者是JAVA了,那我建议你继续自己的坚持,争取把它学精学透。如果你还不知如何选择这些“琳琅满目”的编程环境,那请你继续往下看……
先说MFC,不置可否的,微软的操作系统Windows在全世界的计算机上占有相当高的比重。国内有95%以上的个人计算机都是使用Windows作为自己的操作系统的。但是Windows作为微软的自留地(不公开代码,也不提供核心技术的文档资料),并没有给我们这个开发者留多少活路。微软走的是奴化的路线,你用它的操作系统,然后你使用它的开发工具开发出只能跑在它的操作系统上的应用软件。其结果只能是,你越来越离不开它了,如果有朝一日你想换一个系统来用,你会发现你开发出的软体都变成废品了……
如果只是在PC机上,那还好一点,大不了一辈子用Windows。可是现在的硬件发展速度……我就不再赘述了,摩尔定律大家都知道。总之基于各种处理器硬件架构的计算机都出现了,应用于各个领域,这些计算机上根本不会去装什么Windows的,它们会有自己对口的操作系统,最常见的就是裁剪和优化过的LINUX了……只怕你MFC学的再好,这里也是英雄无用武之地了……
在说JAVA,JAVA的界面很漂亮,真的,我也这么觉得。JAVA工程师也能拿到很好的待遇的。通过虚拟机技术也使得它可以被很好的移植到其他不同的计算机系统平台上。是的,这个没有任何问题。回头若有时间我也会去学的。但是,毕竟学的人也多呀。所以这几年来JAVA工程师的工资有在下降……
另外还有重要的一点就是——代码的执行效率。由于这个JDK是运行在虚拟机之上以实现跨平台的,所以代码要经过转化才能跑在实际的机器上,这中间的开销还是不容小觑的。最简单的佐证,你可以尝试去开一些JAVA的应用程序,像是雅虎Widget一类的,你会看到,它的启动,真的很花时间……
如果说MFC效率高不能移植,JAVA能移植效率不高都不完美的话……
QT将会是你期待的解决方案!
首先是跨平台行,QT为现在你能听到的几乎所有的平台都独立了自己的组件支持:
因此,你开发的程序只需通过:
qmake (在不同平台下,根据平台特性重新生成MakeFile,和编译需要的相关文件)
make (在新的平台下重新编译出符合平台特性的应用程序)
这两个简单的命令,就可以实现程序的跨平台运行了,而不用在去装什么虚拟机或这是JDK了。
正是由于QT优秀的跨平台特点,使得它成为嵌入式技术开发与应用中必修的一课!
在代码执行效率上,由于不是通过虚拟机而是直接建立有对应平台的动态连接库,所以会有平台允许范围内的最高代码执行率。
过去,应用标准C++开发模式的Qt可能会在界面上输给JAVA,但是最近一段时间,随着C语言的进一步发展,这个问题已经被解决。QT通过引入和使用QT样式表和OpenGL绘图模块,完全实现了自定义外观。能够开发出绝不逊色与JAVA的漂亮界面:
另外,QT/Embedded Linux的使用,也使得QT这个开发环境可以很好的适用嵌入式领域的开发……
还有就是最为新近兴起的开发环境,现在熟悉QT开发的人才还是非常紧缺啊。
嘿嘿,因为少,所以值钱!
当然以上仅代表个人的观点,至于你会怎么选择还是要自己好好斟酌的。最后,祝愿大家都能有一个灿烂美好的明天……