太阳是黑色的

少年听雨歌楼上,红烛昏罗帐.壮年听雨客舟中,江阔云低断雁叫西风. 而今听雨僧庐下,鬓已星星也! 悲欢离合总无情,一任阶前点滴到天明.

Archive for the ‘在键盘上冥想’ Category

感觉差了很多

今天从书店买回来了一本叫《游戏之旅——我的编程感悟》的书,一方面因为作者是国内知名的网络游戏“梦幻西游”的作者,一方面也因为作者年纪轻轻却已经背负上了“大师”的称号,让我很想知道他的成长经历。

整个晚上都在翻看这本书,没有仔细抠每一个细节,不过在翻完了整本书以后还是很有感触,也很兴奋。作者基本上是自己的同龄人,诉说的故事和经历也是我很熟悉的。虽然从作者谈论的很多东西看出,作者的确还不是能够完美解释编程领域的很多东西,而且关于开发流程和开发经验的东西也略显单薄,但是正本书给我的感觉仍然是流畅和诚实的,说自己知道的东西,而不说自己不擅长的东西。

作者的经历勾起了我很多的回忆。和作者一样,我也是从苹果的电脑起步的,甚至作者介绍的“中华学习机”,我也曾经用过了很久。只不过,作者的QBASIC,换成了我的LOGO。

而我和作者也是同样在中学加入了信息学奥林匹克竞赛的队伍。和作者不一样的是,我最终也没有得到一个理想的名次。当然,我也和作者一样,受益不少。

说起来,很多方面我都比作者差远了,因为种种原因,我没有能够像作者那样狂热地去编程。所以,至今都没有太大的长进。而且我也没有那种精神。这也造成了我最近一两年,本该快速提高的两年,耽误了不少。

我最近也想写一些东西,然而我现在发现,还是缺少积累。慢慢写吧。

GOOGLE的魅力

如果说以前还没有体会到GOOGLE的强大能力的话,那么今天我的确有一点吃惊。很早以前就知道了GOOGLE的Earth和Map技术,特别是这两个产品还催生了所谓的AJAX,使其成为当今最火热的Web开发趋势。不过我今天要说的是地图搜索所带来的一些东西。

很多人热衷于看到了美国军事基地的飞机。的确,我看到了令人恐怖的飞机数量和巨大的机场。也看到了北欧的大片森林。不过我想说的是,这背后带来的深刻变革却是非凡的。人们的视野变得无比开阔。我们再也不用担心自己看不到遥远的地球另一端。我们几乎可以查到想要去的地方的门牌号码。

技术带给我们的不仅仅是一种快乐,更多的思考问题方式的变化。我们从来没有这样去看自己的星球。而人类则变得无比渺小。 

我们中国的开源

说实话,我们中国人根本就不配谈论开源。在很多人的心里,开源就是免费。免费的东西就是拿来以后不通知任何人占为己有的东西。我们的理念就是,看到一个好的开源软件,然后改装改装,就成了我们的作品。之后的事情就是拿出去卖钱。

从本质上来说,开源的意义是在学术上的,而并非商业模式上。我们国内很多人叫嚣开源,可是却没搞清楚学术的开源以及商业开发的开源之间的区别。对于很多使用者来说,使用一个软件不会去关心这软件本身的意义,更关心这个软件究竟是否好用。同时,用户最关心的还是,谁会对这个软件的行为负责。所以,任何一个开源软件如果要投入到市场就必须有一定的商业模式,在这个商业模式之下,有人对这个软件负责,这样才能使这个软件得到健康的发展。我们不能寄希望一个普通用户因为操作系统的问题就到一个开源开发社区去询问,这是非常不现实的。同样,,可以修改源代码对普通用户来说,一点吸引力都没有,相反地是,还给用户的误操作买下了隐患。

国内的程序员对开源社区的贡献非常少,却想从中得到最大的效益,这本身就说明了我们的心态存在某些问题。事实上,开源软件成功的地方商业软件业非常成功,美国很多大公司一方面在商业模式上走很远,一方面又支持开源运动,这本身就不矛盾。可是我们为什么非要去强调开源而去贬低商业模式呢?

我们现在最重要的是,不要去讨论开源不开源,GOOGLE的东西都不开源,但是都具有非常高的水准。创意才是最重要的。微软从来就不支持开源社区,但这不妨碍他们的产品同样具有开源社区的那种自由。

光讨论开源没有意义。

今天终于完成了语法分析器

