隐喻--启发 更深刻的理解 |
早晨一上班就想起了隐喻,不知道是不是我那位找到工作的缘故,世界上有的东西是不可预测的,但又是可以隐隐约约可见的,记得在敏捷软件开改里有
这么一个概念(MetaPhor),又想起我的毕设,不值得一提。我觉得这个概念有点像那个探险游戏,就是不知道下一步做什么,但知道下一步一定是找某个
东西,才知道将来要做什么,就这样一步一步,最终完成探险。
软件隐喻更像是一束搜索灯光,而不是一张地图,它并不会告诉你去哪里寻找答案;它只给你启发,教你如何寻找答案,而不是像数学算法一样规定出到
哪里找答案。一个公式是一套完整建立的、进行某一些任务的规则。它的结果是可预测的、确定的,并不取决于运气。公式会告诉你直接从 A 点走到 B
点,中间不准绕路,不准随意顺便访问C、D、E 或 F
点,也不准停下来闻一下玫瑰花香或者喝杯咖啡什么的,一切必须按规定来。启发是一种帮助你寻求答案的技术。它的结果往往和运气有关,因为它只告诉你如何去
找,而并未告诉你应该找到些什么。它不会告诉你怎样直接从点 A 到点 B.甚至很可能它根本就不知道点 A 和点 B
在哪里。事实上,可以认为启发是一个穿着外套的公式。它往往不可预测,更富有趣味,不会保证一定会发生或不会发生什么。
公式和启发之间的区别是微妙的,这两个例子或许会说明一些问题。它们之间的主要区别是:它们与答案之间的直接程度。公式给予直接指令;而启发则告诉你该怎样找到这些指令,或者至少告诉你到哪里寻找它们。
如果有一套指令告诉你该如何解决程序中的问题,这当然会使编程变得很容易,而且结果也可以预测了。但是编程科学目前还没有那样发达,也许永远也
不会。编程中最富于挑战性的问题便是将问题概念化,编程中许多错误往往都是概念性错误,因为每个程序在概念上都是独特的,所以创立一套可以指导每一个问题
的规则是非常困难,甚至是不可能的。这样,从总体上知道该如何解决问题,便几乎和知道某一特定问题的答案一样重要了。
隐喻仅仅是启发,而不是公式,因此,它更倾向于比较随便,无拘无束。隐喻通过把软件开发与你所熟知的事情联系在一起,从而使你对其有更深刻的理
解。一些隐喻要好于其它隐喻。把软件创建与建造建筑物类比,表明开发软件前要精心准备,并表明了大规模项目与小规模项目之间的差别。认为软件开发实践是智
能工具箱中的工具进一步表明,每个程序员都有许多自己的工具,没有任何一种工具是万能的。为每件工作选择合适的工具,是成为一个优秀程序员的首要素质之
一。 |