用隐喻来更充分地理解软件开发
隐喻(metaphors)即比喻,在这里指用现实生活的具体事物来描述计算机世界中的虚拟事物。病毒(virus)、流(stream)、池(pool)、库(library)等都是这方面的经典例子。现实世界的构建是缓慢的,很多事物的出现都有漫长的过程,然而计算机世界则是在短短的几十年间快速构建起来的,很多新的概念、新的架构、新的范式不断涌现。这些东西很抽象,看不见也摸不着,我们该怎样更好地理解这些新事物呢?隐喻或许是一个不错的方法。一个好的隐喻可以让我们复用生活中的经验,例如,Linux中有一个概念叫管道(pile),指的是将一个程序的输出作为另一个程序的输入的指令。在使用这个指令时,我的大脑里会出现一个管道的形象,接收我前一个程序的输出,并将其原封不动地倾倒给下游的程序,而且不会弄洒一点东西。这样的一个简单的联想可以让我轻松地记住管道的功能和性质:传输数据和幂等性质。再比如并行计算模型中的生产者-消费者模型(producer-consumer),生产者负责产生数据或任务,消费者使用数据或完成任务,在使用了这个隐喻之后,代码的编写和函数、变量的命名将变得非常简单。隐喻(metaphors)即比喻,在这里指用现实生活