今天终于完成了SLR(1)语法分析器生成器的程序。应该说这个程序我写得还算比较顺利,不过也将近800行代码,如果加上分析器估计还是要有1000行代码左右。尽管最开始的时候,我不太赞同用编写生成器的方式来进行编译原理的课程学习的实践环节,不过,经过编写了词法分析程序生成器和语法分析程序的生成器以后,我觉得还是有很大的实用价值的。比如,在很多语言中支持正则表达式,而要动态的进行正则表达式的分析,无疑需要生成器程序的支持。所以,这半个学期以来,我觉得还是很有收获的。

终于完成了词法分析的生成器

今天终于完成了词法分析程序的生成器。1000多行代码。应该说,还是离我自己预先期望有一些距离。因为这个是“编译原理”课程作业的一部分,所以时间比较紧。我开始打算用纯粹的C语言编写,可是后来发现代码量还要增加不少,于是就加入了一些C++的特性。这一点,如果以后有时间会改成C语言。

详细的技术细节,会慢慢公布。

关于编译器

因为一些众所周知的原因,我还没有开始编写我的编译器。最大一个问题就在于老师给我们的要求是在是太模糊,以至于很难实现。

老师说,要我们写一个通用的编译器。这个要求本身就有一些问题。首先,我接触编译器也有一些时间了,就从来没有听说过通用编译器。当然,你可能要说,有Lex和Yacc这样的生成编译器中间程序的程序。不过这也仅此而已,我们老师说,如果输入C语言的文法就能识别C语言,输入Pascal就能识别Pascal的程序,这一点让我怎么也不得要领。

当然这也不是不能做,只是这样做的意义并不大,其实编译器最重要的还有就是效率问题,谁都不想编译器编译自己的程序花费几个小时的时间。

对于编译器的编写,我还是严格使用C语言。虽然我知道用C++可以简化很多工作,但是效率又一次促使我选择了C语言。

可能再过几天,我就可以开工了。

Windows Vista

看到了华丽的界面,和强大的功能架构。

的确,微软又一次让我们体会到了优雅和伟大的结合。还记得10年,我在一家小书店,第一次看到了Windows 95的界面,兴奋不已,或者应该说是受到了震动。其实当时自己感觉Windows 3.2就已经非常不错了,至少可以使用“画笔”和Visual Basic 3.0这些当年最爱。

如今的人们要求是越来越高,操作系统也变得有一点不认识了,真的还是怀念那个纯真的年代。那时候的电脑真的就叫做乐趣。

10年,Windows。我自己也长大了。

李开复的离开

最早看到李开复已经是很多年前的事情了,买了一本关于微软亚洲研究院的书,其中有很多篇幅介绍这位毕业于卡内基梅隆大学的计算机博士。当年,李开复 从苹果加盟微软和现在从微软加盟Google,很让人能够有一些联想。不过很久以来,我一直从某种意义上来说,我已经把他当作了微软的象征。毕竟,他是一 个华人。从微软亚洲研究院那本书里面,我学到了很多东西,当然这些东西都是为人和处事方面的。

说实话,很钦佩李开复,他愿意去追随自己愿意做的事情,而且这个决定很明显是深思熟虑过后的。微软也不必紧张,Borland的那么多人不都去了微软吗?就只允许你去挖别人?

作坊式的开发

很不幸的事情,最近我自己在一个作坊式的团队里面搞开发。效率基本是零!归结起来,主要有这么一些原因:

第一,大部分成员不知道究竟要干什么。这一点是很致命的。都不知道干什么那还有什么意思,怎么有激情?

第二,开发过程既不正规。既没有测试用的服务器,更没有版本控制工具和交流平台,一切都靠嘴巴比,自然,也就什么也说不清楚。

这样的作坊式开发能开发什么呢?开发的是青春!

最重要的也许真的是C

这一个多星期都在搞C语言的压缩程序,当然采用的是“经典”的哈夫曼算法。然后真得非常着迷于C语言的灵活和强大。于是又把“虚拟机”那本书拿出来看,发现原来很多东西并不是那么困难。嗯,也许这个暑假我就准备开始做做“虚拟机”这个级别的东西。

当然,“编译原理”还是很重要的。前段时间看的头昏眼花,理论太复杂。不过,不复杂的东西就不可能处理复杂的东西。听上去有一点拗口。

如果你问我,C语言能不能编网站,我会回答“可以,但我们通常不那么做。”不过,我还会回答,“网站的服务器大多是C语言编写的。”

现在的IT界有太多的谎言。比起.NET,C语言更像是编程序,而不是搭积木。