这是运行界面
因为大概花了一天半的时间,今天还上班,不是一直在做,界面没仔细设计,就是随便的把信息都写上去了,图标是网上直接下载的,好看不好看都是它了。
这类软件比较大的工作量是UI美化,美工设计,程序的代码量倒不是很大。但是即使如此,如果用Win32从头开发这么一个软件也不是三天两天能做的,前提还是你熟悉大多数Windows API的,我觉得C++程序员可以试一下写这么个东西到底需要多少工作量。
那么用C#,Java,或者网页实现这么个东西(当然网页就不能运行在桌面上了),我觉得很多人会说,小意思,就是个布局,美工的活多一点。功能简单的不能在简单了。
现在问题是,C++真的就不能快速开发吗?实际上,我觉得真正的问题不在C++语言本身,而是库的问题。很奇怪,那些高级语言的库,C++一般都没有对应的库。昨天,我在Android上想实现这个程序,首先当然是下载服务器信息,它居然用Java只需三四行代码,无非就是生成一个下载类的实例,调用一下下载函数,然后就等着数据就行了。而且这个组件非常稳定。还好,微软提供了一个API:UrlDownloadToFile。这个函数只需传递两个参数,下载链接和保持文件名称,看这,怎么觉得微软这么大方了呢?它一贯的风格是不绕八个弯,传一大堆参数,提前设置一大堆的环境,是不会让你运行成功的。开始使用才知道,这个函数脆弱的10个链接9个下不来,原因不明,也懒得研究,还不知自己用socket写个下载功能的组件。还好因为数据量不大,这个程序使用它还没什么问题,不过你要注意,链接是不支持中文的,自己要转换一下。
感觉其它高级语言是卖成品,拿过来就能用,C++是卖零件的,没点功夫和技术,你休想玩的转。问题是你卖零件,你就不能捎带卖点功能全的成品吗?
很多人经常说的一句话是,语言不重要,看你怎么用,不过我不以为然,你用C#和Java写底层和效率功能要求高的场合还就是不太好。现在的计算机,硬件不是问题?这纯属扯淡,硬件永远是问题?没人嫌弃计算机太快,而且很多人每天都在抱怨太慢,不是吗?你打开魔兽要多长时间,打开Word看个文档要多长时间,打开Photoshop编辑图片要多长时间,打开VS要多长时间,这些时候不想再快一点吗?
恰恰相反,随之硬件的性能提升,程序越来越慢,Win98的启动速度在当年也不一定比XP慢。其它任何大型软件和游戏,哪位知道比当年的版本打开和运行更快的,说下,我是不知道。Android使用Java的一个硬伤就是性能。
更重要的是C++真的不能提供快速开发,功能完备的组件吗? 其实根本不是,看看我附的代码,它其实并不比Android同样软件的Java代码更多,为什么呢?因为我使用了库,注意是通用的库,不是针对这个软件的库。