《代码大全》学习笔记(2):利用隐喻对编程进行更深刻的理解

2.1 隐喻的重要性
       重大发现往往是从类比中产生的。通过把一个你所陌生的事物与你所熟知的事物比较,你会对它有进一步的认识,从而形成你对它的独到的深刻理解,这种隐喻方法被称之为“模型化”。
       模型的力量在于它能提供生动形象的概念而易被人整个接受。


2.2 如何使用软件隐喻
         一个公式是一套完整建立的、进行某一些任务的规则;它的结果是可以预测的、确定的,并不取决于运气。
        启发是一种帮助你寻求答案的技术,它的结果往往和运气有关。
        公式和启发之间的主要区别是:它们与答案之间的直接程度;公式给予直接指令;而启发则告诉你该怎样找到这些指令,或者至少告诉你到哪里寻找它们。
        编程中最富于挑战性的问题便是将问题概念化,编程中许多错误往往都是概念性错误,因为每个程序在概念上都是独特的,所以创立一套可以指导每一个问题的规则是非常困难,甚至是不可能的;这样,从总体上知道该如何解决问题,便几乎和知道某一特定问题的答案一样重要了。
       怎样使用软件隐喻的呢?应该用它来帮助你获得关于编程过程的内在理解,利用它们来帮助你考虑编程活动,想象解决问题的更好办法。


2.3 通常的软件隐喻
2.3.1 软件书写:写代码(Writing Code)
       几乎有50%的软件开发工作量是在软件最初发行之后才进行的。编写软件,主要工作量集中在初始阶段。在软件创建中,把精力集中于初始阶段往往不如在初始工作完成后,再集中精力进行代码的重新调整工作。
2.3.2 软件播种:生成系统(Growing a System)
       你设计一小部分,编码一小部分,测试一小部分,然后在某个时候把它加到系统上,通过小步走,你减少了每次可能遇到的错误。
2.3.3 软件珍珠培植法:系统积累(System Accretion)
       增量设计、构造、测试是软件开发的最强有力工具之一。
2.3.4 软件创建:建造软件(building software)
        较大的规模和复杂性往往意味着可以产生较大的成果。
2.3.5 实用软件技术:智能工具箱(The Intellectual Toolbox)
        把方法和技巧当作工具是很有益处的,因为这样可以使我们对其有一个正确的态度。
2.3.6 复合隐喻(Combing Metaphors)
        使用隐喻是一项模糊的事情。


2.4 小结

(1) 隐喻通过把软件开发与你所熟知的事情联系在一起,从而使你对其有更深刻的理解。

(2) 一些隐喻要好于其它隐喻。

(3)把软件创建与建造建筑物类比,表明开发软件前要精心准备,并表明了大规模项目与小规模项目之间的差别。

(4) 认为软件开发实践是智能工具箱中的工具进一步表明,每个程序员都有许多自己的工具,没有任何一种工具是万能的;为每件工作选择合适的工具,是成为一个优秀程序员的首要素质之一。

 

       本章小结:

        本章的主题是“隐喻”。

        我个人认为,这里的“隐喻”,其实就是一个“模型”的概念。我们可以把很多生活中的东西搬到软件开发中。例如,面向过程和面向对象,瀑布模型、数据挖掘等。善于总结规律,将事物抽象出一个共同的特征,是软件开发人员必备的素质。

上一篇:动态无线接入网络 | 《5G移动无线通信技术》之九


下一篇:Swift 简简单单实现手机九宫格手势密码解锁