许多编程语言都使用该语法a[i]
来引用i
数组,序列或向量的'th元素a
-特别是C和Pascal(从1960年代末至1970年代初)。另一方面,某些较早的语言(例如Fortran(1950年代))不使用此约定。另外,我学习了一些数学,数学家使用方括号作为间隔,下标用于数组和矩阵的下标(如果将数组视为非负整数的函数,则使用正则括号)。
因此,我的问题是:用于数组下标的方括号在哪里/如何/在什么情况下发展?由谁开发?
注意:这个问题完全不是关于在C中使用大括号的问题。
许多编程语言都使用该语法a[i]
来引用i
数组,序列或向量的'th元素a
-特别是C和Pascal(从1960年代末至1970年代初)。另一方面,某些较早的语言(例如Fortran(1950年代))不使用此约定。另外,我学习了一些数学,数学家使用方括号作为间隔,下标用于数组和矩阵的下标(如果将数组视为非负整数的函数,则使用正则括号)。
因此,我的问题是:用于数组下标的方括号在哪里/如何/在什么情况下发展?由谁开发?
注意:这个问题完全不是关于在C中使用大括号的问题。
Answers:
C和Pascal的主要前身语言是Algol。最早的版本是Algol 58,它使用方括号表示数组的声明和引用。
Algol使用方括号而不是括号的原因是三个方面:
请注意,与C主要使用数组来索引内存的C语言不同,Algol允许同时指定上下索引范围。再次,这符合其更多的数学意图。事实上,Algol多年来一直是伪代码的事实语言。
[x]
被用于等价类,而不是向量或矩阵中的指示位置。
这是一本有趣的文章:https : //en.m.wikipedia.org/wiki/Bracket
以下是我自己的观察。
C设计师非常小心地采用了字符和构造的含义,因为它们已经在常规书面语言中使用了数百年。这样做,他们必须使用相当有限的ASCII字符子集。在西方语言中,书面文本中使用了更多的分组字符,但这些字符并未将其转换为ASCII。
在常规语言中,括号的含义是在不中断主要消息的情况下提供辅助信息。这在调用过程时很有意义:主要消息是要执行的操作,子信息是参数。
花括号用于分组。“这些词集合在一起,应与其余词区分开”。因此,将它们用于代码块,复合语句很有意义。
方括号用于插入不属于原始文本的文本,以阐明原始文本并提供上下文。或用省略号表示省略:[...]。“她(女王)没有被逗乐”。在计算机编程中,将括号用于数组索引有点意义,因为它是提供的一种上下文。“数组?什么数组?嗯,特别是那个元素。” 但是,即使原始含义不能完全涵盖计算机语言中的使用,也没有太多其他ASCII选项可供选择。
因此,我想说这是现有技术与当时可用的组合,导致使用方括号进行数组索引。
[由于亚历克斯的评论而编辑]
根据此消息来源,ASCII于1963年引入,并于1968年获得政府批准。根据此Wiki的说法,C语言的开发直到1969年才开始。因此,Ritchie先生在选择字符时似乎一直在关注这一被广泛支持的新标准ASCII。
另请参阅其他答案,以证明Algol是“多种语言之母”的强大影响力。