软件的永恒之道

在自然中,每一个有生命的生物,都是从种子或受精卵中生长起来的。那么什么才是诞生一个有活力的软件的种子呢?

也从某个角度上说,传说中所谓的企业文化应该算是一种种子吧。那什么是“企业文化”?老余说:“企业文化其实就是企业的创始人的价值观”,那些整天挂在嘴上的所谓“企业文化”,其实都只是口号而已,不是文化。

如我在《效颦篇:编程本质论》一文中所说的:

“一个普通的镖局招人,肯定是要有一定外家功夫的人,至于像段誉未学六脉神剑时那样,即使他有很强的内功,镖局也不会要的,因为不能打;但对于大的武林门派来说,要收门徒的话,却一般会挑选有潜质的人,而不在乎他能不能打。(BTW:就像从来没有哪个镖局能发展成为知名武林门派一样,我感觉国内现有的软件公司也不太可能在有限的时间里发展成为国际知名软件公司)”

而我们的软件公司恰恰都是缺乏“企业文化”的,因为一方面是缺乏真正有文化的企业创始人,另一方面当然也是历史不够长。文化绝不是今天编两句口号喊一喊,明天就能有的。

庆祝在伊拉克被扣中国人质获释

早上看新闻时听说七名中国人质已经于北京时间凌晨两点多获释了,真是好消息啊。

开始就觉得奇怪,中国又没有出兵伊拉克,为什么会抓中国人呢?现在看来大概是一场误会了。当然几位老乡(因为偶也是福建人的说^_^)不会外语也是一个很重要的原因,这让我想起那个著名的老鼠学狗叫的笑话:“学会一门外语是多么重要啊”

美军“正义”地把伊拉克人民从邪恶的萨达姆的水深火热的统治下解救出来已经一年多了。然而伊拉克的现状大家都看在眼里,老萨已经被抓了,他代表的民族–逊尼派穆斯林–倒没怎么样,长期受老萨欺压的什叶派穆斯林却跟美国人干起来了。

其实强行输出民主与强行输出革命没有什么不同,因为它们都是不受欢迎的。切·格瓦拉至少还有理想,美国的某些淫眼里只有利益而已。至于某些loosers……他们都已经是loosers了,就不说他们了。

软件与经济

昨天在看samuelson的《经济学》时,看到需求的替代效应部分时,忽然想到,即便是免费的Linux却还是难以撼动Windows的地位,也许有这方面的经济原因。–因为Linux不可以也不太可能做到和Windows高度兼容,这样的话,即使是免费的,它也有替代成本,这个成本就等效于是Linux的价格,而Windows的价格只要低于这个价格,Linux就很难进入Windows的市场。

在软件领域,专利保护已经越来越成为垄断的保护伞,它有效地阻断了“看不见的手”对市场的调节作用。

比如流媒体格式,RealNetwork有自己的专利格式RM/RMVB,MS也有自己的专利格式WMA/WMV/ASF等,这样如果别的竞争对手要进入这个市场,除非自己提新的格式,无形中提高了竞争对手的产品价格(即前面所说的替代成本),从而建立起自己的竞争优势,或者叫技术壁垒。垄断的格局自然产生。

不可否认,对技术创新者来说,他们应该得到应有的报酬,在丰厚的利益驱使下,会吸引大量的人力和资本进入创新领域,可以使整个社会技术水平得到提高。但同时由于专利的保护,迫使后来者都要从头开始,导致了后来者的竞争成本较高,实际上限制了竞争。其次,出现了许多的重复,导致社会资源的浪费。还有就是最重要的:提高了最终消费者的支出,损害了消费者的利益。

也许是时候考虑一下:要如何在创新与垄断之间取得一个平衡?

软件的永恒之道

有活力的软件应该是自然的,而所有自然的东西都是自己生长起来的,而不是别人用一个个细胞砌起来的,软件也是一样。

作家莫言说过,他成了小说的奴隶–不是他在写小说,而是小说本身在推动着他往下写。软件也是一样。

一个好的软件,一旦有了活力,它就不再受到开发者的控制,而是开发者受到软件的控制。所以IBM把Visual Age for JAVA开源出来后的Eclipse更加有活力了。

也许我们根本不用为DELPHI的未来担心,它绝对是一个有活力的软件,只要它不被扼杀,一定会自己生长下去,不管是BORLAND做的还是MS做的,不管是叫DELPHI还是叫BDS。

