字符串转义码(\n、\t...)源自何处?

Bra*_*don 5 string history

纯粹想知道...因为它们今天仍然存在并在 C# 中使用...

使用字符串转义码的模式从何而来?它首先以什么语言出现?哪些语言(如果有)以不同的方式解决了问题?

Mic*_*lon 3

我怀疑这些转义码源自 B,一种用于 Honeywell 6000 GCOS 操作系统的高级汇编编程语言。这种语言是贝尔实验室基于英国语言 BCPL 开发的。由于 BCPL 相当冗长,B 开发人员简化了语法并添加了大括号等内容来替换 BEGIN 和 END。这就是 B 名称的由来,因为它是 BCPL 的缩写形式。

后来贝尔实验室的一些人创建了一种语言,它是 B 的后继者,主要是添加了类型和标准 I/O 库。因为是B的继任者,所以他们选择了BCPL这个名字中的下一个字母。

我不记得在 B 之前看到过反斜杠符号,并且由于 C 和 UNIX 从 B 继承了它,所以我认为 B 是这个符号的起源,或者更具体地说,贝尔实验室是起源。这种表示法完全有可能在 B 之前的其他贝尔实验室软件中使用,因为他们是一个多产的软件生产商,其中大部分免费分发给大学,例如我在 1970 年代中期就读的大学。

顺便说一句,转义序列的想法早在这之前就已经存在,可以追溯到 19 世纪的博多码,它是一种固定长度的 5 位二进制代码,旨在取代可变长度的莫尔斯电码。Baudot 具有 SI(Shift In)和 SO(Shift Out)代码,可以将字母转义为大写变体,就像打字机上的 Shift 键一样。

  • 反斜杠表示法是 C 开发的,B 使用星号('*n')。http://cm.bell-labs.com/cm/cs/who/dmr/btut.html (2认同)