五天带你看完《代码大全》——读书笔记(2)用隐喻更好理解软件开发 ...

打印 上一主题 下一主题

主题 956|帖子 956|积分 2868

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
保举言

   盘算机科学领域中有着所有学科中最为丰富多彩的语言。你走进一间安全严密、温度精确控制在 20 ℃的房间,并在里面发现了病毒(virus)、特洛伊木马(Trojanhorse)、蠕虫(worm)、臭虫(bug)、逻辑炸弹(bomb)、崩溃(crash)、论坛口水战(flame)、双绞线转换头(twisted sexchanger)、另有致命错误(fatal error)…在其他领域中,你能遇得到这些吗?
这些形象的隐喻(比喻)形貌了软件领域中各种特定的现象和事物。像如许生动活泼的隐喻还能够形貌更加广泛的现象。借助这些隐喻,我们能更深刻地理解软件开发的过程。
  本章的主题是隐喻,隐喻对科学有什么资助?怎样通过隐喻相识”软件开发“这一活动、隐喻怎样资助软件开发?相信读了这一个章节,你就明白了隐喻的力气
本书其他章节的内容并不直接依靠在这一章中讨论的隐喻。因此,如果想直接学习实践方面的知识,你可以跳过本章不读;而如果你想更清晰地理解软件开发的过程,请读读这一章吧。
读书笔记



  • 隐喻的重要性

    • 重要的研发成果常常产自类比(analogy)。通过把你不太理解的东西和一些你较为理解、且十分类似的东西做比力,你可以对这些不太理解的东西产生更深刻的理解。这种使用隐喻的方法叫做“建模(modeling)”。
    • 比如化学家凯库勒曾梦见一条蛇咬着本身的尾巴,醒来后他意识到类似的环状分子布局正好能够解释苯的各种特性。后来的进一步实验证实了他的这一假说 (Barbour 1966)。气体的分子活动理论则是基于一种所谓的“撞球(billiard-ball)”模型,光的波动理论则重要是在研究光和声音之间相似性的根本上发展起来的光和声音都有振幅(亮度、响度)、频率(颜色、音)和其他一些共有属性。
    • 模型的威力就在于其生动性,让你能够把握整个概念。它能隐隐地暗示各种属性(properties)、关系 (relationships)以及需要补充查证的部分(additionalareas ofinquiry)。不外偶然候,当隐喻的概念被太过引申时,模型会误导人们。当科学家们寻求“以太”的时候,他们就是太过地引申了模型。

  • 盘算机历史上的隐喻

    • Bachman 曾经把天文学中托勒密到哥白尼的转变,与20世纪70年代早期盘算机编程方面的变革做了比力。当1973 年 Bachman 做这个比力时,数据处理正在从“以盘算机为中心(computer-centered)”的观点向“以数据库为中心(database-centered)”的观点转变。Bachman 指出,过去的数据处理是把所有数据看作流经盘算机(flowing through a computer)的一连卡片流(stream ofcards)(以盘算机为中心的观点),如今则转变为把焦点放到数据池 (pool of data)上,而盘算机偶尔涉足此中(以数据库为中心的观点)。

  • 人们常常轻蔑隐喻的力气。对前面的每一个例子而言,很自然地有人会说:“嗯,恰当的隐喻固然是更有效,但其他隐喻都是错的!”虽然这是一种很自然的反应,实际远非如此简单。科学发展的历史并不是一系列从“错误”的隐喻到“精确”的隐喻的转变,而是一系列从“不太符合”的隐喻到“更好”的隐喻的转变也是从不是很贴切的隐喻到更贴切的隐喻的转变,还是从在一个方面暗示人们到在另一个方面暗示人们的转变。
  • 究竟上,那些被更好的新模型所替代的旧模型也依然是很有效的。工程师们仍旧在使用牛顿力学来解决大部分的工程问题逐一虽然从理论上说,牛顿力学已经被爱斯坦的理论所取代。
  • 相对于其他学科而言,软件开发还是一门很年轻的学科,它还没有成熟到拥有一套尺度隐喻的程度。因此一定存在许多或相互补充、或相互抵触的隐喻。某些隐喻相对好一些,而另一些则比力糟糕。你对隐喻有多理解,也就决定了你对软件开发有多理解。
  • 怎样使用软件中的隐喻

    • 起首,与其说一个软件隐喻像是一张门路图,还不如说它是一盏探照灯。它不会告诉你到那里去寻找答案,而仅是告诉你该怎样去寻找答案。隐喻的作用更像启示(heuristic,启发、试探法),而不是算法(algorithm)。
    • 那么该怎样使用软件中的隐喻呢?应该用它来提高你对编程问题和编程过程的洞察力;用它来资助你思考编程过程中的活动,想象出更好的做事情的方法。你不可能看到一行代码并说它违反了本章所形貌的某个隐喻。但随着时间的流逝人们会发现,相对于不善运用隐喻的人来说,那些使用隐喻来照亮本身的软件开发过程的人,他对于编程的理解会更好,并且能够更快地写出更好的代码。

  • 对于软件开发而言的隐喻

    • 软件开发即写作
    • 软件开发即栽培
    • 软件开发即系统生长
    • 软件开发即制作
    • 这四个隐喻都代表了软件开发的性质,但是前三种还是不敷恰当。第四种比喻重要表现了软件开发存在诸多阶段、软件开发在中更大的规模和更高的复杂度会带来更多的结论、本身编写能够获取的代码是没故意义的(本身从头制作家具是没故意义的)、差异的软件项目能从差异的开发方法中获益、布局修改比边缘修改花费高、更大的项目意味着需要更高级别的规划
    • 按房屋建筑所作的这一隐喻,可以向许多其他方向引申逐一这也是隐喻这方法如此强有力的一个原因。有许多常见的软件开发术语都是从建筑这一隐喻中衍生出来的:软件架构(建筑学,architecture)、支持性测试代码(脚手架scaffolding)、构建(建设,construction)、根本类(foundation classes)以及分离代码(tearing code apart)。你可能还听说过更多这一类的词语。

  • 能有效地开发高质量软件的人们,在长年累月中积累了大量的技术、本领和诀窍。技术并不是规矩(rule),它只是分析工具 (analytical tools)。好的工匠知道完成某项工作要用哪样工具,也知道该怎样精确地使用。程序员也该如许。编程方面的知识学得越多,你脑中的工具箱中就会有更多的分析工具,也会知道该在何时用这些工具,以及怎样精确地使用它们。
