"字符串"定义背后的历史

Rob*_* P. 67 string history programming-languages terminology

直到最近我才想到,但我不确定为什么我们称弦strings.我是.NET程序员,但我相信字符串的概念几乎存在于每种编程语言中.

在编程之外,我不相信我听过string用于描述单词或字母的单词.一个快速的Google,'定义:字符串'产生了一系列与字母,单词或与编程相关的任何性质概念无关的定义.

我的猜测是,在当天,字符串实际上只是特定长度的字符数组,最后通常带有分隔字符.但是,我没有看到从'字符数组'到...的自然过渡string.

有人能为我们调用字符串的原因提供一些见解strings吗?

Clo*_*sic 34

我的假设一直是编程术语起源于以下"字符串"一词的定义(来自Merriam-Webster):

(1):一系列的东西排成一行或似乎在一行中的一串汽车> <a name of names>

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

由于编程中的字符串只是一个有序的字符序列,因此将其称为"字符串"(或简称为"字符串")似乎是最可能的起源.


Pau*_*ier 28

这个参考:

1971年的OED(p.3097)引用了1891年1月11日密尔沃基哨兵来源的1891年世纪词典(第3节,第1页),这是一个合成者的术语.打印机会将他们生成的文本粘贴在一长串字符中.(据推测,他们是用脚支付的,而不是单词!)引用说,合成者每小时创造超过1500(字符?)并不罕见.

  • 如果这是准确的,那么听起来可能就是答案.我们从印刷世界中采用了许多这样的术语,例如,"字体"是用于拉出各个铅类型以填充"弦"的碗."字体"指的是它与洗礼字体(喷泉)的相似性. (9认同)
  • 我不认为早期计算中的打印会有太大影响.字体等后来出现了图形显示和点阵打印机. (2认同)

sta*_*lue 11

通过搜索ACM参考书目,似乎字母串在20世纪60年代在计算机科学中获得了它的意义.在一开始,字符串是一种通用的序列或列表,例如用于处理 1958年的符号串的命令语言.

本文明确提到了1964年的"字符串".

不幸的是,我无法访问收费站后面的全文.


小智 9

我猜想数学家在编程语言中采用"字符串"之前很久就会使用它.图灵机有效地操作琴弦.图灵可能没有使用过这个术语,但它在自动教科书中无处不在,可以追溯到几十年前.

我能找到的最早的参考资料是1944年的一本文章中的一个片段,该文章由逻辑学家埃米尔·波斯特在AMS公告中提出的"递归可枚举的正整数及其决策问题".幸运的是,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的"字符串",例如11b1bb1.对诸如"b1bP产生P1bb1"之类的字符串的操作我们称之为正常操作.这个特殊的正常操作仅适用于以b1b开头的字符串,然后从给定字符串中获取派生字符串,方法是首先删除初始b1b,然后在1bb1处结束.因此b1bb变为b1bb1.


Jon*_*eet 6

怀疑它是因为string最初只是意味着一系列数据值:"我只是把它们串在一起"等等.这些值不一定是字符.这个一般概念的一个非常常见的用途恰好是一系列字符,并且这取代了该字的一般含义.


Hug*_*ugo 5

我在计算机上可以找到的最早的参考文献是1963年3月的METEOR:由麻省理工学院AI实验室的Daniel G. Bobrow编写的LISP字符串转换解释器.

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

计算记录或数据的线性序列.

......以及1956年计算机协会杂志的第一次引用:

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

这种用法自然遵循定义15c:

数学.等等一系列符号或语言元素的确定顺序.

...首先用于Clarence Irving Lewis和Cooper Harold LangfordSymbolic Logic(1932):

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

这反过来又从许多其他的,更早的定义中得出结论.