IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    《Code Complete》读书笔记--软件构建+隐喻

    longhao (longtask@gmail.com)发表于 2011-02-14 09:29:40
    love 0

        《Code Complete》翻译成《代码大全》我觉得还是有点标题党,毕竟这本书是讲软件工程,传递软件开发过程的智慧的。调侃的翻译一下应该叫《代码大成》,多少有点和软件工程沾边了,后面我用CC来代替这本书的名字。感觉自己工作经验不够丰富,虽然很早听说了这本好书,也没有看。自从看懂了《Effictive java》第二版的章节后,发现对语言有了较好的理解,所以过来读这本书。

        简单的看了前言,印象最深的还是这本书崇尚“绝不注水”的原则。现实生活中,不仅仅有注水牛肉,瘦肉精的猪肉,很多书籍也是东拼西凑来的内容,为了达到一定的字数,到处抄袭,拼凑内容,着实可恶,其中不乏一些大学教授以及他们所谓的得意门生。不注水的厚书,那就有得期待了。

         第一章:欢迎进入软件构建的世界

        软件工程的流程在敏捷开发之前有固定的模式:定义问题,需求分析,规划构建,软件架构,详细设计,编码与调试,单元测试,集成测试,集成,系统测试,保证维护。当然,每一步你都可以找到相关的书籍专门的讲述。

        软件构件主要的产物是源代码,编写源代码的工程师的素质对软件构建影响很大,一项有Sackman,Erikson,Grant的经典研究表明:在构建活动中,不同程序员的生产效率的差距是10倍-20倍。由此看来《5%的神话》是很实际的内容,当然这5%的优秀程序员对“如何进行构建”的理解程度,决定了他的优秀程度,95%的程序员都是码农。

         第二章:用隐喻来更充分的理解软件开发

        隐喻是用比喻的方式来描述软件领域各种特定的现象和事物,使用隐喻的方法叫做建模(modeling),物理学中气体分子的撞球理论,光的波动理论都用比喻来形容对一个事物的理解。计算机中也可以用隐喻来帮助人们更好的理解软件开发的问题。

        1973年,Charles Bachman(图灵奖获得者中比较特殊的一个。Bachman基本上是在工业界里,而没有在学术界里作过研究或教职工作)在图灵奖演说中用日心说和地心说来形容计算机时代的变化,因为1973年,数据处理正在从“以计算机为中心”的观点向“以数据库为中心”的观点转变,现在越来越多的公司使用云计算厂商提供的服务,数据处理都“云化了”,我们生在其中,看不清,总结不明。10后,回头看看,或许豁然开朗。

        隐喻和算法的不同就在于算法告诉你怎么做,而隐喻是告诉你如何更好的理解编程,写出更好的代码。或许需要问一个最简单的问题:软件开发时什么?各个大牛都用不同的比喻解释了一下,还是觉得Fred Brooks(《人月神话》作者,1999年图灵奖得主)说像耕田,捕猎的比喻好。

        如果把软件开发比喻成耕田,那么不能期待系统能够像种子一样,春天播下,秋天收获,中间不能忽略的一步是“系统生长”,和生长相关的术语:“增量的(incremental)”,“迭代的(iterative)”,“自适应的(adaptive)”,“演进的(evolutionary)”,慢慢的就有了Tom Gilb的突破性著作《软件工程管理原理》介绍的演进式交付,它很大程度上奠定了敏捷开发方法的基础。

       建一个狗屋忘记开一个门可以很快修复,建帝国大厦忘记搭配电梯系统会怎么样呢?所以软件构建的过程需要很多的智慧。



沪ICP备19023445号-2号
友情链接