别人发给我的六个小故事,这就是亲情啊

 1:一朵玫瑰花

 有位绅士在花店门口停了车,他打算向花店订一束花,请他们送去给远在故乡的母亲。

 绅士正要走进店门时,发现有个小女孩坐在路上哭,绅士走到小女孩面前问她说:

 「孩子,为什么坐在这里哭?」

 「我想买一朵玫瑰花送给妈妈,可是我的钱不够。」孩子说。绅士听了感到心疼。

 「这样啊……」于是绅士牵著小女孩的手走进花店,先订了要送给母亲的花束,然后给 小女孩买了一朵玫瑰花。走出花店时绅士向小女孩提议,要开车送她回家。

 「真的要送我回家吗?」

 「当然啊!」

 「那你送我去妈妈那里好了。可是叔叔,我妈妈住的地方,离这里很远。」

 「早知道就不载你了。」绅士开玩笑地说。

 绅士照小女孩说的一直开了过去,没想到走出市区大马路之后,随著蜿蜒山路前行,竟然来到了墓园。小女孩把花放在一座新坟旁边,她为了给一个月前刚过世的母亲,献上一朵玫瑰花,而走了一大段远路。绅士将小女孩送回家中,然后再度折返花店。

 他取消了要寄给母亲的花束,而改买了一大束鲜花,直奔离这里有五小时车程的母亲家中,他要亲自将花献给妈妈。

 ------------为逝者举行盛大丧礼,不如在他在世时,善尽孝心。

 2:没有上锁的门

 乡下小村庄的偏僻小屋里住著一对母女,母亲深怕遭窃总是一到晚上便在门把上连锁三道锁;女儿则厌恶了像风景画般枯燥而一成不变的乡村生活,她向往都市,想去看看自己透过收音机所想象的那个华丽世界。某天清晨,女儿为了追求那虚幻的梦离开了母亲身边。她趁母亲睡觉时偷偷离家出走了。

 「妈,你就当作没我这个女儿吧。」可惜这世界不如她想象的美丽动人,她在不知不觉中,走向堕落之途,深陷无法自拔的泥泞中,这时她才领悟到自己的过错。

 「妈!」 经过十年后,已经长大成人的女儿拖著受伤的心与狼狈的身躯,回到了故乡。

 她回到家时已是深夜,微弱的灯光透过门缝渗透出来。她轻轻敲了敲门,却突然有种不祥的预感。女儿扭开门时把她吓了一跳。「好奇怪,母亲之前从来不曾忘记把门锁上的。」 母亲瘦弱的身躯蜷曲在冰冷的地板,以令人心疼的模样睡著了。

 「妈……妈……」听到女儿的哭泣声,母亲睁开了眼睛,一语不发地搂住女儿疲惫的肩膀。在母亲怀里哭了很久之后,女儿突然好奇问道:「妈,今天你怎么没有锁门,有人闯进来怎么办?」

 母亲回答说:「不只是今天而已,我怕你晚上突然回来进不了家门,所以十年来门从没锁过。」

 母亲十年如一日,等待著女儿回来,女儿房间里的摆设一如当年。这天晚上,母女回复到十年前的样子,紧紧锁上房门睡著了。

 ------家人的爱是希望的摇篮,感谢家的温暖,给予不断成长的动力。

 3:便当里的头发

 在那个贫困的年代里,很多同学往往连带个象样的便当到学校上课的能力都没有,我邻座的同学就是如此。 他的饭菜永远是黑黑的豆豉,我的便当却经常装著火腿和荷包蛋,两者有著天渊之别。

 而且这个同学,每次都会先从便当里捡出头发之后,再若无其事地吃他的便当。这个令人浑身不舒服的发现一直持续著。

 「可见他妈妈有多邋遢,竟然每天饭里都有头发。」同学们私底下议论著。为了顾及同学自尊,又不能表现出来,总觉得好肮脏,因此对这同学的印象,也开始大打折扣。有一天学校放学之后,那同学叫住了我:「如果没什么事就去我家玩吧。」虽然心中不太愿意,不过自从同班以来,他第一次开口邀请我到家里玩,所以我不好意思拒绝他。

 随朋友来到了位于汉城最陡峭地形的某个贫民村。

 「妈,我带朋友来了。」听到同学兴奋的声音之后,房门打开了。他年迈的母亲出现在门口。

 「我儿子的朋友来啦,让我看看。」 但是走出房门的同学母亲,只是用手摸著房门外的梁柱。 原来她是双眼失明的盲人。

 我感觉到一阵鼻酸,一句话都说不出来。 同学的便当菜虽然每天如常都是豆豉,却是眼睛看不到的母亲,小心翼翼帮他装的便当,那不只是一顿午餐,更是母亲满满的爱心,甚至连掺杂在里面的头发,也一样是母亲的爱。

 ------先入为主的观念,往往影响人一生的格局,多观察、多探讨,会有更多意外的发现。

 4:种花的邮差

 有个小村庄里有位中年邮差,他从刚满二十岁起便开始每天往返五十公里的路程,日复一日将忧欢悲喜的故事,送到居民的家中。就这样二十年一晃而过,人事物几番变迁, 唯独从邮局到村庄的这条道路,从过去到现在,始终没有一枝半叶,触目所及,唯有飞扬的尘土罢了。

 「这样荒凉的路还要走多久呢?」

 他一想到必须在这无花无树充满尘土的路上,踩著脚踏车度过他的人生时,心中总是有些遗憾。

 有一天当他送完信,心事重重准备回去时,刚好经过了一家花店。 「对了,就是这个!」 他走进花店,买了一把野花的种籽,并且从第二天开始,带著这些种籽撒在往来的路上。 就这样,经过一天,两天,一个月,两个月……,他始终持续散播著野花种籽。

 没多久,那条已经来回走了二十年的荒凉道路,竟开起了许多红、黄各色的小花;夏天开夏天的花,秋天开秋天的花,四季盛开,永不停歇。

 种籽和花香对村庄里的人来说,比邮差一辈子送达的任何一封邮件,更令他们开心。

 在不是充满尘土而是充满花瓣的道路上吹著口哨,踩著脚踏车的邮差,不再是孤独的邮差,也不再是愁苦的邮差了。

 ------人生如白驹过隙,时光飞逝,何妨留下善行,提供后人乘凉?

 

 5:第一百个客人

 中午尖峰时间过去了,原本拥挤的小吃店,客人都已散去,老板正要喘口气翻阅报纸的时候,有人走了进来。那是一位老奶奶和一个小男孩。

 「牛肉汤饭一碗要多少钱呢?」奶奶坐下来拿出钱袋数了数钱,叫了一碗汤饭,热气 腾腾的汤饭。奶奶将碗推向孙子面前,小男孩吞了吞口水望著奶奶说:

 「奶奶,您真的吃过午饭了吗?」 「当然了。」奶奶含著一块萝卜泡菜慢慢咀嚼。

 一晃眼功夫,小男孩就把一碗饭吃个精光。

 老板看到这幅景象,走到两个人面前说:「老太太,恭喜您,您今天运气真好,是我们的第一百个客人,所以免费。」 之后过了一个多月的某一天,小男孩蹲在小吃店对面像在数著什么东西,使得无意 间望向窗外的老板吓了一大跳。

 原来小男孩每看到一个客人走进店里,就把小石子放进他画的圈圈里,但是午餐时间都快过去了,小石子却连五十个都不到。

 心急如焚的老板打电话给所有的老顾客 :「 很忙吗?没什么事,我要你来吃碗汤饭,今天我请客。」 像这样打电话给很多人之后,客人开始一个接一个到来。 「八十一,八十二,八十三……」小男孩数得越来越快了。终于当第九十九个小石子被放进圈圈的?

 那一刻,小男孩匆忙拉著奶奶的手进了小吃店。

 「奶奶,这一次换我请客了。」小男孩有些得意地说。 真正成为第一百个客人的奶奶,让孙子招待了一碗热腾腾的牛肉汤饭。而小男孩就像之前奶奶一样,含了块萝卜泡菜在口中咀嚼著。

 「也送一碗给那男孩吧。」老板娘不忍心地说。

 「那小男孩现在正在学习不吃东西也会饱的道理哩!」老板回答。

 呼噜……吃得津津有味的奶奶问小孙子:「要不要留一些给你?」

 没想到小男孩却拍拍他的小肚子,对奶奶说:「不用了,我很饱,奶奶您看……。」

 ------ 一念善心助长一棵幼苗,棵棵幼苗可以成林,人人有爱、社会有情。

 6:世上最美味的泡面

 他是个单亲爸爸,独自抚养一个七岁的小男孩。每当孩子和朋友玩耍受伤回来,他对 过世妻子留下的缺憾,便感受尤深,心底不免传来阵阵悲凉的低鸣。这是他留下孩子 出差当天发生的事。因为要赶火车,没时间陪孩子吃早餐,他便匆匆离开了家门。一 路上担心著孩子有没有吃饭,会不会哭,心老是放不下。即使抵达了出差地点,也不 时打电话回家。可孩子总是很懂事地要他不要担心。然而因为心里牵挂不安,便草草 处理完事情,踏上归途。回到家时孩子已经熟睡了,他这才松了一口气。旅途上的疲 惫,让他全身无力。正准备就寝时,突然大吃一惊:棉被下面,竟然有一碗打翻了的 泡面!

 「这孩子!」他在盛怒之下,朝熟睡中的儿子的屁股,一阵狠打。

 「为什么这么不乖,惹爸爸生气?你这样调皮,把棉被弄?要给谁洗?」 这是妻子 过世之后,他第一次体罚孩子。

 「我没有……」孩子抽抽咽咽地辩解著:「我没有调皮,这……这是给爸爸吃的晚餐。」

 原来孩子为了配合爸爸回家的时间,特地泡了两碗泡面,一碗自己吃,另一碗给爸 爸。可是因为怕爸爸那碗面凉掉,所以放进了棉被底下保温。

 爸爸听了,不发一语地紧紧抱住孩子。看著碗里剩下那一半已经泡涨的泡面: 「啊 !孩子,这是世上最…最美味的泡面啊!」

