我与电脑的十年
(其实都11年了,除去中间耽误2年,也差不多了...)
我的电脑一直都是自学。其实我在想,如果有老师,或者一个较好的环境,现在肯定也是个牛人了,呵呵 ^^
93 年第一次接触和迷恋上电脑,是在附近商厦的一个暑期电脑展销会上。当时一共也就摆着 7 、 8 台电脑,好像都是 386 吧,不过显示器都是彩显 最关键的是我看见一群人围着其中一台,在玩《大富翁2》,还有一个人在玩赛车。说实话我在 TV Game 里从来没有见过这么漂亮和好玩的游戏:)
随后在我的死缠烂打下,我终于拥有了自己的第一台电脑,一台估计是淘汰下来的 IBM XT 286 (3000 大洋呢,当时肯定是被黑了 )、主频只有 8.7Mhz , 640KB 内存(连 1Mb 都不到 … ), 1.2Mb 的软驱, no HDD ,显示器是绿色荧光的 MDA (只有这么一种颜色 … )
但就是这么一台极其简陋的电脑(照现在的眼光,都不知道算不算得上是电脑 … ),却给我展示了一个全新的世界。当时面对这样一台冰冷死板的机器,自己感觉就像是上帝,可以完全主宰和控制它的一切:)
好在当时的游戏都很小巧,一张软盘还是能放下,而且机器要求也不高,就是载入的时候要花个 1 、 2 分钟 其中有一款叫《波斯王子》,那个时候的玩家应该印象比较深,也算是非常经典的游戏了。
买电脑的时候,商家送了一张软盘,是台湾松岗教育出的一个 Basic 入门软件。在当时软件极度缺乏的时代,我只能把能玩的都玩起来,跟着它学起了 Basic^^ 一个小孩子当然不可能拿它去做数学方程或者科学计算,但是能够让机器里唯一的喇叭 play sound ,能够在屏幕上画画,也是非常有成就感了。
我相信很多人的电脑经历也都和游戏分不开。后来终于明白编程是什么以后,我就开始琢磨着自己写游戏。这种冲动一直持续到今天。
一年以后终于鸟枪换炮,买了一台在当时还算不错的 486DX2/66 。可以玩的游戏也多了起来 ^^ 那时CD-ROM 才刚出现,我们需要软件或者游戏,都要到王府井或者地安门那边去拷贝,一张软盘拷贝一下就要 10 块钱 -_- 不过也认了,没有软件,电脑也就失去了灵魂嘛 ^^
这时候接触的游戏开始多起来,有些难度也上来了,为了省事,只好开始研究游戏的修改。当时要么借助于一个叫 GB 的游戏修改工具,要么就是用FC对比游戏的两个存盘文件,然后用 DEBUG 修改相应地址上的数据 。
Basic也逐渐体现出了它的局限性,例如无法编译,不能直接对内存和硬件进行操作。我认识到要完成我的游戏,得学习更牛一些的东东了,也就是C语言和汇编语言。可是我始终找不到它们的学习或者编译工具(DOS里的DEBUG 功能太少了)。有一次我在中关村看到有人在安装 MS C/C++ 7.0 ,13 张软盘。但他们告诉我这是要花很多钱的 不知道那个时候中国是否有盗版。。我的第一次学习C和汇编的计划就此泡汤。失去了在DOS环境里熟悉汇编的机会。以至于今天它们仍是我的弱项 -_-
直到上初中以后我才搞到了Turbo C 、Turbo Pascal, 还有Quick Basic 和VB 。于是把C 和Pascal 都学习了。
这个时候我基本上还只是停留在学语言的水平上。当然这种学习也给我带来了一些好处。比如我的English,比其他人要好许多,而且比较轻松。还有就是对数学很感兴趣,比课本上学的要多很多^^
整个初中阶段非常地轻松,所以有很多的时间做自己的事情。其中一项就是把当时能见到的游戏都玩了。还写了一些游戏脚本、设定和剧本。游戏我所爱,电脑亦我所爱,一切都那么顺理成章:) 但最终我还是没有写出一个游戏,甚至连最最简单的RPG Demo都没有。因为当时的这方面的资料实在太少了,一个人闭门造车肯定是不行的。而且没有一个交流学习的环境。现在想想,在网络流行以前,我们的生活多么闭塞啊。
96年底的时候我在《PC Magazine 》上看到一篇关于IOI 的报道,才知道原来还有个信息学奥林匹克竞赛。于是更加拼命地学数学。结果到了高中,我们的学校什么比赛都组织,唯独对NOI 和 IOI 没兴趣:(
97年到99年,由于发生了很多意外,基本上没有再碰电脑。直到父母攒钱重新配了一台赛扬300A 。然后参加市里比赛奖了一只猫,开始我的网络生活。
刚开始触网的时候,充满了好奇,聊天室、留言板、电子邮件、个人主页,所有新鲜的东西,差不多都去尝试了。在PCICQ 里结识了第一批网友(当时它比腾讯的OICQ 好用多了)。然后学习HTML ,做个人主页^6^
2000 年的时候,我在校园网认识徐。他当时想请我一起搞一个地方性的门户网。但是在我们接触后,又产生了很多新的idea 。以至于整个plan 越来越庞大,甚至和最早的初衷完全不一样。这个就是 PopCity :一个功能完善并且人性和多样化虚拟社区系统。其中很多的设计和理念在当时的互联网中都是领先和独树一帜的。比如虚拟的货币和商务系统,丰富的社会关系和表现形式,以及多样化的娱乐功能。这是一个非常大胆和令人激动的想法。所以我们一致退学参与到PopCity 的开发。
直到这时候,我才真正利用电脑去做一件事情,真正去开发一个系统。第一次做动态网站,我选择的是CGI (其实当时PHP 、ASP 甚至JSP 都出来了 -_- )。学习 Perl 花了不少时间,发现用它来开发效率实在不高,而且繁琐。后来好不容易在温州找到一本关于ASP 的书籍,才确定下来使用 ASP+SQL Server ,还有Flash 。这些东西以前都没用过,于是边学边做。基本还算顺利。
那一年高中生退学好像挺多。我们的事引起了不少媒体的兴趣。不过他们关心的都是教育案例,而不是 PopCity本身 。后来我们总结,如果当时能好好利用传媒宣传已经造成的广大影响,并且坚持做出PopCity 的最原始 Demo ,然后找到合适的投资,还是非常有机会成功的。但我们毕竟还是错过了。7 月份,我们去北京寻找投资未果,在参加完中央台的一个节目后,便停止了这个project 。
高三的时候我回学校完成了所有的会考,也就是拿下毕业证。又再次退学,回到北京,开始了我的职业生涯。到现在又快四年了。
我认为真正对我产生比较大影响的还是 Java 和 .NET 技术。全是出于个人兴趣,而非公司项目。我学 Java 时,公司使用 ASP 。学 .NET 时,公司在使用 VB 和 JSP 。这个时候我其实已经有了足够的积累。熟悉 Java 只用了一个星期,而 C# 甚至都没学,拿起来就是直接应用到项目的。
Java 及其 OOP 一度让我很着迷,以为终于找到了一种可以深入研究下去的技术。当时我是 Sun 阵营的坚实拥护者 ^^ 但不久以后参加 TechED 以及我自己对 .NET 的使用,发现它用起来其实比 Java 还要爽。而这两种技术又是如此相似!除了基本类库不同,主要语言略有差别。.NET 几乎继承了 Java 的所有优点,而且还有不少新的特性。所以我又转头微软怀抱,但同时没有放弃 Java^^
不同语言和技术平台/ 框架,这个时候已经没有什么区别了。都变成了我手里的工具 。也就是这个时候才开始真正有点领悟什么是技术。因为以前的积累已经让我到了一个高度,可以把很多东西看得很清楚。所有新的技术都不是突然蹦出来的,而是基于很多以前的技术所演化和改进。我看到了一条Time Line ,知道了每一种技术,它是怎样出现的、为什么出现,而它又是为了解决什么样的问题。比如从 OLE 、 ActiveX 到 COM+ 、 WebService ,从 HTML 、 CGI 到更高级的 ASP/JSP ,从 Java 到 C# , J2EE 到 .NET Framework ,都是如何发展的。
接下来做了很多项目,对纯粹的 coding 已经感觉不到什么乐趣和挑战。于是开始关注思想和方法,而不再是技术。计算机本身也是工具,是用来解决各种各样的问题的。关键的还是你对问题、对真实世界的理解,说白了就是需求和分析,还有就是用什么样的方法、什么样的工具去解决它,也就是设计和制造。当然最后还要看它是否正确。
很程序员可能都困惑过技术的发展终极是什么?是无休无止地 coding ?是无休无止地跟在新技术屁股后面?还是出现大一统的终极技术,可以解决全世界任何问题?这只可能是乌托邦。其实我们根本不用去考虑技术到底会发展成什么样,我们只要做一件事情,就是驾驭技术,而不是被技术驾驭!技术和机器是死的,但人的思想是活的。
曾经有一个在 IBM 工作了 20 多年的日本人来给我们讲业务和设计。 20 多年!国内有一种声音,说程序员做到 35 岁就要做别的,或者说做技术做到 35 岁就差不多了,再做下去是没有前途的。其实如果你可以驾驭技术,你完全可以像那个日本人一样,做 20 年, 30 年,一直做下去!
BTW : 2003 年我又尝试用 VC++ 开发游戏,好像还是达不到那个水平 -_-