“string”定义背后的历史

我从来没有想过,直到最近,但我不知道为什么我们调用stringstrings 。 我是一名.NET程序员,但我相信string的概念几乎存在于每种编程语言中。

在编程之外,我不相信我已经听过用于描述单词或字母的单词string 。 快速谷歌的定义:string产生了一堆定义,与字母,单词或任何与编程相关的性质的概念无关。

我的猜测是,在当天,string实际上只是一个特定长度的字符数组,通常在末尾带有一个分隔字符。 但是,我没有看到从“字符数组”到string的自然转换。

有人可以提供一些见解,为什么我们称为stringstrings

从这个参考:

1971年OED(第3097页)在1898年1月11日的密尔沃基哨兵报(1831年第3部分)中引用了1891年的“世纪词典”,大意是这是一个合成词。 打印机会将他们生成的文本粘贴到一长串字符中。 (据推测,他们是用脚付钱,而不是用这个词付钱的)。引文说,合成者每小时创造超过1500(字符?)的情况并不less见。

我的假设一直是这个编程术语源于以下对“string”(来自Merriam-Webster)的定义:

(1):一系列东西排成一排或一排排(一串串的汽车)(一串名字)

(2):一系列相似的项目(比特,字符或单词)

由于编程中的string只是一个有序的字符序列,将其称为“string”(或者简称为“string”)似乎是最可能的起源。

通过ACM书目的search,似乎字串在20世纪60年代在计算机科学中获得了其意义。 在开始时,一个string是一个通用的序列或列表,例如一个处理 1958年的符号串的命令语言 。

本文在1964年明确提到“string”。

不幸的是,我不能访问收费站后面的全文。

怀疑这是因为string最初意味着一个数据值序列:“我会把它们串起来”等。这些值不一定是字符。 这个一般概念的一个非常常见的用法恰好是一连串的字符,并且这个字符作为该字的一般含义而被接pipe。

我曾猜测math家早在编程语言被采用之前就已经在使用“string”了。 图灵机有效地操作string。 图灵可能没有使用这个术语,但它在自动机教科书中随处可见,可以追溯到几十年前。

我能find的最早的参考资料是逻辑学家Emil Post在AMS公告中1944年的一篇文章“recursion地积聚正整数集合及其决策问题”的一部分。 幸运的是,AMS提供完整文章的在线档案免费下载。 这是一个链接: http : //www.ams.org/journals/bull/1944-50-05/S0002-9904-1944-08111-1/S0002-9904-1944-08111-1.pdf

我认为他毫无疑问是用传统意义上的“串”来使用计算机科学。 P.286“为了工作目的,我们引入字母b,并考虑1和b的”string“,如11b1bb1。对诸如”b1bP产生P1bb1“等string的操作,我们称之为正常操作。操作只适用于从b1b开始的string,然后从给定的string中获得派生的string,首先删除初始的b1b,然后在最后加上1bb1,这样b1bb变成b1bb1。

我在计算机上可以find的最早的参考文献是从MIT的AI Labs的Daniel G. Bobrow的1963年3月的“ METEOR:string转换LISP解释器”

但是,定义15d。 在牛津英语词典中是:

计算logging或数据的线性序列。

…和1956年计算机协会杂志的第一句话

将区域放置在一边以便来回交换控制字段的string,直到获得完全sorting的序列。

这个用法自然是从定义15c开始的:

math。 等等。符号或语言元素的顺序。

…首先用于Clarence Irving Lewis和Cooper Harold Langford符号逻辑 (1932):

命题不是偶然的,除了标记或一系列声音之外。

这又反过来从很多其他更早的定义中排列出来。

这个词最初是用来区分元素的特定顺序无关紧要的一组值(例如,一组随机抽样的测量值),另一个只有在保存顺序时才能保留其含义。 最初一个string可以是任何types的值的集合,但是由于在后主机时代,string是迄今为止最常见的一种,事实上,值是字符成为“默认”。

在关于Javascript历史的讨论中,道格拉斯·克罗克福德(Douglas Crockford)说:“没有人知道”,并给出了一些替代scheme: http : //www.youtube.com/watch?v= RO1Wnu-xKoY#t=2989

我发现这个报告,据说在电脑历史上有史以来第一次把一系列字符作为一个“string”。 我认为它在pdf第4页的右上angular,编号为47:

http://web.eecs.umich.edu/~bchandra/courses/papers/Naure_Algol60.pdf

一个string是一系列离散的对象(通常是char )。

鉴于此,我可能会猜测,这可能与“珍珠串”相关的隐喻有关。 string上的每个珠子都是单个字符。

它被称为string,因为它实际上是一个chartypes元素的数组。

也就是说,他们是通过这个数组“串在一起”(或串在一起),这变成了一个“string”。