78

直到最近我才考虑过,但我不确定我们为什么要调用 strings strings。我是一名 .NET 程序员,但我相信字符串的概念几乎存在于每种编程语言中。

在编程之外,我不相信我听说过string用来描述单词或字母的词。快速搜索一下“定义:字符串”会产生一堆定义,这些定义与字母、单词或与编程相关的任何性质的概念无关。

我的猜测是,在过去,字符串实际上只是特定长度的字符数组,最后通常带有分隔符。但是,我看不到从“字符数组”到string.

有人可以提供一些关于我们为什么调用字符串的见解strings吗?

4

10 回答 10

39

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

(1):排列成一行或好象排列成一行的一系列事物<a string of cars> <a string of names>

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

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

于 2009-05-18T22:59:21.943 回答
33

这个参考:

1971 年的牛津英语词典(第 3097 页)在 1898 年 1 月 11 日的密尔沃基哨兵报(第 3 节,第 1 页)中引用了 1891 世纪词典,大意是这是一个合成器的术语。打印机会将他们生成的文本粘贴到一长串字符中。(据推测,他们是按脚支付的,而不是按字付钱的!)引述说,合成师每小时创作超过 1500 个(字符?)并不罕见。

于 2009-05-18T23:02:14.340 回答
14

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

这篇文章在 1964 年明确提到了“字符串”。

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

于 2009-05-19T07:31:21.920 回答
12

我猜想“字符串”早在被编程语言采用之前就已经被数学家使用了。图灵机有效地在弦上运行。图灵可能没有使用过这个术语,但它在自动机教科书中随处使用,可以追溯到几十年前。

我能找到的最早的参考资料是逻辑学家 Emil Post 在 AMS 公告中的 1944 年文章“递归可枚举正整数集及其决策问题”的 Google 书籍中的一个片段。幸运的是,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。

于 2011-06-22T00:12:14.860 回答
7

我能在计算中找到的最早参考资料来自 1963 年 3 月的METEOR: A LISP Interpreter for String Transformations,作者 Daniel G. Bobrow 在 MIT 的 AI 实验室。

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

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

... 并引用了 1956 年计算机协会杂志的第一句话

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

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

数学。等。按一定顺序排列的一系列符号或语言元素。

...并首次用于Clarence Irving Lewis 和 Cooper Harold Langford符号逻辑(1932):

命题不是一串记号或一串声音,除非是偶然的。

这反过来又源于许多其他更早的对同一行事物的定义。

于 2011-05-30T20:07:23.510 回答
7

怀疑这是因为string最初的意思只是一系列数据值:“我将把它们串在一起”等等。这些值不必是字符。这个一般概念的一个非常常见的用途恰好是一系列字符,这成为了这个词的一般含义。

于 2009-05-18T23:00:05.407 回答
3

该词最初用于区分一组与元素的特定顺序无关的值(例如,一组随机测量样本)和另一个只有在顺序也保留时才能保留其含义的值. 最初,字符串可以是任何类型的值的集合,但由于在后大型机时代,字符串是迄今为止最常见的类型,值是字符的事实成为“默认值”。

于 2009-05-18T23:18:31.763 回答
1

字符串是一系列离散对象(通常是char)。

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

于 2014-07-26T02:10:52.150 回答
1

在一次关于 Javascript 历史的演讲中,Douglas Crockford 说“没人知道”并给出了一些替代方案: http ://www.youtube.com/watch?v=RO1Wnu-xKoY#t=2989

我发现了一份报告,据称,这是计算机历史上第一次将一系列字符作为“字符串”引用。我认为它位于pdf第4页的右上角,编号为47:

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

于 2013-11-07T11:56:11.883 回答
-2

它被称为字符串,因为它实际上是一个 char 类型元素的数组。

话虽这么说,它们通过这个数组“串在一起”(或者是串在一起),这将它们变成了“串”。

于 2009-05-18T22:58:37.983 回答