《大道至简——软件工程实践者的思想》读后(之一)

       最初拿到《大道至简——软件工程实践者的思想》这本书的时候是在 2007 年的 3 月份,当时自己正在北京参加一个 CSDN 举办的技术会议,该书的作者周爱民( Aimingoo )也是与会者之一,所以有机会在第一时间拿到了该书,而且还是作者亲笔签名本。

    会议期间,大致翻了翻这本书,也没来得及细看,只是觉得它的封面和内文排版比较有水准而已。就这样,这本书在我手里沉睡了近一年的时间。来到上海之后,每天在公车上有大的时间,于是就把这本书带在了身边以便在车上打发时间。这一看不要紧,立刻就被这本书深深的吸引住了,好几次在车上看的入迷了差点错过下车。

第一章 编程的精义

本章第一节非常精彩,作者将《列子·汤问篇》中的《愚公移山》与软件工程巧妙的结合起来(无独有偶,2007年一本名为《移山之道——VSTS使用开发指南》的书也使用到了愚公移山的故事),通过分析证明其实早在两千多年前的愚公不仅在移山的过程中担任了“项目组织者、团队经理、编程人员、技术分析师等众多角色”,还具备了编程人员的基本素质。

《愚公移山》

项目管理

惩山北之塞,出入之迂

项目原始需求的产生

聚室而谋曰

项目沟通的基本方式

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

项目的目标

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

技术实现方案

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

项目组成员(工程管理者1名,技术人员3名)

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

项目外协人员

 

面对河曲智叟对于移山工程可行性的质疑,愚公豪迈的宣称“虽我之死,有子存焉。子又生孙,孙又生子;·······子子孙孙,无穷匮也”。书中对这句话是这样进行评价的,前面一句“描述了可能存在的分支结构,即IF条件判断”,后面一句则“描述了完成这个工程所必需的循环结构”。由于“山不加增”,所以条件“山平”必将成立(何苦而不平),所以不会是一个死循环。愚公作为“优秀的程序分析师”,论证了该工程实施的可行性。

以上内容让我们看到了编程的根本:顺序、分支和循环,移山这样庞大的工程都可以通过简单的编程来实现,这就是编程的精义,也是该书自始至终所强调的重点。

 

 

第二章 是懒人造就了方法

前面的一章中,愚公在作者笔下完全成为了一个全能选手,只要他能想到,就没有他不能办成的事情。在第二章里,作者却将愚公请下了神坛,认为战国时期的李冰(主持了著名的都江堰工程的实施)在移山过程所表现出来的“偷懒功夫”更加值得提倡。李冰在成都担任太守期间,使用“积薪烧之”的方法将一座山给凿平了。愚公移山贵在锲而不舍的坚持,而李冰凿山则是贵在采用了新的“方法”可以说是“懒人的方法”很快的解决了问题。回顾一下人类发展史,从某种意义上说是那些“懒人”推动了历史前进的车轮。“懒人”不喜欢自己洗衣服,就发明了洗衣机;“懒人”嫌走路太累,就发明了汽车。

前天和几个朋友一起吃饭聊天,其中一位朋友讲了一个“肥皂盒的故事”,感觉其中也包含了“懒人的方法”。有两家肥皂生产厂家,由于设备都是同型号的,所以都存在有包装时可能漏包肥皂的问题。A厂家于是聘请了某大学教授带领的研发团队对这个问题进行攻关,期望能最大限度的减少肥皂盒空填的概率。该研发团队使用了世界上最高精尖的技术(如红外探测、激光照射等),在花去了30万美金和大半年的时间后终于完成了肥皂盒检测系统,将肥皂盒空填率有效降低至5%以内。A厂家的老板自我感觉这套系统很牛逼,就找了个机会跑到B厂家那里去炫耀。B厂家的人听完他的一番侃侃而谈之后,就把他领到B厂的肥皂生产线去。A厂家的老板进去一看就立即傻眼了,只见每条生产线的末端都配有一台电风扇对着生产线吹风,那些没有装填肥皂的肥皂盒都被风吹下去了。这个故事同样告诉我们,做事情是要讲究“方法”的。

再回到这本书的内容上来,早期的程序员都习惯于将所有代码都写到一个文件中,即使是一百万行的代码。在存在多种限制的情况下,把所有代码都写在一起是合情合理的。但到后来,明明能分开存储的代码却还要写道一个文件里,甚至还作为炫耀的资本就是不智的表现了。那些“懒人”程序员创造了“单元( Unit )”和“模块( Module )”的概念,结构化编程的时代开始了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值