月度归档:2011年10月

【读书笔记】大道至简

节选:

“  

‘虽我之死,有子存焉;子又生孙,孙又生子;子又有子,子又有孙。子子孙孙,无穷匮也。而山不加增,何苦而不平?’

——《愚公移山》,《列子·汤问篇》  

   仅仅就编程序来说,实在是一件很简单的事,甚至可以说是一件劳力活。两千年前的寓言中,已经成就了一位工程名家:愚公。在这位名家的身上,浓缩了项目组织者、团队经理、编程人员、技术分析师等众多角色的优秀素质。他的出现,远远早于计算机发展的历史,甚至早于一些西方国家的文明史。

   汤问篇中所述的愚公移山这一事件,我们看到了原始需求的产生:

   “惩山北之塞,出入之迂”

   我们也看到了项目沟通的基本方式:

   “聚室而谋曰”

   然后,我们看到愚公确定了一个项目的目标:

   “毕力平险,指通豫南,达于汉阴”

   并通过研讨,择定了一个井然有序的、可以实现的技术方案:

   “扣石垦壤,箕畚运于渤海之尾”

   在这个项目中,动用了三名技术人员和一名工程管理人员:

   “(愚公)率子孙荷担者三夫”

   并获得了一名力量较弱,但满富工作激情的外协:

   “邻人京城氏之孀妻,有遗男,始龀,跳往助之”

   基本上,这已经描述了“愚公移山”整个工程的概况。接下来,我们应该注意到愚公作为编程人员的基本素质。在与“河曲智叟”的对答中,他叙述了整个工程的实现程序:

   “虽我之死,有子存焉”,这里描述了可能存在的分支结构,即“IF”条件判断。

   “子又生孙,孙又生子;⋯⋯子子孙孙,无穷匮也”,这里描述了完成这个工程所必须的循环结构。

   作为优秀的程序分析师,愚公论述了这个循环的可行性:由于“山不加增”,所以条件“山平”必将成立(“何苦而不平”),所以这不会是一个死循环。

   在愚公的论述中,我们看到了编程的根本:顺序、分支和循环。庞大若“愚公移山”这样的工程,都是可以通过这样简单的编程来实现的。这,就是编程的精义了。

   …………………… 

   所以除了先天智障或后天懒惰者,都是可以学会写程序的。如果你能确信,自己知道在早上起床后需要:

􀀩  如果天冷则先穿衣服后洗漱

􀀩  如果天热则可反之

􀀩  日复一日直到死亡

   那么你就可以开始编程了。甚至,如果你认为以下条件成立:

􀀩  如果有类似于生病、不能行动、以及意外的紧急事件,则当日可以略过。

   那么你就可以开始向设计师发展。因为你已经具备了一项常人不具备的基本素质:折衷。”