写程序,10年了

昨天,一位朋友问我什么时候开始写程序,我想想,我正式开始写程序应该是1997年。突然,发现我写程序,10年了。这是要博文记录10年程序经历的。

1997年,我初中毕业开始读高一。初中的同学董汉武,已经玩电脑两年多了。记得我也跟他一起玩的,也写程序,不过呢就是那种我自己也记不得干过什么的程序。高一继续和他一起玩电脑。他和计算机房的老师比较熟,他居然还拿到计算机房的钥匙,所以这是我们最大的自由。一开始玩,我玩QBasic,又叫Quick Basic吧,写了一个程序,用程序画了一个我校徽,也就是每个人胸前都佩戴的校徽,记得这个校徽是圆形的,图案是校门口的抽像。画好了校徽,不忘签上自己的学号!记得这个程序耗了两三周的时间。不过,如果用Windows 3.1的画笔来画的话,这个不会耗太长时间,董汉武后来画过。

既然开始了写程序,就什么都学了。开始慢慢觉得QBasic没啥意思,开始接触Turbo Pascal,那时候用的Turbo Pascal 6.0,后面也用过Turbo Pascal 7.0,那时觉得Turbo系列真的很炫!居然在完全文本窗口下有那么好的编辑器!而且编译集成也非常好用,速度也非常快,比Basic系列快多了!Turbo系列学起来也挺快的,后来,我喜欢上了图形系统,也就是自己从最低层的画点划线开始写图形库,这时间接触了一些现成的图形库,研读其中的代码,开始接触汇编代码,也开始接触C代码,使用Turbo C 2.0,不过觉得没有Turbo Pascal来得爽。其中图形库的一些代码还是挺有研究价值的。譬如画一条直线,为什么不是用直线方程来画,而是采用计数的方式来画点,而画圆,则为什么不是用Sin/Cos函数来算点,而是用另外一个看似很简单却令人费解的算式来算,而椭圆的算式更为复杂。这些当然是到了高二时我才搞明白,因为高二那时,我超前读了一些高等数学中导数微积分之类的章节,也开始领悟了离散数学的一些理念,所以后来我我能够自己推导出画圆、画椭圆的算式,但是画出来并入别人的那些公式好。现在想来,估计当时没有给出判断点的优劣函数,从而只是划出了形状。

另外,那时候,我和董汉武,还有莫奇,会参加一些计算机竞赛,不过我成绩一般。董汉武,则成绩不错,后来还参加过大赛。当然,我记得我们私下也会进行比赛,譬如,高二一段时间,我们很流行五子棋游戏。即使上课的时候,随便两人拿本几何的有小格子的作业本,就可以开战了。所以我和莫奇决定在电脑上也写一个五子棋的游戏。莫奇很快就写出来了,他用的是计算格子价值的算法,用图形系统。我写得慢,我用的是策略算法,用的是文本下的格子方块。 后来都写出来,叫同学过来玩,有输有赢,当时挺开心的。后来我和莫奇,决定让两个程序对走。由于没有程序间的API,所以我们人手帮着两个程序走。记得当时也是有输有赢。我们俩都是挺高兴。这可是我们的Golden Days啊!

当时,除了写游戏来玩之外,还是会找经典的游戏来玩,记得玩过的游戏有,三国志、围棋,还有不得不提的《仙剑奇侠传》。当时我们完全被仙剑所折服,多年以后依旧还想重玩此款游戏。

此后,是高三,迎接高考,不太玩电脑。

考上大学后,又继续开始玩程序。 此时已是2000年,网络在中国大地上兴起,特别是在大学校园里。除了网络聊天之外,我又重新开始熟悉程序,还是从Turbo Pascal开始,由于之前的程序片断丢失,我重新按照原来的思路,再次写了一份五子棋的程序。而且这份程序,最后还被我转成JavaScript程序,从而顺应网络化的潮流还保存下来。写了五子棋之外,我还写有关分形的程序,也是挺有趣的。再有就是开始接触Borland C++,开始Windows程序,在2000年底开始玩网页,很快就着迷于HTML/CSS/JavaScript技术,2001年暑假,写了很多JavaScript/CSS网页特效,还做了个人主页,现在回头看那些网页,依旧觉得挺花哨的。同时开始学PHP技术,慢慢也接触ASP技术。课程安排,还学数据库,C语言等。由于一些实践活动,还学习XML、XSLT等技术,同时开始Java之旅,啃了《Thinking in Java》,也开始读MSDN文档。这时候也玩一些小游戏,在CSDN论坛上闲逛,也算是那时候的星级人物。大一大二这些时间,学得东西很杂,没有编写什么。记得用ASP写过我自己的“应数论坛”,还有写过ASP上网络对战的五子棋,也有IP查询数据库的应用,还写一个“爱情因子层次分析法”的网络程序,用于帮浏览者分析两个人的爱情系数的,当然自己也试了好几把。其中很大部分程序都是基于HTML+数据库的应用,用于记录我的一些信息,还有提醒功能的Alarm,有时候,我现在还用。大三上,参加“大学生大学联盟网站”的建设,当时我有一些主意也是蛮新鲜的,譬如“网摘”概念,只是当时我叫“网聚词汇”,不过当时没有推广开来,而是一两年之后书签管理、网摘管理风行网络!大三下学期,开始写聊天程序,首先是一款基于“Net Send”协议的聊天工具。后来在大三的暑假,我决定花时间,用MFC结合IE浏览器控件,设计传输协议,设计数据保存,涉及UI交互等,花了近两个月的时间,写了一款聊天工具。我可是说那时一款功能非常齐全的聊天工具!不过这款聊天完成之后,没怎么用。这是我设计最为失败的一次程序作品。无论怎么说,这款作品是我程序生涯的一个里程碑。

