“字符串”的词源


58

因此很明显,一串东西是一系列的东西,因此是一系列字符/字节/等。也可以称为字符串。但是谁首先把它们叫做弦?什么时候?并且在什么情况下它停留在周围?我一直想知道这一点。


10
已经问过stackoverflow
Alb

1
@Mark抱歉,没有意识到这是惯例。说得通。
Alb

1
@Alb没问题。供您和其他人参考(该问题被标记为重复),Stack Overflow上存在的问题不会影响该问题的状态,但是对网络上的其他问题进行注释和记录绝对有帮助这可能有助于回答。

1
Alb,对于user4051的一个很好的回答,我建议删除引用了stackoverflow问题的评论,并在其中添加指向该问题的链接。
泰勒·科利尔

1
请注意,当我投票关闭时,我认为我们应该保留这个问题作为路标。这个问题的答案比Programmers.SE或Stack Overflow上其他任何类似问题的答案都更加彻底和完整。这也是一个有趣的问题,可以客观地回答。

Answers:


47

在雨果1963年引用之前,我们能得到真正的引用吗?是。约翰·麦卡锡(John McCarthy)从1960年4月开始在符号表达式的递归函数及其由机器进行的计算(第一部分)中使用“字符串”一词。

对于原子符号,我们将使用大写拉丁字母和数字字符串。

但对于这个问题更有用的是,将字符串作为数据类型的引用:

任何允许的字符字符串[都是] L表达式。

那不是一个很好的例子。麦卡锡说“一串字符”时并没有像程序员今天所说的那样专门使用“字符串”。您可以轻松地向Java程序员说“字符串”,他们会知道“字符”部分是隐式的:McCarthy的用法没有演示此功能。让我们尝试回到1950年代,看看麦卡锡是否玩得很安全,或者那时真的不存在这个名词。LISP可能基于数学演算,因此在这里可能不会有太大帮助,因此McCarthy的字符串函数可能是该想法在字符串处理中的第一个应用。

1960年代重要的字符串处理系统是1964年的SNOBOL,一种字符串操作语言。这引用了上面麦卡锡的论文,但也讨论了COMIT和SCL。他们在SCL上引用的工作尚未发布:不幸的是死路一条。

COMIT更易于跟踪。《计算机编程艺术》(第1卷,第3版,第461页)告诉我们,VH Yngve在1963年撰写了CACM文章。但是我正在寻找最早使用“字符串”的方法,因此我将寻找早期出版物的作者。

我找到的第一个是1958年7月发布的《机械翻译程序设计语言》。它仅包含单词“ string”的一种用法:

在字典中查找标点符号或空格之间的每个连续字符串。

再次,这种用法就像麦卡锡的用法:这并不是“字符串”在当今意义上被使用的证据。详细查看该论文,我们看到数据结构是卡上的“行”(允许延续较长的“行”)。

好的,我们将继续探讨COMIT的历史,看看能得到什么。第一个有用的参考文献是用于机械翻译的COMIT系统,摘自1959年6月的会议记录。

如果我们想用COS(F)D(F)替换D SIN(F),其中F是不受限制的,并且可以是任意任意的组成序列,则可以使用$表示该字符串。

这似乎更类似于我们今天使用它的方式:“字符串”单独存在,并且奖金具有可识别的特殊符号:在某些BASIC语言中,美元符号仍用于表示字符串变量。

大约从这个时候开始,“字符串”一词在ACM '58会议论文集的Perlis和Smith所用的用于处理符号字符串的命令语言中也出现了很多次,在Share 709系统中: Boehm和钢。

在1960年代初期,在ACM数字图书馆中搜索“字符串”会产生62个结果,包括“ ALGOL中的字符串处理”,“新语言中的字符串处理”和“字母数字信息的列表类型存储技术”之类的标题。到那时看来,这个想法已经根深蒂固。

我认为在计算机科学术语中,“字符串”作为字符的有序列表在1960年左右的几年中变得很普遍。在此之前,Yngwe和McCarthy之类的作者可以说“字符串”,并确保它们是可以理解,但不能以今天使用的意义将“字符串”用作裸词。

简写可能是由Perlis和Smith论文介绍给计算主流的。它尚未被广泛引用,但其中一个重要的引文是1960年4月约瑟夫·史密斯(Joseph W. Smith)对ALGOL句法和语义增强(与麦卡锡(McCarthy)对LISP的描述在CACM的同一期中)。从那篇论文:

本文的目的是为ALGOL提出一套语法和语义扩展。拟议的扩展旨在帮助描述该语言中的“字符串”操作;它们并不构成用于符号操作的全面语言。

对我来说,这构成了“字符串”的证据,“字符串”意味着在学术词典中肯定了用于符号计算的数据类型,并且很重要地引入了用于商业计算的工具。

顺便提一句,Jean Sammet(1972)的《编程语言:历史与未来》表明COMIT和SNOBOL是字符串操作的前身,因此我相当有信心不会出现更早的示例。


2
哇。那里的考古很好。
sclv 2013年

4
这使我想起了一个过程,该过程将像火车一样的火车所使用的“汽车火车”变成了作为交通工具的“火车”。从“字符串”到仅“字符串”的过渡是关键
凯特·格雷戈里

2
OED已经完成了这项工作。字符串条目(付费专区,但英国图书馆成员可能可以访问)的条目为 “ 1954 Jrnl。Assoc。Computing Machinery 1 120/2一个有限的,可能为空的字母序列称为字符串。” 在我看来,这正是现代用法。
AakashM

1
@AakashM感谢您的参考,他们1954年的结果与我在1950年代发现的其他结果一致。单词“串”时,仅在这个意义上“的文字串”用它在这个意义上的意义进行了说明。直到1960年左右,作者才可以不加解释地使用“字符串”,并且它已成为具有该问题中所使用的更具体含义的专业术语。

1
@AakashM OED于1954年根据Math。等进行分类。按确定的顺序排列的一系列符号或语言元素,第一个示例摘自1932年Symbolic Logic书籍。他们有一个单独的计算条目线性的记录或数据序列,我在答案中添加了1956年第一个例子
雨果

14

并不是一个完整的答案,但是在1400年代末期已经出现了使用字符串来表示“排列成一行的多个对象”的用法。资源

这基本上是相同的用法。


5

我可以在计算中找到的最早参考文献是1963年 3 月的流星:字符串转换LISP解释器》,作者是麻省理工学院AI实验室的Daniel G. Bobrow。

牛津英语词典具有从较早的实例计算1956年发行的杂志的美国计算机协会的

预留区域用于来回穿梭控制字段的字符串,直到获得完全排序的序列。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.