Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String a'定义背后的历史;字符串';_String_Programming Languages_Terminology_History - Fatal编程技术网

String a'定义背后的历史;字符串';

String a'定义背后的历史;字符串';,string,programming-languages,terminology,history,String,Programming Languages,Terminology,History,直到最近我才考虑过这个问题,但我不知道为什么我们称字符串为strings。我是一名.NET程序员,但我相信字符串的概念几乎存在于每种编程语言中 在编程之外,我相信我没有听说过用来描述单词或字母的string。在谷歌上快速搜索一下“Define:string”,就会得到一系列与字母、单词或任何与编程相关的自然概念无关的定义 我的猜测是,在当时,字符串实际上只是特定长度的字符数组,通常在末尾有一个分隔字符。但是,我看不到从“字符数组”到string的自然过渡 有人能解释一下为什么我们称字符串为str

直到最近我才考虑过这个问题,但我不知道为什么我们称字符串为
strings
。我是一名.NET程序员,但我相信字符串的概念几乎存在于每种编程语言中

在编程之外,我相信我没有听说过用来描述单词或字母的
string
。在谷歌上快速搜索一下“Define:string”,就会得到一系列与字母、单词或任何与编程相关的自然概念无关的定义

我的猜测是,在当时,字符串实际上只是特定长度的字符数组,通常在末尾有一个分隔字符。但是,我看不到从“字符数组”到
string
的自然过渡


有人能解释一下为什么我们称字符串为
strings

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


也就是说,它们通过这个数组“串在一起”(或者是串在一起),这个数组将它们变成了一个“字符串”。

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

(1) :一系列排列成一行或似一行的事物

(2) :相似项的序列(如位、字符或字)

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

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

参考:

1971年的牛津英语词典(第3097页)引用了1891年的一句话 《世纪词典》中的一个来源 1898年1月11日密尔沃基哨兵报 (第3节,第1页)大意是 这是一个排字的术语。印刷工 会把他们的文字贴上去 在一条长长的 人物。(大概是吧 用脚来支付,而不是用语言来支付!) 引述说这并不罕见 供合成器创建多个 每小时1500个字符


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

通过搜索ACM参考书目,字符串一词似乎在20世纪60年代的计算机科学中获得了它的含义。开始时,字符串是一种普通的序列或列表,例如1958年的序列或列表

1964年明确提到“字符串”


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

我在计算方面能找到的最早参考资料是1963年3月麻省理工学院人工智能实验室的Daniel G.Bobrow的

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

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

。。。引用1956年《计算机械协会杂志》的第一句话:

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

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

一系列符号或语言元素,按一定的顺序排列

。。。第一次用于克拉伦斯·欧文·刘易斯和库珀·哈罗德·朗福德的符号逻辑(1932年):

命题不是一串串的标记,也不是一系列的声音,除非附带说明

这反过来又继承了许多其他的、更早期的对一行中的事物的定义。

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


我能找到的最早的参考资料是1944年逻辑学家埃米尔·波斯特在《美国医学科学院公报》上发表的一篇文章《可递归枚举的正整数集及其决策问题》中的一个片段。幸运的是,AMS提供了免费下载的完整文章的在线档案。以下是一个链接:

我认为毫无疑问,他使用的是计算机科学中传统意义上的“字符串”。第286页“出于工作目的,我们在- 介绍字母B,并考虑“1”和“B”的“字符串”,例如 11b1bb1.对诸如“b1bP产生P1bb1”这样的字符串的操作 我们称之为正常操作。这种特殊的正常操作是ap- 仅可折叠到以b1b开头的字符串,派生字符串为 然后从给定字符串中首先移除初始b1b,
然后在最后加上1bb1。因此,b1bb变成了b1bb1。”

在一次关于Javascript历史的演讲中,道格拉斯·克罗克福德说“没人知道”,并给出了几个备选方案:

我在报告中找到了这个,据称,在计算机历史上第一次提到一系列字符作为“字符串”。我认为它在pdf第4页的右上角列,编号为47:


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


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

如果这是准确的,那么听起来很可能就是答案。我们从pri的世界中获取了许多这样的术语