首页->大浪淘沙

“答《大众软件》编辑问”全文

作者:马健
邮箱:stronghorse@tom.com
主页:http://stronghorse.yeah.net
发布:2006.04.05

说明:2006年春节前我收到《大众软件》编辑coco的一份email,说打算在栏目中介绍我开发的软件MediaCam,因为以前该栏目还介绍过我的软件ComicsViewer,所以这次想发一份对我的介绍,希望我能够回答一些问题。春节后我按要求回答了这些问题,最终发表在3月出版的《大众软件》杂志2006年第6期上。从我看到的发表出来的文字看,由于栏目版面限制,已经对我原先的回答进行了大幅度的缩写,有些地方可能会给读者造成某种误解,因此我把原文找了出来贴在这里,给读者一个完整的视图。同时这些文字也是对我自己的一个小结,聊算是《个人网站开张两周年纪念》的续集吧。

下面内容中黑体部分是《大众软件》编辑提出的问题,其它部分则是我的回答。


1.首先当然是自我介绍啦,给读者一个第一映象。简单介绍一下你自己啦:),真实姓名(如果愿意透露的话),年龄啦、现在的工作情况、平时的爱好、使用的开发语言等等啦,最近研究的技术方向等等,尽量多一点哦:)。能谈谈最初是怎么涉足于计算机编程领域的?第一次使用的开发工具,第一次编出的程序,第一次的感受……

我的真实姓名其实在我的软件中都已经标明,没啥可保密的:马健。现在从事软件开发管理工作,偶尔写写小软件,一方面是为了满足自己日常使用电脑时的需要,另一方面也是为了不使自己和实际开发工作脱节。其中第一个因素是主因:我这个人实在太懒,每次要我做机器可以做的事情时,我都会觉得很难受,然后开始想办法让机器帮我做事,于是就有了我网站上的那堆小东西。
至于研究方向,实在不好说,因为我感兴趣的东西很多,但是真正有时间做进去的不多。其中与工作相关的包括信息安全、企业应用平台等,与工作无关的包括多媒体、数字图像处理、数字出版、OCR等。
我涉足软件领域似乎也很自然:因为喜欢,所以沉迷,然后不知不觉就成了吃饭的本钱。

2.我们在您的主页上发现了非常多您开发的软件,细数了一下,有60款之多呢。大部分的软件集中在图像和视频处理方面,为什么会专注于这方面产品的开发呢?可以谈谈从开始想到要做一款软件,从灵感一现到开始立项一直到现在一个简短的开发经历么(比如著名的comicsviewer^_^)?

其实连我自己都没有想到不知不觉就写了这么多,不过仔细想想,似乎你还漏说了一项:文本处理与阅读(我写的电子书反编译文章与软件在小圈子里还算小有名气)。
我开发这些软件的原因很简单:电影、摄影、阅读都是我的业余爱好,而且还是不很计较投注的时间、精力、金钱的那种爱好。在这些爱好上投入越多,我越觉得需要更多、更好的软件做为辅助,才能满足我不断提高,或者说不断变化的需要和品味。所以大多数软件的开发过程都差不多:
1、我手工做某件事做烦了,或者用某个现成的软件用得非常、非常不爽,但是在google上又找不到更好的软件,才会想自己写,否则我当然能偷懒就偷懒:)。例如在写ComicsViewer前,我只能用ACDSee看漫画,一直看到我咬牙切齿、忍无可忍,才终于决定自己写一个。
2、在下定决心自己写一个软件后,通常我要google两轮:第一轮看看有什么同类软件可以参考,有时候甚至要比较、综合10多个同类软件才能确定新软件的特性,当然如果比较以后发现我要写的软件根本就不能超过已有的软件,我也会很干脆地放弃,把时间挪出来干点别的;第二轮看看有没有现成的开源项目、控件等等可资利用,全部自己写未免太累。
3、在明确自己想要的是什么及有什么现成的东西可资利用后,剩下的就是怎么把这些东西结合在一起,以及不断在使用过程中进行改进了。好在我写的软件都是我自己要用的,所以最不缺的就是改进的欲望。
不过偶尔也有无心插柳,或你说的“灵感一现”的时候。前者如BitrateCurve,我当时只不过在论坛上看某些人整天为所谓“码率分配”吵来吵去,看到心烦,才顺手写了这个东东,没想到在测试过程中发现还可以用来检查RM文件是否完好。后者如Mpeg2Jpeg中的“图像平均”功能,当时我已经为视频截图的质量问题烦恼了很久,刚好有一次因为等人等得不耐烦就到书店里翻书,无意中翻到书上一句话,立刻有被雷劈到的感觉,一股热血直冲顶门,只觉得眼花、耳鸣,恨不得立刻飞回去写将出来。不过这些毕竟都是可遇不可求的事情,大多数时候还是要脚踏实地。

3.很多网友经常讨论开发工具的选择,阁下使用的是什么开发工具?为什么选择这款开发工具?

