代码大全读书笔记2---用隐喻来充分理解软件开发

借助隐喻可以更加深刻地理解软件开发的过程。通过把不太理解的东西和一些你较为理解、且十分类似的东西做比较,这样可以对不太理解的东西产生更深刻的理解,这种使用隐喻的方式叫做建模。

隐喻的威力在于其生动性,能够让你把握整个概念,暗示各种属性、关系以及需要查证的部分。但是过度引申时,模型也会误导人们。

软件隐喻的作用更像是启示,而不是算法,告诉你如何去寻找答案。算法是一套定义明确的指令使你完成某个特定的任务,算法是可预测的、确定的、不易变化的。

算法与启发式方法之间的区别就在于其距离最终解决办法的间接程度:算法直接给你解决问题的指导,而启发式方法告诉你如何发现这些指导信息或者至少到哪里去寻找他们。

对于编程来说,最大的挑战是将问题概念化(建模),编程中的很多错误是概念性的错误,因为每一个问题在概念上都是独特的,所以要找到一套能解决所有问题的指导规则是很难得,甚至不太可能,所以能够一般性质地知道大致如何解决问题,至少也和知道如何解决特定问题一样有价值。

软件的牡蛎养殖观点:牡蛎制造珍珠的过程隐喻软件开发,其中关键词语有“增量的”,“迭代的”,“自适应的”以及“演进的”。以增量方式进行设计、编译和测试,都是目前已知的最强有力的软件开发概念。

在进行增量式开发时,先做出软件系统的一个尽可能简单、但能够运行的版本,它不必接受真实的输入,无须对数据进行真正的处理,不用产生真实的输出,仅仅只需要一个足够强壮的骨架,支撑起未来将要开发的真实系统。对于标志处的每一项基本功能,仅需要调用虚假的类。在骨架形成之后,要一点点地在其上附着肌肉和皮肤:将虚假的类替换为真正的类,接受真实的输入,产生真实的输出。

软件构建:首先要决定准备建一个什么类型的房子---问题定义,接下来与建筑师探讨总体设计---软件架构设计,然后画出详细的蓝图并雇承包人---软件详细设计,在然后打地基、搭房屋框架、砌墙、通水电等---软件构建,油漆工、装修工将房子美化---软件优化,检查人员检查工地、地基、框架、布线等---软件评审。

通常自己编写现成的、可以买得到的代码是没有意义的,除非在特殊情况下需要定制。

时间: 2024-08-10 07:58:47

代码大全读书笔记2---用隐喻来充分理解软件开发的相关文章

代码大全读书笔记 - 开篇

说起来,<代码大全>这本书书名实在恶俗.在我推荐给展鸿的时候,他说"雾草,这名字看着就像天朝地摊那种XX全书一类的山寨书-" 是的,其实买这个书的原因就是京东买100减30,我买了10块钱的东西,凑了一下单,书到手之前还以为是代码清单,或者以前ACM模板一样的书,甚至买来的一个月里面都拿来当枕头(足足10+cm厚). 这个周末偶然的翻开,才发现,世界上竟然有如此精彩的书,而且很多东西讲的虽然是软件项目,但给了我很多引申到其他东西上面的灵感.很多地方我读到之后,都会兴奋的心跳

代码大全读书笔记

在元旦假日看完了这本书,算上目录的话差不多1000页吧,由于这本书主要讲述了思想和流程体系,至于代码结构和优化这一块, 之前有看过设计模式,所以我到也就是过了一遍,所以总体看的很快的并没有精读,至于笔记那也就记了一小部分.基本上并无特别 指出. 但我对这本书的评价还是挺高的,这本书把软件体系的方方面面都进行了总结,通过抛出问题,举出范例然后再加以正确的思路引导. 不过对我而言本书最大的收获并不是了解了软件开发体系,或是高质量的编写代码的方法,而是发现了软件体系中那些边边角角的工作 一些我们常常抱

代码大全读书笔记1---进入软件构建的世界