软件的永恒之道

去年看了GIGIX的书评,也跑去买了那本《建筑的永恒之道》(Christopher.Alexander著),据说GoF的《设计模式》就是从这里来的灵感。DP我是没研究多少,如我在令狐的BLOG里留言所说的,最熟的就是SINGLETON,用过的也不过几个而已。然而大概是历史看多了一些,有一点考据癖,所以也跑去看这个《Timeless way of building》,学GIGIX来探寻一下Timeless way of software^_^

Alexander说,一个有活力的建筑是自然的,而自然的一个大的特征就是短暂的,无论是花草树木,都有诞生,生长,繁荣,消亡的过程。其实软件又何尝不是,而且相对来说,软件的生命远比建筑要短得多(当然,它的生命有时也比我们想像的要长一些,比如Y2K问题^_^)。与其在设计时绞尽脑汁去想如何让软件去满足日后所有的发展需要,不如让软件尽量满足现在的需要,以后再根据情况随机应变。这也正是XP所请的:“拥抱变化”

你做的软件有活力吗?

关于亲情与爱情的问题—-转自某论坛贴子

这个问题……

发言者:一件新马甲
发表时间:2004-4-9 10:37:24

其实不会有答案的

如果亲情与爱情是同等的,无论你选择哪一个,都将失去另一个(即使如WHALER所说,最后亲人就算会原谅你,那你也已经伤了他们的心)。

