명령 행 인수의 이름을 'argv'로 지정하는 규칙은 어디에서 왔습니까?


18

그것은 것 같다 파이썬 , PHP루비 이름 "변수는 argv는"명령 행 인수의 목록을 참조하는 모든 사용. "argv"라는 이름은 어디에서 유래합니까? 왜 "args"가 아닌가?

내 생각에 그것은 v가 "벡터"를 의미하는 C에서 나온 것입니다. Wikipedia에는 ​​다음과 같은 각주 가 있습니다.

이 변수 이름의 벡터 용어는 문자열을 나타내는 전통적인 의미로 사용됩니다.

그러나이 정보에 대한 소스가 없습니다. 정말 뿌리가 더 먼 곳에 있는지 궁금합니다. C가 그것을 사용하기 전에 그것을 사용 했습니까?


2
그리고 나는 항상 "v"는 "값"을 의미했습니다
warren

답변:


25

다른 답변 argv은 C에서 나온 것으로, C는 배열을 "벡터"라고 부르는 아이디어를 어디서 얻었습니까?

직접 BCPL에서 나왔습니다 . argv(문자열) 인수의 벡터를 참조 하지만 BCPL에는 벡터에 문자열이 저장되어 있지만 문자열 리터럴이었고 파스칼 문자열처럼 작동했습니다. 벡터에는 길이 literal!0와에 문자 의 두 가지 요소 가 literal!1있습니다. Clive Feather 에 따르면 , 문자열은 문자열을 문자 배열로 "풀고"배열을 변환 한 다음 문자열로 "다시 포장"하여 문자열을 조작했습니다. 문자열 문자 배열 인 C와 비교하십시오 .

그렇습니다. C는 벡터에 v를 사용했습니다. BCPL 이전에 벡터가 이런 식으로 벡터를 사용 했습니까? BCPL 자체는 "캠브리지 [또는 결합 된] 프로그래밍 언어"의 단순화였습니다. 이것은 vector1 차원 배열matrix 의 동의어 와 2 차원 배열의 동의어로 사용되었습니다. 이것은 벡터와 행렬의 수학 표기법 과 일치 하지만 CPL에서는 편리한 니모닉이며 수학 구조와 관련된 속성이 없습니다.

컴퓨팅 언어와 관련하여 더 많은 시간을 되돌릴 수 있습니까? 트레일의 한 가지 지점이 차갑습니다. CPL은 Algol 60 (1963 년 업데이트)의 영향을 많이 받았습니다. 이제 ALGOL 68에는 bitsand와 같은 "packed vectors"로 설명 된 유형이 bytes있었지만, 이것들은 ARRAY배열을 참조한 Algol의 초기 릴리스에는 없었습니다 . BCPL은 1966 년에 시작되었으므로 CPL은 그 이전 (1963 년 이후) 이었어 야합니다. ALGOL 68 (1968 년과 1973 년에 표준화)은 직접적인 영향을 미칠 수 없었습니다.

반면 CPL의 주요 기능은 McCarthy의 LISP 시스템을 참조 합니다 . 이것은 벡터 자체를 사용하여 시스템 자체의 데이터 구조를 참조 하지 않지만 S- 표현식 , M- 표현식L- 표현식입니다 (L- 표현식은 문자열이므로 벡터와 문자열 간의 연관성이 사라졌습니다). 않는 다른 의미로 사용 벡터 "는 언제든지 기계 상태"를 나타내는 "변수의 개수의 값"을 표현한다. 따라서 우리는 의견에서 가정에 대한 증거를 가지고 있습니다. 컴퓨팅에서 '배열'을 의미하기 위해 '벡터'라는 단어를 사용한다는 것은 수학에서 유사한 용어를 적용하는 것에서 비롯됩니다.


1
C와 BCPL 사이에서와 마찬가지로 B에도 존재했습니다.
Robbie Dee

5
BCPL은 어디서 구했습니까? 수학에서 "벡터"는 1 차원 값 목록입니다.
Caleb

2
문자열을 벡터로 표현하는 것은 BCPL보다 훨씬 오래되었습니다 (예를 들어, 계산 이론에 관한 오래된 책을보십시오) . 실제로, 개념은 아마도 "문자열" (문자 시퀀스) 자체 보다 더 오래되었을 것입니다 .
BlueRaja-Danny Pflughoeft

1
@Caleb이 맞습니다. BCPL (~ 1967) 및 APL (~ 1960) 당시 대부분의 프로그래머는 수학 부서에서 교육을 받았습니다. 그 당시에는 학부 CS 프로그램이 거의 없었습니다.
로스 패터슨

2
@RossPatterson CPL은 캠브리지 출신으로 1953 년부터 컴퓨터 과학 학위를 취득했습니다 (전환 과정 임). 1960 년대까지 CS 졸업생이 부족하지 않은 몇 안되는 곳 중 하나 일 것입니다.

12

argvmain()함수는 argv프로그램에서 인수 벡터를 나타내는 매개 변수를 사용 하는 C에서 제공됩니다 . 또한 Unix에서 나온 것이라고 말할 수 있습니다. 이는 대부분의 Unix 개발이 C에서 발생했을 때 C에서 나온 것과 거의 동일하며 Unix와 C는 오랜 역사를 공유합니다.


1
항상 argv는 "인수 값"을 의미한다고 생각했습니다. 새로운 것을 배웠습니다 :)
Honza Brabec

2
C에서 배열의 크기는 고정되어 있지 않기 때문에 Right 및 argc(인수 수)는의 항목 수입니다 argv.
로스 패터슨

9

C에서 main()함수는 argc"인수 카운트" argv를 나타내는 "인수 벡터" 를 나타내는 두 개의 매개 변수를 취할 수 있습니다 . C에는 벡터와 같은 멋진 객체가 없으므로 항목 수를로 전달해야합니다 argc. 대조적으로, 언급 한 언어에는 자체 크기를 알고있는 벡터 또는 목록과 같은 것이 있으므로 argc필요하지 않습니다. 그러나 그 이름은 argv붙어있었습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.