构建实质建设的过程,构建的过程包含计划.设计.检查工作的一些方面. 软件开发过程中的各种不同的活动: 1.定义问题(problem definition) 2.需求分析(requirements development) 3.规划构建(construction planning) 4.软件架构或高层设计(software architecture or high-level design) 5.详细设计(detailed design) 6.编码与调试(coding and debugging)

代码大全读书笔记(二)

选择编程语言 程序员使用熟悉的编程语言生产率高于使用不熟悉的编程语言,并且高级语言比低级语言的效率要高得多,作者列出了几种高级语言的每一行代码与等效的c语言代码行数之比.比如java是2.5,而perl和python就是6.而且编程语言影响程序员的思维随处可见,作者举了个他遇到的项目,那就是一群fortran程序员去写c++,最后写出来的代码就是伪装成c++的fortran代码.   说道表达能力,象python,perl,ruby之类的脚本语言是c或者java之类的不能比的,就像上面作者给出的

代码大全读书笔记(一)

开始读时,并没有打算读完.因为书太厚了时间也不充足,当我看过前言后,发现可以跳读,所以我就从符合我身份的一章--11章读起 变量名的力量: 刚开始学C语言时,什么都不了解,所以对代码的细节养成也不是很好,写代码写变量名总是跟着感觉走,因为都是作业形式,所以起什么变量名都无所谓,下次也不会再看曾经写过的代码了.然而,当我的学习逐渐深入时,写的代码越来越长(当然也不会太长),记忆变量的含义就产生了困难,但是由于年轻,记忆力好,所以记得住就过去了.随着时间的流逝,总有一天在新的项目中发现其中的小部分很

JavaScript、jQuery、HTML5、Node.js实例大全-读书笔记3

技术非常多,样例非常多.仅仅好慢慢学,慢慢实践!!如今学的这本书是[JavaScript实战----JavaScript.jQuery.HTML5.Node.js实例大全] JavaScript.jQuery.HTML5.Node.js实例大全-读书笔记2 3.3 响应鼠标动作 图3-2的效果已经有了,须要鼠标来操作展示想看的照片.这就须要在对应的地方加上事件. 3.3.1 响应小照片单击动作 在3.2.3的代码里提供了显示小图列表的eg.showThumb()方法.在单击小图片时要显示大图片.

JavaScript、jQuery、HTML5、Node.js实例大全-读书笔记2

技术很多,例子很多,只好慢慢学,慢慢实践!!现在学的这本书是[JavaScript实战----JavaScript.jQuery.HTML5.Node.js实例大全] JavaScript.jQuery.HTML5.Node.js实例大全-读书笔记1 3.2 照片加载与定位 根据功能设计,可以先写好 HTML 结构基础,再配好 CSS 做出大致效果,最后用 JavaScript加上各种动作.首先请看 HTML 代码结构. 3.2.1 HTML 代码 CSS代码保存到 eg3.css 文件中,Ja

简单使用Git和Github来管理自己的代码和读书笔记

以前不知道使用代码管理工具,最后写的一些东西都没有了,由于硬盘坏了或者不小心格式化了之类的,后来使用了Git 和Github来托管自己的代码和读书笔记方便了不少,到哪里只要有网就可以把自己的东西拷贝下来继续使用. 我这里简单的记录一下我使用的过程,最简单的使用都是,高级的功能我一直没有使用到,虽然买一本<Git权威指南> 但是很多东西用不到就不能够真的会.下面开始简单介绍我使用的方法,我这个是在windows上使用的.我使用分两种情况, 因为我的代码都是在Linux下写的,所以在linux下主

代码大全学习笔记(什么是构建)

  构建有时也被认为是"coding"或者"programing".编码算不上是最贴切的词,因为它有一种"把已经存在的设计机械化的翻译成计算机语言"的意味,而构建并不是机械化的,需要可观的创造力和判断力,人们常常用编程代替构建.   构建的步骤: 1.验证前面的工作已经完成(如定义问题,需求分析). 2.确定如何去测试所写的代码. 3.设计并编写类或者子程序. 4.创建并命名变量和具名常量. 5.选择控制结构,组织语句块. 6.对你的代码进行单元