我网站上放的软件都是用VC++ 6.0开发的,听起来是不是有点土?我选择这款开发工具的原因很简单:
1、这些软件从来没有想过要在非Windows平台下跑,但在Windows下还要跑得尽量快,所以Java什么的就只能出局了。
2、我个人对Pascal语法比较讨厌,所以Delphi也出局了。
3、我比较讨厌写那些运行前先要安装、注册一大堆控件的软件,所以VB和基于.NET的开发工具也出局了。
4、在C++ Builder和VC++里,我觉得VC++应用更广泛一些,国外很多开源项目有VC的编译文件,没有C++ Builder的。
5、其实上面都是废话,只有这句才是真的:我从VC++ 1.0就开始用它了,以后也懒得换。现在各位知道我有多懒了吧?
从我个人的观点来看,单纯比较开发工具孰高孰低没有什么意义:每一种开发工具都有它产生的原因,也一定有它的适用范围,如果你的要求刚好与这个范围重叠,它当然就是好用的,否则就是不好用的,所以真正重要的是先搞清楚自己想做的是什么。

4.很多国产共享和免费软件的作者都是把绝大多数的业余时间倾注在了软件开发上面,能介绍一下阁下的开发环境么?比如开发条件(机器的配置啦),在什么地方开发,一般进行软件开发的时间段,是不是经常熬通宵?哪些人给阁下了一定帮助和关心?如果阁下是全职进行开发,也请详细介绍一下。

和馅饼一样,软件当然也不可能从天上掉下来。我网站上放的软件都是我用业余时间在家写的(没办法,老板不同意我用上班时间写)。以前投入的时间当然很多,深更半夜从床上爬起来抓张纸片狂写一通的场面曾经有过,不过为写软件熬通宵的时候似乎还没有:胡乱吹嘘的说法是因为我的手比较快,哦哈哈哈……真实一点的说法其实是我怕昏头昏脑下写出来的代码,将来改起来会比较麻烦。
不过现在不同了,现在LP才是第一位的,分配给其它方面的时间自然就少了,所以网站更新速度也慢下来。
因为我不打游戏,而且我一向认为如果开发环境太好,开发人员就会懒得对软件进行优化,所以我的电脑除了显卡、显示器一定要好(我对视力很在意)外,其它都有点得过且过的味道。我自己花钱买的第一台电脑是塞扬300A,一直用到看高码率电影会抖才去换了一台P4 1.8A,然后一直用到现在,中间扩了一次内存、换了两台显示器。机器当然都是DIY的,感觉比品牌机更放心一点。

5.我们注意到阁下的软件都是免费性质的,诚如您在2003年的《个人网站开张两周年纪念》一文中对开发不要钱软件的描述,现在已经是2006年,我们还是想提出你对这些问题的看法?为什么开发免费软件?如今在你写的程序中,自己最常用的是哪些?觉得写得最爽的程序又是哪些呢?

仔细读了一遍原文,发现如果现在再写,写下来的文字还是会和当年差不多,所以就不重复了。不过“不要钱”的理由还可以补充一个(当年好面子,不好意思公开写出来):我太懒了,嫌一个一个收钱、卖系列号实在太麻烦,所以干脆偷懒。

6.阁下的很多软件,如视频图片截取工具,都按照不同的视频格式做了不同的工具,有处理avi的、有处理mpg的、有处理rmvb的,有没有想过把很多类似功能的软件合为一个大的解决方案工具包?

早就想过,连实现的技术路线都想过,相关源代码也顺手收集了一些,只不过这个世界上还有很多比这个更有趣的事情在等着我去做,更重要的是我自己现在暂时没有这方面的需求,所以一直没有去做。

7.在开发过程中遇到了哪些困难?是如何解决的呢?开发中感触最深的事情是或是一些感悟是什么呢?开发中遇到什么有意思的事情不妨也告诉我们哦。

在开发过程中最常碰到的困难当然还是技术上的难题,有些软件因为技术问题,我已经N次想过要放弃了,最后还是因为没有更好的替代品,只能咬牙做下去。这股狠劲大概是当年在学校里打牌(健康扑克,绝非赌博)练出来的:不管抓了一手什么样的烂牌,只要开牌就只能打下去,缴枪投降的不行,胆小鬼的出去。
解决问题一般是先到codeproject、codeguru等网站看看,再来就是google。好在我的英语还凑合,搜索、浏览国外网站都没有什么问题。
要说感悟,还是那句话:爱好的力量还真是无穷啊!所以偶尔我也会觉得遗憾:为什么我的爱好不是“发财”这码事呢?

8.打算将来在软件的哪些新功能上进行增加和改进?或者有有了什么新的突破方向呢?

这个不太好说,新的想法随时都会出现,但是时间和精力是有限的。
将来可能的方向大概还是多媒体、数字图像处理、电子出版,毕竟这些和我的爱好有关。

9.在程序开发、软件销售的过程中有那些经验和教训呢?

最想说的只有一条:己所不欲,勿施于人。
这句话说白了就是:一个软件如果连开发者本人用着都不爽,千万不要强迫推销给别人。这道理其实人人都懂,但是这些年来软件业还是出现了太多的反例。虽然大家(包括某些时候的我自己)都用“生活所迫”做借口,但是电影《无间道》里有句台词说得好:“出来混,总有一天要还的”。

10.谢谢接受我们的采访,预祝软件越做越好。别忘了给我们一张您的照片哦:)。

谢谢!也祝你们的栏目和杂志越办越好!所附照片是04年夏天在绍兴兰亭照的,马马虎虎还算近照吧。