编程语言不过是一种内存游戏,定义的变量也好,对象也好,都只是在内存中的特定编码。其实根本就没什么语言,有的只是编译器。是编译器决定怎么解释某种关键字及某种语法。语言只是编译器和大家的约定,只要写入这样的代码,编译器便将其翻译成某种机器指令,翻译成什么样取决于编译器的行为,和语言无关。

编程语言要将内存中的数据导出变成文件,则需要借助操作系统的I/O接口。或者将数据交予另一个进程,则需要借助操作系统提供的进程间通信接口。不管是I/O接口还是进程间通信接口都需要对数据进行编码(Encoding),或者说序列化(Serialization)。因为持久化存储和网络传输都是面向字节流的。序列化本质上是一种“降维”操作,将内存中高维的数据结构降维成单维的字节流,于是底层硬件和相关协议,只需要处理一维信息即可。

编程语言的伎俩无非三种:

  • 共享内存
  • I/O 接口
  • 进程间通信

而这些都需要对在内存的中数据进行编解码,所以这是一种内存游戏。

标签: none

评论已关闭