Answers:
虽然其他答案argv
都来自C,但是C是从哪里得到将数组称为“向量”的想法呢?
直接来自BCPL。尽管argv
是指(string)参数的向量,但BCPL确实在向量中存储了字符串,但它们是字符串文字,它们的工作方式类似于Pascal字符串。向量具有两个元素:的长度为literal!0
和的字符为literal!1
。根据Clive Feather的说法,通过将字符串“解包”为字符数组,转换数组然后将其“重新打包”为字符串来操纵字符串:将C与字符串为字符数组的C进行比较。
所以是的,C使用v作为向量,因为之前已经做过其他事情。现在,在BCPL之前,有没有以这种方式使用向量?BCPL本身是“剑桥编程语言”的简化:它用作vector
一维数组matrix
的同义词和二维数组的同义词。这与向量和矩阵的数学符号是一致的,尽管在CPL中它们只是方便的助记符,没有任何与数学结构相关的属性。
我们可以在计算语言方面及时回溯吗?我们足迹的其中一个潜在分支将变得寒冷。CPL受Algol 60(1963年更新)的影响很大。现在,ALGOL 68具有被称为“打包向量”的类型,例如bits
和,bytes
但是在早先ARRAY
提到数组的Algol发行版中却没有。由于BCPL始于1966年,所以CPL一定在此之前(但在1963年之后):ALGOL 68(在1968年和1973年标准化)不能直接产生影响。
另一方面,CPL的主要功能也参考了麦卡锡的LISP系统。尽管这不使用vector来引用系统本身中的数据结构,但它们是S表达式,M表达式和L表达式(L表达式是字符串,因此矢量和字符串之间的任何关联都已消失),确实使用向量来表示“多个变量的值”,该“变量的值”表示“随时的机器状态”。因此,我们有证据支持在评论中做出的假设:在计算中使用“向量”一词来表示“数组”来自数学中类似术语的应用。
argv
来自C,main()
函数使用一个argv
参数,该参数表示程序参数的向量。您也可以说它来自Unix,这几乎与说它来自C相同,因为大多数Unix开发都发生在C中,并且Unix和C有着悠久的共享历史。
argc
(参数数)是中的项目数argv
,因为在C中,数组没有固定的维数。