上一次讨论了概念与实现的关系,这里用一段话来总结就是,概念是理想中的东西,而实现则是实实在在必须能用的东西,它们之间存在着“不可逾越的鸿沟”,就是实现必定对概念的某些东西进行了简化或者是丢弃。

而这个简化或者丢弃的过程,就是所谓的权衡取舍。

这里举一个例子:整数。

整数可以说是任何人都熟悉的数学内容了,可以说你还不会写字就应该能有整数的概念了,你能清楚地数出物体的数量,就算你不知道物体叫什么,怎么写。

那么在数学上的整数是无限的,连续的,等等性质。但是,在计算机里,不可能表示出无限,最好懂的原因就是,不可能用有限来表达无限,不然要用无限来表达什么呢?

于是乎,在计算机的实现中,我们就不可避免地要对整数进行表示上的修改了。

常见的做法就是使用某种固定大小的位串,如8个位,16个位等。这样可以满足整数概念中的连续,但对无限的概念则无法满足,会固定在某个范围里。

从上面这个例子里,可以看出,这套方案经过了权衡取舍,保留了概念中的某种特性,也舍弃了另一些特性。

也可以说,在这个权衡取舍的过程中,枷锁也逐步增加,以至于当我们用概念进行讨论时已变得不可行,必须深入到某个特定的实现中进行处理。

然而,很多时候,我们的甲方是没兴趣知道这些,或者也没有足够的知识去理解这些实现带来的枷锁。