3.11 传播福音
如果你正尝试向一个C程序员解释为什么Perl好,自动的记忆术是一个好例子。几乎所有的程序员都熟悉缓存技术。即使他们没在自己的程序里使用过任何缓存技术,他们也一定熟悉这个概念,来自网页浏览器里的,他们的计算机的缓存内存里的,DNS服务器里的,他们的网页代理服务器里的,或别的地方的缓存。缓存,就像大多数简单实用的主意,是无处不在的。
增加缓存不是非常麻烦,但至少需要几分钟修改代码。算上所有修改,你有可能犯错,这不得不计算进平均时间,一旦你完成了,可能发现缓存是个糟糕的主意,因为缓存管理的开销比函数的运行时间更长,或者因为在一次典型运行中,缓存命中的没有期望的多;那么就不得不移除缓存代码,然后你再次冒着犯错误的风险。这不是夸大问题,当然,在每个方向上至少会花费几分钟。
有了记忆术,增加缓存代码不再需要几分钟了,只要几秒钟就可以了。可以增加一行这样的代码:
memoize 'myfunction';
然后就不可能犯下严重的错误和破坏函数。如果记忆术表明这是个糟糕的主意,你可以在一秒钟以内关闭它。多数程序员会对这样的便利满意的。如果你有五分钟向一个C程序员解释Perl比C好在哪里,记忆术是一个很好的例子。