跳到主要内容

移动与复制

· 阅读需 2 分钟

以 C++ 为代表的许多编程语言会对「赋值」这种操作进行分类:一种叫移动赋值,一种叫复制赋值。概念上不太难理解,比如现有一个变量 a,如果想把 a 的内容赋给一个新的变量 b(写作 b = a),你可以选择不关心赋值后 a 的「死活」(其实就是 a 消失了),只要 b 可以用就行了——这叫移动;你也可以选择 ab 各持一份相同的数据——这叫复制。

把同样地概念搬到我们的生活中,我发现我们最常打交道的两种世界——物理世界与数字世界——在「移动」和「复制」上有截然相反的特性。

物理世界里,事物的「移动」是非常容易的,而「复制」非常困难。从技术上讲,「复制」其实是不可能的(我们无法创造物质)。《刑法》想要避免的盗窃行为,其实就是未经授权地「移动」物体,所以防止「移动」是保护财产权的一个核心诉求。

数字世界里,事物的「复制」是非常容易的,而「移动」其实不容易。数字世界里的「移动」并不是真的移动,而是一次「复制」加上一次「擦除」。有意思的是,「复制」行为本身并没有物理学后果,而「擦除」信息才是需要付出热力学代价的行为(之前写文章介绍过)。《版权法》里定义的盗窃行为变成了「复制」,而「移动」反而往往是合法的(比如一个软件授权只要从一台电脑上彻底删除,大多数情况可以转移到另一台电脑用)。

物理世界里,我们无法做到真正的复制;数字世界里,我们无法做到真正的移动。不知道这种对偶关系的背后,是不是藏着更加基本的原理呢?