大四,考研之后,我根据考研复习期间的一些主意,决定写一款用于记录自己想法的记录工具,用现在词汇说,就是一款Blog工具。包括MySQL数据库设计,基于Eclipse SWT的客户端 ,Tomcat服务器端,Lucene全文检索,和JDO,以及浏览器端XSLT展示。这款工具我当时命名为“wNote”,后来名字一直有变,譬如叫“whizz ideas”,后来又叫“wHizz? Notes”,这款工具是我用的时间最长的一款自主设计工具。一直用到今年(2007年)的4月底。最后我终于不再使用了该工具了,所记录的4000多条记录,则现在全部转为静态HTML网页,放在 http://notes.zhourenjian.com/。这款工具开发所涉及的时间段很长,也有很多尝试。可是说是我成长中比较关键的作品。

大学毕业了,由于对Java和Eclipse SWT的迷恋,我进了IDSignet,一家做数字签名的小公司,开始学Eclipse GEF作表格设计,后来用上了自己的老本行,把这些设计出来的XML表格,通过XSLT转换到HTML,再用JavaScript和Java Applet结合得到支持数字签名的在Browser展示的Web表格。工作之余,涉猎Web Services、SOA之类的技术。后来一年工作期满,转到Primeton普元,做文档工具,报表开发,还开发网页版的规则编辑器,还做过邮件客户端插件,卡片分享的Web 2.0网站。工作之余,曾尝试用C++在Linux下写一个基于RDF思想的数据库,并结合Apache httpd server进行展示。不过该项工作完成了基本功能的验证之后,由于工作调度,精力分散到其他事情上,搁置了。还尝试写过一些MFC和浏览器控件结合的程序,不过都没有完成。之后,2005年10月份,开始我开始写一个开源项目Java2Script,之后几乎我所有的业余时间都耗在这个开源项目上。

2006年3月离开上海普元,专职写了3、4个月的Java2Script代码后,转到目前所在的上海科泰世纪,作手机操作系统相关的开发。期间,做过的事情包括CAR(一种面向构建编程语言)的语法解释以及编译,CAR编辑器,之后又做手机模拟器通过Agent进行远程调试的开发。期间,我还在做Java2Script的开发,比较有名的是今年三月份出版,现在8月份再版的JavaScript版的Google Talk,也就是把Google Talk的桌面版,拷贝为浏览器中的JavaScript版,而其中的大部分界面布局等都是几乎一模一样。

这就是我的10年程序生涯。想想,10年真快!变化真大!重新回到1997年,我怎么也想不到10年后的我会是通过Java2Script技术写的JavaScript版的Google Talk。而同样,现在的我也无法想象10年后的我做的又是什么事情。

10年!

This entry was posted in 思考, 曾经岁月, 朋友. Bookmark the permalink.

10 Responses to 写程序,10年了

  1. says:

    张江男~不愧为张江男
    标题吓了偶1跳

  2. 周周 says:

    可以写本书了,

  3. 周周 says:

    十年 怎么丢了2个字

  4. 周仁建 says:

    感情,如果十年了,倒是可以写成书,娱乐大众。

    十年,只丢了两个字

  5. 老姐 says:

    老弟,真棒!继续努力!!!1

  6. lucia says:

    原来学计算机的人是这样的

  7. Pingback: 周仁建寻找生活 » Blog 存档 » 今年徒弟,多收三五个

  8. jiangli says:

    我已经六年了 ,还是个菜鸟

  9. QQ719227297 says:

    请问在现在的计算机上怎样写C++代码画一段直线

  10. 周仁建 says:

    @QQ719227297
    现在计算机的图形芯片已经很强了,你已经不需要考虑现在怎么画一段线段这个问题了。

Leave a Reply

Your email address will not be published. Required fields are marked *