编程之道(2)


远古的掌握者(The Ancient Masters)

掌握了软件开发的程序员说:

在三天没有编程以后,生命变得毫无意义.

注释:编程已经成为程序员生命的一部分,难以割舍.编程成为程序员的第一需要.

2.1

早期的程序员是神秘的和深刻的.我们不能知道他们的思想,所以我们可以做的是描述他们的行为.

他是清醒的,象一只狐狸穿越水塘.他是警惕的,象一个将军在战场上.他是善良的,象一个主妇招待她的客人.他是简单的,象块没有经过雕刻的木头.他是无法看透的,象黑暗的岩洞里的黑色的池水.

注释:难以理解-只能进行描述.

谁能够说出他们的心灵和头脑的秘密呢?

注释:谁知道他们怎么会写出那样的程序呢?他们是怎么考虑的呢?天才的思想,是难以描述的

答案仅仅存在在道里.

注释:也许道可以解释这些,找到答案吧.

2.2

外祖父极的掌握者图灵一次梦到他是一台机器.当他醒后,他惊叫到:"我不知道究竟我是图灵,做梦梦到我是一台机器,还是我是一台机器,做梦梦到我是图灵!"

注释:现实和梦境相互交融,以至于人们会分不清那些是真实的,那些又是虚幻的.

2.3

一个非常大的计算机公司的程序员参加了一个软件会议,接着回来向他的经理汇报.他说:"为其他公司工作的是什么样的程序员啊?他们行为很坏,不注意外表.他们头发很长而且不理发.他们衣服皱乱而且很旧.他们推翻了待客的规矩,而且在我介绍时发出粗鲁的噪音."

经理说:"我本不应该让你去这个会议.这些程序员生活在物质世界之外.他们认为生活是荒唐的,一个意外的巧合.他们来和走都不知道限制.他们不考虑世俗的生活,只为他们的程序而活.他们怎么会考虑社会的习俗呢?"

“他们生活在道里”。

注释:象每个忘我的科学家一样,这些程序员把程序当成了自己的生命.而不仅仅是一个职业.

2.4

一个新手问道:"这儿有一个程序员,他从不设计,写文档,或者测试他的程序.可是所有知道他的人都认为他是世界上最好的程序员之一.为什么会这样呢?"

掌握了道的程序员回答:"那个程序员已经掌握了道.他已经超越了设计的需要,当系统完全失败时他也不会变得愤怒,而是毫不关心的接受.他已经超越了写文档的需要,他从不关心是否其他人来看他的代码.他已经超越了测试的需要,他的每一个程序都是自己完美的,清澈的,雅致的.他们的功能自我明白.确实,他已经进入了道的神秘阶段."

注释:天才本来就是难以理解的.


设计(Design)

掌握了道的程序员这样说

"当程序被测试时,再去做设计的改变是太晚了"

注释:设计的修改应该在编码阶段完成.

3.1

有一个人去一个计算机商业展览.每天当他进来时,这个人就告诉门口的卫兵: 

"我是一个伟大的贼,由于我的逃跑本领而著名.提前声明,这次商业展也无法避免."

这些话让卫兵非常担心,因为里面有许许多多的计算机设备,所以他仔细地看着这个人.可是这个人只不过从一个摊到另一个摊,安安静静地自言自语.

当这个人离开时,卫兵把他带到一边,检查了他的衣服,但是什么也没有发现.

在商业展的第二天,这个人又来了,叱责地对卫兵说:"我昨天带着大量的东西跑了,但今天会更多."所以卫兵看他看得更紧了,但没有用.

在商业展得最后一天,卫兵再也无法抑制他的好奇心."贼先生",他说,"我是如此的不知所措,以至于无法平静.请你启发我,你偷的东西是什么?"

这个人微笑道."我在偷想法",他说.

注释:思想才是真正的无价之宝.各种产品都是由于其内部的思想而变得伟大.思想才是一切的根本.良好的思维方法才是解决问题的关键.能够从产品中找到思想的,才是真正理解产品的.

3.2

以前有一个掌握了道的程序员,他编写非结构化的程序.一个初学者想模仿他,也开始编写非结构化的程序.当初学者请前者评价一下他的进展,他批评初学者来写非结构化的程序,说道:"对一个掌握道的人适合的并不适合于初学者.在超越结构化之前,你必须先理解道."

注释:不能无原则地模仿别人,要考虑自己地实际情况.

3.3

一次一个程序员被派到乌军阀的法庭.军阀问程序员:"那一个更容易设计呢:一个财务软件包还是一个操作系统?"

“一个操作系统”,程序员回答。

军阀完全不相信的说道:"一个财务软件包是琐碎的,和一个操作系统的复杂度来比较".

