В то время как другие ответы отмечают, что это argv
от C, откуда у C появилась идея назвать массив «вектором»?
Непосредственно, это прибыло из BCPL . Хотя это argv
относится к вектору (строковых) аргументов, в BCPL строки хранятся в векторах, но они были строковыми литералами и работают как строки Паскаля. Вектор имел два элемента: длину at literal!0
и символы at literal!1
. По словам Клайва Фезера , строки обрабатывались путем «распаковки» их в символьные массивы, преобразования массива, а затем «перепаковки» их в строки: сравните это с C, где строки являются символьными массивами.
Так что да, C использовал v для вектора, потому что что-то еще делало это раньше. Теперь, что-нибудь до того, как BCPL использовал вектор таким образом? Сам BCPL был упрощением «Кембриджского [или комбинированного] языка программирования»: он использовался vector
как синоним для одномерного массива и matrix
как синоним для двумерного массива. Это согласуется с обозначениями в математике векторов и матриц, хотя в CPL они просто удобная мнемоника и не имеют каких-либо свойств, связанных с математическими структурами.
Можем ли мы отодвинуться дальше во времени в отношении компьютерных языков? Одна потенциальная ветвь нашего следа остывает. На CPL сильно повлиял Algol 60 (обновление 1963 года). Теперь у ALGOL 68 были типы, которые были описаны как «упакованные векторы», такие как bits
и bytes
: но их не было в более ранних версиях Algol, которые только что ARRAY
ссылались на массив. Поскольку BCPL появился в 1966 году, CPL должен был быть до этого (но после 1963 года): ALGOL 68 (стандартизированный в 1968 и 1973 годах) не мог оказывать прямого влияния.
С другой стороны, Основные характеристики CPL также ссылаются на систему LISP Маккарти . Хотя здесь не используется вектор для ссылки на структуру данных в самой системе, но это S-выражения , M-выражения и L-выражения (L-выражения являются строками, поэтому любая связь между вектором и строкой исчезла), однако действительно использует вектор в другом смысле для представления «значений ряда переменных», представляющих «состояние машины в любое время». Таким образом, у нас есть доказательства предположения, сделанного в комментариях: использование слова «вектор» для обозначения «массива» в вычислениях происходит от применения аналогичного термина в математике.