如何理解:信息就是位+上下文?

140 阅读3分钟

在阅读《深入理解计算机系统》这本书中,有这么一段话:

系统中所有的信息一包括磁盘文件、存储器中 的程序、存储器中存放的用户数据以及网络上传送的数据,都是由一串比特表示的。区分不同 数据对象的惟一方法是我们读到这些数据对象时的上下文。比如,在不同的上下文中,同样的 字节序列可能表示一个整数、浮点数、字符串或者机器指令。

这是书中的截图:

image.png

什么是:位 (bit)

"位"这个字是英文单词 bit 的中文翻译,也可以翻译作“比特”。

在计算机系统中,所有信息都以二进制位的形式存在。无论是文件、内存中的代码还是网络上传输的数据,它们在底层都是由一系列的 0 和 1 构成。

把“位”理解成生活中的一些最小单位,比如砖块,砖块长得都一样,但是可以建造成不一样风格的建筑。而建筑的设计图就是“上下文”,设计师决定了砖块发挥的作用和意义。

什么是:上下文 (context)

上下文决定了“位”所表达的含义。在不同的上下文环境中,相同的二进制序列可能代表完全不同的信息。在文本文件中,ASCII 编码将每个字节映射到一个字符,而在一个图像文件中,相同的字节代表了像素的值。

自然语言的上下文

在自然语言中,同一句话,因为理解方式的不同,而有不同的意义。比如一句古诗 “春江潮水连海平,海上明月共潮生。” 有人读出了豁达开朗的意境,也有人读出了空旷寂寞的心情。这种理解方式,就是上下文。这里的上下文就是人所处的环境,所经历的事情,以及理解事物的方式。

计算机系统中的上下文

在计算机系统中,以文件为例,文本文件和二进制文件虽然都是由二进制位组成,但它们的上下文不同。文本文件通常使用ASCII或UTF-8等编码,这些编码为每个字节赋予了一个字符的意义。而二进制文件则直接表示数据,他们的含义取决于读取这些文件的程序。

编程中的上下文

编程语言中的上下文通常指的是程序执行的当前状态,包括变量的值、函数的调用状态、执行的位置等。就像戏剧中的演员,需要了解剧本、舞台布景和其他演员的动作,才能准确地表演。在编程中,上下文帮助程序员管理状态、控制流和执行过程。

总结

总的来说,信息就是位+上下文,是计算机系统对人类世界的模拟。人类所理解的世界就是由普通的最小单位组成的,比如分子、原子等微观颗粒,因为组合方式的不同,而产生了大千世界。计算机的世界也是如此,位就像原子一样,因为上下文不一样而形成了不同的文件、程序、系统。这些统称为信息,信息需要被程序解读才有意义,而人类使用程序。就像几万年前人类使用工具一样,这是人类的智慧。