那些说选择亲情的有两种情况:
1、大概都是没有经历过这种事,把问题看得太简单了
2、是曾经经历,选择了爱情,现在后悔了

秋水说的是:亲情是无私更是自私的!代沟是客观存在的事实,后代的事总是有很多是上一代不能理解的,在这种情况下,有些被亲情认为是好的事,事实上未必是好事,反而成为伤害,至少也是压力。现代人的压力已经很大了,这一点就是上一代人所不能体会的,所以他们总是会在无意中增加这种压力。

爱情是脆弱的,它很容易就会被亲情的压力或其它什么事所摧毁。长辈的观点不能说是错误,他们也是真心为你好,他们也是希望后代幸福,少走弯路。但是人生在世,如果平平淡淡波澜不惊地走完一生,并不是所有人的愿望。如同一个故事所说:几个年轻人登山,在半山碰到一个下山的老头,就问老头山顶有什么,老头说山顶上没有什么,不用上去了,但是年轻人还是上去了,虽然上面的确没有什么。
更何况长辈总是不可能照顾子女一辈子,孩子最后总不可避免要和别人一起生活下半辈子。幸与不幸都是他们自己的选择,如《追妻三人行》里牛爸的口头禅:“儿孙自有儿孙福”问题是绝大多数长辈不会认识到这一点。

讲几个真实的案例:
A,三十多年前,她父亲认为那个男人没出息,反对她嫁过去。虽最后还是嫁给她现在的丈夫。事实证明那个男人是不怎么样,她受了很多苦,但三十多年还是走过来了,现在已经抱孙子了。但她父亲至死没有与她再有往来。

B,十多年前,她全家包括父母兄弟姐妹都反对她嫁给那个男人,同样是因为那个男人没出息,她最后还是嫁了,后来家里人也原谅她了,并接受了她丈夫,但是在她儿子小学没毕业的时候,还是离婚了。

C,几年前,他们高中时开始恋爱,女方的家长从一开始就反对,男方的家长知道后也很不支持,但他们一直坚持了下来,即使是没在同一座城市上大学,但大学毕业后,女孩到了男孩所在的城市,远离双方的父母,他们开始过同居生活,然而才过了两三年,他们终于还是分手了。

D,男方是福建某市公务员,北方人,两个姐姐也嫁在同一城市,但父母在北方,女方是自由职业者,男方母亲知道后,认为女方学历低,没有稳定工作,强烈反对。大家认为这个问题如何解决?

E,我自己的事也好不了多少,就不说了。

碰到几个XML的问题,真麻烦

我想用XSL来转一个XML,那个XML里有很多NODE,下面有一个ID的值不一样,类似于这样:

<Node>
  <ID>1</ID>
  <Value>xxx</Value>
</Node>

<Node>
  <ID>1000</ID>
  <Value>bbb</Value>
</Node>

想通过XSL转换后,去掉其中几个指定ID的NODE,可是我现在只会把指定ID的NODE导出来,因为大多数ID都要导出,不导的是少数,如果用这样的方法来做的话,XSL就太罗嗦了:(

麻烦啊