第二章:理解隐喻

隐喻的重要性:隐喻在学科的认知和学习中起到了很重要的作用,可以让人们从更感性的角度去理解知识,概况结论。其实这个过程我们可以叫它为建模,如果把太阳作为中心,地球以这个中心旋转,这个往复的过程可以看作是建模的过程,因此诞生了日心学说的这种思想。往往很多著名的思想都是从细微处建模开始推敲出来。计算机科学相比较其他的学科来说还是比较年轻的学科,还没有成熟到拥有一套标准隐喻的程度,因为计算机学科本科就是变化多端的。因此你对隐喻有多理解,也就决定了你对软件开发有多理解。

如何使用软件隐喻:相比较于具体的算法来说,算法以它的高度标准化,一个输入只能有一个输出的具体性而作为代表,隐喻则表现为对问题的概括性描述,更倡导启发性思维。拿书中的一个例子来说:

编程这门学科往往更适合启发性思维来琢磨,因为需求总会在不断变化,不可能有具体的路线让你遵循,但是启发式思维却不会容易过时。所以将隐喻用起来,能让自己的思考方式飞起来。

常见的软件隐喻:

(1)软件中的书法:写作代码

  1. 在小型程序或者项目中,此种隐喻往往是可以成立的,但在大型项目中,这种隐喻则不能够成立,因为后者更加偏向于协作开发,而不是写作这种单人主义更加突出的形式。
  2. 写作与软件编程的试错成本也是不一样的,写作一旦开始,格调往往定稿然而不易更改,而对于软件领域来说一切都只是刚刚开始,后期的各种需求变动才是主旋律。 

(2) 软件的耕作法:培植系统

这种隐喻也是不恰当的,培植代表的播种期间,农作物的慢慢生长,最终的硕果都是平时的生长慢慢堆积起来的,但是培植过程中,却具有完全靠老天爷的赏赐的这种特性,这并不符合软件开发的调调,因为项目构建过程中有很多情形是需要人为干预的。

(3)软件的养殖观点:系统生长

生长这个隐喻在我看来是特别符合软件工程的画像的,软件工程在我看来就是先搭好简易的框架,然后往里面不断的填充的真实的数据以及代码,一切的发展都是增量式的,这符合当下敏捷开发的特性,即增量的(incremental),迭代的(iterative),自适应性的(adaptive),演进的(evolutionary)。

好了,来个总结,隐喻是有多种多样的,我们面对的系统也是多种多样的,所以擅于应对不同的需求,采用不同的隐喻对于我们来理解整体框架大有脾益,因为不同的隐喻之间并不相互排斥,组合起来往往会发挥更大的威力。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值