我的复述

本章的主题是隐喻,先容了隐喻在科学上的资助,先包庇喻对于软件开发的重要性,先容了软件开发中的四个隐喻。
什么是隐喻

隐喻即是类比,比喻,科学常用隐喻来资助我们相识一些复杂概念,气体的分子碰撞模型、光的波动理论(同声音比力)。
盘算机历史上也有过隐喻,曾经我们把所有数据看作流经盘算机(flowing through a computer)的一连卡片流(stream ofcards)(以盘算机为中心的观点),如今则转变为把焦点放到数据池 (pool of data)上,而盘算机偶尔涉足此中(以数据库为中心的观点)。
对于软件开发的隐喻



  • 软件开发即写作
  • 软件开发即栽培
  • 软件开发即系统生长
  • 软件开发即制作
  • 这四个隐喻都代表了软件开发的性质,但是前三种还是不敷恰当。第四种比喻重要表现了软件开发存在诸多阶段、软件开发在中更大的规模和更高的复杂度会带来更多的结论、本身编写能够获取的代码是没故意义的(本身从头制作家具是没故意义的)、差异的软件项目能从差异的开发方法中获益、布局修改比边缘修改花费高、更大的项目意味着需要更高级别的规划
隐喻怎样资助软件开发/ 隐喻的力气



  • 用它来资助你思考编程过程中的活动,想象出更好的做事情的方法。你不可能看到一行代码并说它违反了本章所形貌的某个隐喻。但随着时间的流逝人们会发现,相对于不善运用隐喻的人来说,那些使用隐喻来照亮本身的软件开发过程的人,他对于编程的理解会更好,并且能够更快地写出更好的代码。
  • 能有效地开发高质量软件的人们,在长年累月中积累了大量的技术、本领和诀窍。技术并不是规矩(rule),它只是分析工具 (analytical tools)。好的工匠知道完成某项工作要用哪样工具,也知道该怎样精确地使用。程序员也该如许。编程方面的知识学得越多,你脑中的工具箱中就会有更多的分析工具,也会知道该在何时用这些工具,以及怎样精确地使用它们。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

大连密封材料

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表