123Variety百味提起PDF,大家的第一反应便是Adobe。而近年来,一款拥有自主知识产权的名叫Foxit(福昕)的软件迅速崛起。熊雨前就是这款软件的制作者。他15岁考入中科大少年班,毕业后先在中科院工作,后来辗转于美国硅谷和中国之间,并将福昕软件打造成了全球第二大PDF软件厂商,而无论在哪里、处于什么位置,他都保持着对技术的特别感情。《程序员》近日对他做了专访,请他来分享自己与众不同的程序人生和感悟。记者/董世晓PDF里的中国力量福昕软件总裁熊雨前专访少年得志《程序员》:能读中科大少年班的一般都会被认为是天才,你是怎样一步步进入少年班的?熊雨前:我从不认为自己是天才,但能读少年班的同学,确实都有一定的机缘。那是1985年,我在读高二,父母的同事偶然提到说可以让我提前报考少年班。虽说有点不情愿,但想着能有避免参加高考这个痛苦的阶段,我便欣然接受。但又想到每年有那么多人报考少年班,所以只是抱着试试的心态,结果竟然就真考上了。虽没有什么压力,但有时脑子会不自觉地去憧憬一下将来的生活,加之必须要在高三前提前考试,要临时突击高三课程,所以有时上课会走点神儿,专心程度大不如前。终于,在一次英语课上,老师问了我一个问题,而我压根儿都没听到问的什么。于是老师狠狠批评了我一顿。这件事情让我体会到专心的重要性,毕竟,如果连问题都不知道是什么,又怎能获得正确答案呢?在最后一场英语考试中,开考不到半个小时我就趴那儿睡着了。监考老师很是着急,以为这小孩考晕了,赶紧去买了冰镇绿豆汤叫我起来喝。我说已经做完题目了,又不敢提前离开考场,所以就想趴会儿,没想到睡着了。而实际上,英语是我的弱项,正是由于无压力的心态,让我考试时超水平发挥,感觉所有题目都像见过似的,得到了高分。总而言之,各种机缘巧合让我考上了少年班。《程序员》:在少年班的经历怎样?熊雨前:大学入学前,有次逛新华书店时,我生平第一次见到了编程书——日本NEC出的一本如何使用其产品进行Basic编程,这让我直呼神奇:这应该是人类历史上发明的最好的工具,它能处理信息,并且比其他工具都更灵活和强大,所以我对计算机就产生了非常浓厚的兴趣。于是欣然收入囊中。假期里面我苦读此书,甚至在去少年班报到途中的一天一夜的江轮上,也不忘钻研。那时中科大算是大学里面条件比较好的,有自己的机房,少年班正好也买了一台小型机,所以我每天都去上机。后来老师索性把机房钥匙给我,让我做机房管理员,于是我更放肆地很多时候通宵在那里。这样放肆的后果,就是放松了其他学业,要不断补考,并致使我读不了研究生,因为那时读研究生有特别的要求。但我无怨无悔,因为学到了更多。这一晃就是三年。事实上,少年班的头三年不用定专业,我先学了生物和无线电,但生物死记硬背的东西太多,无线电太不可捉摸,最后才由个人兴趣而选定计算机。在少年班里,我不像绝大多数同学那样从小就刻苦学习、被提前安排好成长道路——要去考少年班,要少读几年书,要往前跳级……我觉得这种做法好像拔苗助长,所以历届少年班都或多或少会有人出点心理问题。但这并不是主要的,现在看来,我们班同学大部分都事业有成,都能融入社会,并且在各自领域做出成绩。124Variety百味《程序员》:那你自己做的第一个程序是什么?熊雨前:刚到少年班时,第一次做汇编语言编程使用的是一台8位6502CPU电脑。6502CPU是20世纪80年代初由几个工程师自己捣鼓出来的一款传奇产品,在设计时由于没有现在这样的集成电路设计工具,所以全部设计都是在纸上画出来的,结果按照设计图做出来的芯片,第一次就通过所有测试,也就是说设计图里面一个Bug都没有,完全达到了他们的设计需求!因为6502CPU性能稳定、价格便宜,所以直到现在还有很多器件在用它【注:例如文曲星等电子产品】。记得当屏幕上显示出来字(应该不是“HelloWorld”)时,我万分激动,感觉虽然不知道机器里面到底发生了什么事情,但我可以控制它做我想要它做的事情。后来有了非常高级的APPLEII电脑。APPLEII拥有一个简单的操作系统,包括文件处理、Basic编程语言等,所以用起来比要6502那种接近祼机好用得多。我把APPLEII操作系统的所有机器码打印出来,花了半年时间把每一行代码都看懂了,还写了解释。经此一役,我对计算机体系结构有了深刻的理解,以至于后来我们做图形图像技术研发、面向移动平台做平台无关技术开发时,都能从最底层去分析整个系统。《程序员》:在课余时间,你有哪些爱好?熊雨前:我不太喜欢社团活动,所以不上机时要么睡觉,要么去图书馆。在图书馆的日子里,我对《红楼梦》产生了兴趣,把所有与《红楼梦》有点关系的书都看了个遍。因为我发现《红楼梦》的整体写作架构里有编程的意味。曹雪芹并不是想到什么就写什么,而是先做了纲要,清晰列出每个人的主线和副线,再把人物和剧情嵌入进去,划分依赖、因果、并行、综合等各种关系。当然,我发现原作还是有些错误,出现了前后矛盾。我相信如果有计算机帮忙的话,曹雪芹应该能写得更好,不会出现错误。《程序员》:那你有没有想过要做一个没有错误的版本出来?熊雨前:这非常难,而且也不是程序员能解决的。因为它不仅要有高超的写作能力,而且要有非常好的想象能力,同时还要对所设计的故事场景、社会现实和人物心理有非常好的了解,特别是人物心理是会变的。曹雪芹把这种变化写成让绝大多数人认为是合理的变化,并且留给后人非常大的想象空间去探寻和考证。而如果让计算机来处理一件事情的话,结果只能是相同的反应,也就是没有变化。熊雨前建议要从个人兴趣和擅长领域出发选择创业方向125Variety百味《程序员》:后来还写过哪些印象深刻的程序?熊雨前:第一个是在大学,出于兴趣爱好在业余时间写了一个画国画的工具。因为那时计算机图像引擎还比较差,所以展现效果并不太好。但它给我的感觉非常不错,毕竟像我们这些不会画画的人,也可以用这套工具画出来点山水意境。第二个也是业余时间做的DOS环境里的类似于Windows的图形界面开发工具包,包括窗口管理、设备管理、输入输出管理、内存管理、多任务管理等。到美国之后,还把这个工具包卖给了当地一家硬件公司,因为那时还是DOS的天下,而DOS应用基本上都是基于文字的,用户体验不好,Windows3.1刚出来虽未普及但其界面已受到欢迎,这家公司就想写一个类似界面的配置程序,而我的工具正符合它的要求。虽说现在已没有人在用,但通过开发它,我对用户交互体系架构有了清晰的理解,并最终益于福盺在不同平台包括嵌入式设备上进行编程。反观现在的很多程序员,只是会用一些高级编程工具,对系统底层的技术细节并不了解,这不是一件太好的事情。硅谷游历《程序员》:Windows图形界面开发工具包可以说小试牛刀,再加之当时正处在从DOS向Windows转换的过程中,不乏一些机遇,有没有想过去微软或者相关公司工作呢?熊雨前:那倒没有。从少年班毕业后,我先在中科院工作了4年,主要做国家天文台的天文图像处理。一段时间以后,我发现只是服务于天文图像处理这样一个很小的领域,而我希望做的软件能为各行各业服务,能为千千万万人所使用,这也是程序员共同的梦想。同时,我发现国内软件,特别是通用软件,没有太大市场,而美国硅谷是软件人向往的场所。于是,我决定去硅谷考察一番。时值1994年底,美国经过1992-1993年的经济衰退期,已然复苏,到处是招人的公司。在硅谷的前两年,我在一家公司担任技术总监,做Windows和Unix之间结合的一个小工具,业余时间向同行学习最前沿的通用软件开发技术。后来发现这份工作与我的兴趣相去甚远——我对网络和商业流程相关的方向更感兴趣,加之在国内已做了一些网络通信方面的事情,所以在1996年,我加入一家电子商务公司,平常做的事情就是写网页和数据库应用,这一干就是5年。我们公司做的是B2B电子商务,相对比较成功,积累了一些客户,获得到了很多投资。当时互联网虽然热闹,但没办法挣钱。1999年,我回到国内,为这家公司在北京创立研发中心,人最多的时候达到200多。2001年,互联网泡沫破裂,公司做不下去了,北京研发中心被裁撤。离职之后,我休整了半年,然后下定决心,创立福昕软件。《程序员》:美国的创业气氛非常浓厚,你是什么时间萌生创业的念头的?熊雨前:到硅谷后,才能切身感受到计算机领域的瞬息变化。在硅谷,一夜暴富绝不是神话,每天都有每天都有新产品问世,一款产品就能产生一个亿万富翁,而且创业也可以实现做的东西让千千万万人使用。于是,我慢慢地想创业了。实际上,在电子商务公司的5年时间里,我工作之余做了一个创业项目,开发了全球第一款在Windows95上支持不同字体的终端仿真器。几经升级,这款产品至今在美国仍有较大的用户群。决定做终端仿真器,还有一个有趣的故事。之前我在国内花6个月做了一个文字终端仿真器,卖给一家机构,并在里面加了一个Key,限定了安装数。结果它安装超量后,仿真器就不好用了,跑过来要求退款。当时国人可能就有这种概念,觉得软件不值钱,买了软件就可以无限使用。苦于没有合适的项目,想想何不试试改造一下这个呢。就用周末休息的时间历时半年把这个终端仿真器做了个Windows图形界面版,然后放到共享软件网站上去卖。结果完全出乎我的意料,有不少企业对它很感兴趣,因为虽然很多员工已使用个人电脑,但很多关键业务还是放在主机,比如航空公司还用文字终端做订票/出票系统(就是敲各种各样的一般人不懂的那些指令)。免费试用30天之后的付费率非常高,于是我找了前同事来做推广,他就跑到各个网站、论坛去上传、发帖,紧接着注册了公司,办公室设在他自己家里。没想到,就是这样一个200多KB、标价39美元126Variety百味/份的小程序,第二年竟卖了一万多份。扣掉各种成本,分成后的钱比我辛辛苦苦工作挣得还多,而且我要做的只是处理一下客户报来的Bug,基本上不花什么时间。这个小程序最多一年卖出了一万五千份。所以这个终端仿真器是我严格意义上的第一桶金,靠它可以买房子。但很快我们就意识到,它只是一个过渡性的产品,慢慢地,很多公司就把原来基于主机的应用转换到基于互联网的应用。不过,我要非常感谢这个程序,虽然挽救不了它衰落的趋势,但一直有客户在付费试用,从而才有持续不断的来源,帮福昕度过了最困难的头几年,没有它,工资都很难发出来。直到前两年,我们才最终把它下线。首次创业的经历,让我熟悉了软件从开发到赢利的流程。软件开发流程简单,不需要太多资金和经验,只要把产品做好,自然有人愿意掏钱买。做自主研发的PDF核心技术《程序员》:那福昕为何想到的是做PDF技术解决方案?熊雨前:有这么几个原因。首先,我们当时用AdobeSDK做了一个Acrobat插件,想放到AdobeReader进行售卖。但这需要Adobe授权,在我们咨询好久之后,Adobe才给回复邮件,说要先押5万美元在它那儿,然后我们每卖一份就要交百分之几的授权费。而且,授权只针对当时的AdobeReader有效,每升级一个版本就要重新授权。从那时起,我就暗下决心,要想不被别人牵着鼻子走,就必须自主研发。其次,我们对做PDF技术解决方案进行了分析,发现:首先,PDF是一个公开的标准,不仅技术细节是公开的,而且不存在任何法律授权问题;其次,PDF涉及的技术非常丰富,而且恰好是我们所喜欢和擅长的底层技术;再次,PDF技术门槛比较高,不是谁想做就能做得来的。于是,最终我们选择了转向PDF这种国内软件行业少有涉足的、世界通用的文档交换标准格式。我们完全凭自己写了一个完整的平台无关的图形图像引擎,PDF的每一个象素都是自己算出来的。《程序员》:福昕从做PDF技术解决方案至今,技术上遇到了哪些困难?熊雨前:我们事先了解到PDF技术门槛高,但没想到那么高。在开发过程中遇到了各种问题。首当其冲的便是对标准的理解问题。例如为保证PDF的安全,有设置加密和签名验证机制等安全协议。我们的程序和Adobe总会出现各种不兼容——互相打不开文件、报密码错误或者签字无效。我们当时的理解是公开的PDF技术细节还是做了一些保留,慢慢地才发现并非是故意保留,而是写标准的人和按照标准去开发的人不是一个团队