"不是这样"程序员说道,"当设计一个财务软件包时,程序员象一个中间人一样工作,在具有不同想法的人之间:它必须如何操作,它的报告必须如何表现,而且它必须如何符合税法.相比较而言,一个操作系统并不被其的外在表现所限制.当设计一个操作系统时,程序员寻找在机器和思想之间最简单的和谐.这就是为什么一个操作系统更加容易设计的原因."

乌军阀点点头笑了."很好,可是那一个更容易调试呢?"

程序员没有回答。

注释:军阀既然不相信程序员,程序员又何必和他多说呢?

3.4

一个经理到掌握了道的程序员那儿,给他看一个新应用的需求文档.经理问程序员:"设计这个系统需要多长时间,如果我分配五个程序员给它?"

“它需要一年”,程序员迅速回答.

"可是我们需要这个系统,马上甚至更快!它需要多少时间如果我分配十个程序员给它?"

程序员皱起了眉头.“在那种情况下,它将需要两年”。

“那么,如果我分配一百个程序员给这个项目呢?"

程序员耸了耸肩."那么这个设计将无法完成"他说.

注释:如果将任务交给专家,那么就让专家来决定事情的发展,经理不要试图用增加人力的方法来人为加快项目的进展,尤其不要怀疑程序员在推延时间. 
编程之道(2)
作者:刘峻松 译    本文选自:赛迪网  2002年04月22日
 

 

编码(Coding)

掌握了道的程序员这样说:

“一个写的好的程序是它自己的天堂;

一个写的糟糕的程序是它自己的地狱”

4.1

一个程序应该是光亮的和敏捷的,它的子程序相互连接,象一串珍珠.程序的灵魂和目的应该始终保持.那儿不应该有要么太少,要么太多,要么无用的循环,要么无用的变量,要么缺乏结构化,要么压倒一切的僵硬.

注释:程序应该在这些相互矛盾的标准中找到一个协调,程序要有一定的灵活性.

一个程序应该遵循"最小惊讶原则",它是什么呢?它很简单,就是程序应该永远向使用者作出响应,用使他感到最少惊讶的方式.

注释:程序要朴实,而不要让用户惊讶.

一个程序,无论都么复杂,应该象一个单独的部分一样工作.程序应当被内部逻辑指引而不是外部表现.

注释:不要使用界面来规定程序的流程.界面是程序流程变化的表现而不是其本质. 如果一个程序在这些要求上都失败了,它将进入一个没有秩序和混乱的状态.改正的唯一方法是重写这个程序.

4.2

一个初学者问掌握了道的程序员:"我有一个程序,它有时运行有时中断.我遵循了编程的规则,但是我完全迷惑了.这样的原因是什么呢?"

掌握了道的程序员回答道:"你被迷惑了因为你不理解道.只有一个傻瓜才希望从人得到理性的行为.为什么你希望从人创建出来的机器上得到它呢?计算机模仿决定论,只有道是完美的."编程的规则是短暂的,只有道是永久的.所以呢必须凝思道,在你受到启发之前.

"可是怎样我才知道我已经受到启发了呢?"初学者问道.

"你的程序那时将会正确运行."掌握道的程序员回答.

注释:编程的规则是软件内在规律的表现,而不是内在规律本身,只有领悟到这一点,才不会被规则所用,才能学会如何来使用编程的各种规则.掌握软件的内在规律比单纯掌握规则要重要得多.

4.3

一个掌握了道的程序员向一个新手解释道的自然表现."道被在体现在所有软件中--无论多么微不足道",掌握了道的程序员说.

"道在手持计算器中?"初学者问.

"是"回答来了.

"道在一个游戏中?"初学者继续问.

"道甚至存在在游戏中",掌握了道的程序员说道.

"那么道在个人计算机的DOS中?"

掌握了道的程序员咳嗽了一下,稍稍移动其位置,"今天的课结束了"

注释:软件的内在规律无处不再,无时不在.

4.4

王子的程序员正在编码.他的手指在键盘上跳舞.程序编译没有一条错误信息,程序运行象一阵柔风.

"太好了!"王子惊叫到,"你的技术是没有缺点的!"

"技术?"程序员说道,从终端前转过来,"我遵循的是道---超越了所有的技术.当我刚开始编程时,我可以看到在我面前整个程序在一块儿.三年以后,我再也看不见这一块了.实际上.我使用子程序.可是现在我看见什么都没有.我整个人存在再无法描述的虚无中.我的感觉是空闲的.我的精神,从工作中释放,毫无计划,遵循它自己的直觉.简单来说,我的程序是自己写出来的.确实,有时这儿有困难的问题.我看到他们走来,我停下来,我安静地观察.接着我修改一行代码,困难就如同轻烟一样消失.我接着编译程序.我安静地坐下来,让工作的快乐充满我自己.我闭上眼睛一会儿接着退出系统."

王子说道:"我所有的程序员都可以这样聪明吗!"

注释:与中国古代庄子<<庖丁解牛>>非常类似,可见许多东西的知识技术是相通的.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值