编程大师如是说:“当你从我手中夺走水晶球时,就是你离开的时候了。”
寂静的虚空里诞生了神秘的东西,这种东西恒久存在永不消失,它是所有程序的根源所在,我不知道怎么形容它,姑且称它为编程之道。
如果道是完美的,那么操作系统就是完美的,如果操作系统是完美的,那么编译器就是完美的,如果编译器是完美的,那么应用程序就是完美的,所以用户心满意足,整个世界因此和谐。
道生机器语言,机器语言生汇编器。
汇编器生编译器,最后产生上万种高级语言。
不论多么的微不足道,每种语言都有它自己的目的,每种语言都表达了软件的阴阳两极。每种语言都各得其道。
编程大师如是说:“三日不编程,食肉无味。”
远古时代的编程大师们高深莫测,我们不能揣测他们的所思所想,只能描述外表所见。
他达明,如狐狸过水;机警,如战场上的将军;和善,如主妇款待客人;简单,呆若木鸡;混沌,如深渊之水。
谁能道尽他们的所有?
答案仅存于道。
超级大师图灵曾梦见自己是一台机器,醒后他这样回忆:“我不知道是图灵梦见自己变成机器还是机器梦见自己变成图灵。”
一个大公司的程序员参加一个软件回忆后向他的主管汇报:“那些别的公司的程序员都是些什么样的人呀?他们举止不雅,不修边幅,头发蓬乱,衣服破旧,根本不热情好客,还在我说话的时候乱嚷嚷。”
他的主管说:“我不应该让你参加这次会议,这些程序员生活在现实世界之外。他们认为生活是可笑的,一场意外的偶然而已。他们来去自由,无所牵挂,他们只为他们的程序生活。为什么要用世俗的烦扰去扰乱他们呢?” “他们生活在道中”。
一个初学者问主管经理:“有一个程序员,他从来不预先设计,也不写文档,甚至不测试他的程序,但是知道他的人都认为他是世界上最伟大的程序员,为什么呢?”
经理说:“那个程序员掌握了道。他不需要预先进行设计;系统崩溃时他也从不烦躁,只是接受发生的一切而不管发生的事是好事坏。他不需要写文档,他从不顾及有没有人看他写的代码。他也不需要进行测试;他写的每个程序都有一个完美的自我,平静而优雅,它们的目的不言自明。他已经真正掌握了道的精髓。”
编程大师如是说:“程序被测试时再去改变它的设计已经太晚了。”
有一位编程大师,他写非结构化的程序,一位初学者刻意模仿他,也写非结构化的程序。当他让大师看他的进步时,大师批评了他的非结构化程序:“对一位编程大师合适的东西未必对一个初学者同样合适,在超越结构化之前,你必须理解编程之道。”
一个项目经理带给编程大师一个项目的需求,然后问大师:“如果我给你5个程序员,要多少时间设计这个项目?”
“一年”,大师说。
“但是我们等不了那么长时间,越快越好,如果10个程序员呢?”
大师皱了一下眉头说:“哪就要花2年”。
“那,100个程序员呢?”
大师耸了耸肩说:“那这个项目就永远完不成了。”
编程大师如是说:“写的好的程序时它自己的天堂,写的不好的程序时它自己的地狱。”
一个程序应该是轻灵自由的,它的子过程就象串在一根线上的珍珠。自始至终,目标明确。增之一字节则太长,减之一字节则太短。即没有不必要的循环也没有没有被引用的变量,既不缺少结构化也不至于僵硬呆板。
一个程序应该遵循“最小惊讶原则”,什么是“最小惊讶原则”?就是说一个程序应该最小程序地引起用户的惊讶。
无论一个程序有多么复杂都应该是一个单一的整体。程序是被它的内部逻辑所指引而不是它的外观表现。
如果一个程序不能满足所要的需求,它就会处于混乱无序的状态中。唯一的出路就是重写这个程序。
初学者请大师解释“道法自然”。大师说:“道存在于任何软件中——无论是多么没有意义的软件。” “难道也存在于手持式的计算器里?”,初学者问。 “是的,” “也在游戏机里?”,初学者又问到。 “是的,甚至也存在于游戏机里。”,大师说。 “也存在于个人计算机的DOS里吗?” 大师咳嗽了一声,稍微动了一下,说:“今天的课就到这里。”
编程大师编写软件时,手指在键盘上快速飞舞。程序编译时没有一条错误信息,程序运行起来就象一阵微风吹过。
太精彩了!你的技巧已经无可挑剔了。
“技巧?”,大师转过身说,“我所遵循的是道——它超乎所有的技巧。当我开始编程时我看到的是整个一大块的程序,三年后我看到的是子过程。现在我什么也看不到了。我的整个存在是没有任何形式的虚无。我感觉很悠闲,总之,事实上是我的程序自己在写,有时我看到一些问题,我看到它们,就停下来静静地观察它们,然后我改变了一行代码,难题就象一阵轻烟一样化为乌有。然后我编译程序。坐在那里享受工作的喜悦。闭了一会眼睛然后退出系统。” “什么时候我的程序员才能都达到这样的境界!”
编程大师如是说:“既使一个程序只有三行长,也总有一天需要去维护它”
经理问程序员要多长时间才能完成他的项目。“明天”
“太不着边际了,老实说,要多久?”
程序员想了一想说。“还有一些新的功能要加进去,可能至少要两个星期吧。”
“即使两个星期恐怕也太夸张了,什么时候你只要告诉我说程序已经完成就好了。”
几年后,这个经理已经退休了,在他的离职午餐上,他发现这些程序员在他的终端前睡着了,他整夜都在编程。
编程大师如是说:“增加程序员,减少经理–这样他们都可提高效率。”
为什么程序员没有效率,因为他们把时间都浪费在开会上了。
为什么程序员难于管理?因为管理者的干预太多了。
为什么程序员一个接一个地辞职,因为他们累坏了。
在糟糕的管理下工作,他们享受不到工作的乐趣。
一个经理将被解雇,但他手下的一个程序员写了一个流行的软件并且销路很旺。所以经理保住了他的工作。
经理为程序员分红,但程序员拒绝了,他说:“我写程序是因为写程序很有趣,所以我并没想过得资金”。
这位经理说,“这位程序员,不管他现在是什么位置,他都能理解一个雇员的职责所在。我们要把他提升为管理顾问”。
这位程序员又一次拒绝了,他说:“我是一个程序员所以我可以编程,如果我被提升了,除了浪费别人的时间什么也做不了,现在我可以走了吗?我还有一个程序没写完。”
经理对程序员说,“你们的工作时间是早上9点到正午点。”,所有的程序员都很不满。
经理又说:“好吧,那随你们的便,只要能按时完成任务。”,程序员们这下满意了,他们中午上班,一直工作到凌晨。
编程大师如是说:“你可以向一位公司主管演示一套程序,但你不能让他的电脑变得象人一样。”
在遥远的东方,传说有一只巨大的鱼,叫鲲,它变成了一只大鸟,叫鹏,鹏的翅膀可以遮天蔽日,这只大鸟经过陆地的时候,它带来了一个消息,它把这个消息丢在程序员中,就象一只海鸥在海滩上做的记号,然后鹏背负蓝天,乘风而上,回家去了。
初学者惊恐地看着这只鸟,根本不敢相信,中级程序员担心这只鸟的到来,因为它害怕它带来的消息,编程大师则继续在他的终端前工作他根本不知道这只鸟曾经来过。
风不动则草不动,没有软件,硬件只是一堆发热的电子器件
有一天编程大师碰见了一个正玩掌上游戏机的编程新手,他说:“给我看一下?”
新手把游戏机递给大师,“我看到上面说明了三种难度的玩法:容易,中等,高难”,大师说,“但是每个这样的游戏机都有另外一种玩法,此时游戏机即不是想着怎么赢你,也不是怎么被你赢。”
“那么请问大师”,初学者说,“这种玩法到底是怎样玩的呢?”
大师把游戏机摔到地下然后用脚踩碎它,突然初学者明白了。
硬件和软件在路上碰见了,软件说:“你是阴我是阳,如果我们联手就可以赚大钱。” 所以它们走到了一直,考虑怎样征服世界。
不久,它们遇到了固件,固件衣衫褴褛,拄着一根拐棍步履蹒跚。固件对它们说:“道在于阴阳之外。它静如止水,它从不指望能扬名远近,所以没有人知道它的存在。它也不寻求幸福,它只是与它自己的存在在一起,它存在于空间和时间之外。”
软件和硬件面有惭色,各自回了家。
编程大师如是说:“现在是你出师的时候了。”