直到最近我才想到,但我不确定为什么我们称之为字符串strings
。我是.NET程序员,但我相信字符串的概念几乎存在于每种编程语言中。
在编程之外,我不相信我曾经听过用string
这个词来描述文字或字母。一个快速的Google,'定义:字符串'产生了一系列与字母,单词或与编程相关的任何性质概念无关的定义。
我的猜测是,在当天,字符串实际上只是特定长度的字符数组,最后通常带有分隔字符。但是,我没有看到从“字符数组”到string
的自然过渡。
有人能为我们调用字符串strings
的原因提供一些见解吗?
答案 0 :(得分:33)
我的假设一直是编程术语起源于以下“字符串”一词的定义(来自Merriam-Webster):
(1):排列在一行中的一系列事物<一串汽车> <一串名字>
(2):一系列相似的项目(如位,字符或单词)
由于编程中的字符串只是一个有序的字符序列,因此将其称为“字符串”(或简称为“字符串”)似乎是最可能的来源。
答案 1 :(得分:29)
来自this参考:
1971年的OED(第3097页)引用了1891年 世纪大词典中的一个来源 密尔沃基哨兵1898年1月11日 (第3节,第1页)的效果 这是一个合成者的术语。打印机 会贴上他们的文字 在长条带中生成 字符。 (据推测,他们是 由脚支付,而不是由字支付!) 引述说这并不罕见 为合成者创造更多 每小时1500(字符?)。
答案 2 :(得分:11)
从搜索ACM参考书目开始,似乎字母串在20世纪60年代在计算机科学中获得了它的意义。在一开始,字符串是一般类型的序列或列表,例如,从1958年开始A command language for handling strings of symbols。
This article在1964年明确提到“字符串”。
不幸的是,我无法访问收费站后面的全文。
答案 3 :(得分:8)
我猜想数学家在编程语言中采用“字符串”之前很久就会使用它。图灵机有效地操作琴弦。图灵可能没有使用过这个术语,但它在自动教科书中无处不在,可以追溯到几十年前。
我能找到的最早的参考资料是1944年的一本文章中的一个片段,该文章由逻辑学家Emil Post在AMS公告中提出的“递归可枚举的正整数及其决策问题”。幸运的是,AMS提供免费下载的完整文章的在线档案。这是一个链接:http://www.ams.org/journals/bull/1944-50-05/S0002-9904-1944-08111-1/S0002-9904-1944-08111-1.pdf
我认为毫无疑问他正在使用计算机科学中使用的传统意义上的“字符串”。第286页“为了工作目的,我们在 - 转换字母b,并考虑1和b的“字符串”,如 11b1bb1。对诸如“b1bP产生P1bb1”等字符串的操作 我们称之为正常运作。这种特殊的正常操作是 仅对以b1b开头的字符串进行复制,派生的字符串为 然后通过首先删除初始b1b从给定的字符串中获取, 然后在最后加上1bb1。因此b1bb变为b1bb1。“
答案 4 :(得分:6)
我怀疑这是因为string
原本只是一系列数据值:“我只是把它们串在一起”等等。这些值不一定是字符。这个一般概念的一个非常常见的用法恰好是一系列字符,这就取代了这个词的一般含义。
答案 5 :(得分:5)
我在计算机上可以找到的最早的参考文献是1963年3月由麻省理工学院AI实验室的Daniel G. Bobrow撰写的METEOR: A LISP Interpreter for String Transformations。
然而,定义15d。在牛津英语词典中是:
计算记录或数据的线性序列。
......以及1956年计算机协会期刊的第一次引用:
预留区域来来回切换控制字段串,直到获得完全排序的序列。
这种用法自然遵循定义15c。:
数学等。一系列符号或语言元素的确定顺序。
...首先用于 Clarence Irving Lewis和Cooper Harold Langford 的符号逻辑(1932):
除了偶然之外,命题不是标记串或一系列声音。
这反过来又从许多其他更早的定义中得出结论。
答案 6 :(得分:2)
这个词最初用于区分元素的特定顺序无关紧要的一组值(例如,一组随机的测量样本)和另一个只能在命令时保留其含义的值也保留。最初字符串可以是任何类型的值的集合,但由于在大型机后期,字符串是最常见的类型,因此值为字符的事实变为“默认”。
答案 7 :(得分:1)
在谈论Javascript历史时道格拉斯·克罗克福德说“没人知道”,并提供了一些选择: http://www.youtube.com/watch?v=RO1Wnu-xKoY#t=2989
我发现了一份报告,其中据称,计算机历史上第一次引用一系列字符作为“字符串”。我认为它位于pdf第4页的右上角,编号为47:
http://web.eecs.umich.edu/~bchandra/courses/papers/Naure_Algol60.pdf
答案 8 :(得分:1)
字符串是一系列离散对象(通常是char
)。
考虑到这一点,我可能会猜测它可能与“珍珠串”相关的隐喻有关。弦上的每个珠子都是一个字符。
答案 9 :(得分:-2)
它被称为字符串,因为它实际上是一个char类型元素的数组。
话虽如此,他们通过这个数组“串在一起”(或者它串在一起),将它们变成一个“字符串”。