Parece que Python , PHP e Ruby usam o nome "argv" para se referir à lista de argumentos da linha de comando. De onde vem o nome "argv"? Por que não algo como "args"?
Meu palpite é que ele vem de C, onde v representaria "vetor". A Wikipedia possui uma nota de rodapé que diz:
o termo vetorial no nome dessa variável é usado no sentido tradicional para se referir a cadeias.
No entanto, não há nenhuma fonte para essa informação. Realmente, estou curioso para saber se há raízes que remontam ainda mais para trás. C usou-o porque algo anterior a usou?
history
command-line
entry-point
Mark Hildreth
fonte
fonte
Respostas:
Enquanto as outras respostas observam que
argv
vem de C, onde C teve a idéia de chamar uma matriz de "vetor"?Diretamente, veio do BCPL . Embora
argv
se refira ao vetor de argumentos (string), o BCPL possuía strings armazenadas em vetores, mas eram literais de strings e funcionavam como strings de Pascal. O vetor tinha dois elementos: o comprimento emliteral!0
e os caracteres emliteral!1
. De acordo com Clive Feather , as strings foram manipuladas "descompactando-as" em matrizes de caracteres, transformando a matriz e depois as "reembalando" em strings: compare isso com C, onde strings são matrizes de caracteres.Então, sim, C usou v como vetor porque algo havia feito isso antes. Agora, algo antes do BCPL usou o vetor dessa maneira? O próprio BCPL era uma simplificação da "Cambridge [ou linguagem de programação combinada]": usada
vector
como sinônimo de uma matriz unidimensional ematrix
como sinônimo de uma matriz bidimensional. Isso é consistente com a notação matemática de vetores e matrizes, embora na CPL eles sejam apenas mnemônicos úteis e não possuam nenhuma das propriedades associadas às estruturas matemáticas.Podemos recuar ainda mais no tempo em relação às linguagens de computação? Um ramo potencial de nossa trilha fica frio. A CPL foi fortemente influenciada pelo Algol 60 (atualização de 1963). Agora, o ALGOL 68 tinha tipos que eram descritos como "vetores compactados", como
bits
ebytes
: mas eles não estavam nas versões anteriores do Algol, que apenas seARRAY
referiam ao array. Como a BCPL vem de 1966, a CPL deve ter sido antes disso (mas depois de 1963): o ALGOL 68 (padronizado em 1968 e 1973) não pode ter sido uma influência direta.Por outro lado, os principais recursos da CPL também fazem referência ao sistema LISP de McCarthy . Embora esta não usa vector para se referir a uma estrutura de dados no sistema em si, ser aqueles S-expressões , M-expressões e L-expressões (L-expressões são cadeias, portanto, qualquer associação entre o vector e cadeia desapareceu), ele faz uso vetor em outro sentido para representar os "valores de uma série de variáveis", representando "o estado da máquina a qualquer momento". Portanto, temos evidências de uma suposição feita nos comentários: que o uso da palavra 'vetor' para significar 'matriz' na computação vem da aplicação do termo similar em matemática.
fonte
argv
vem de C, onde amain()
função usa umargv
parâmetro que representa um vetor de argumentos para o programa. Você também pode dizer que vem do Unix, que é quase o mesmo que dizer que vem do C, pois a maioria do desenvolvimento do Unix aconteceu em C, e o Unix e o C têm uma longa história compartilhada.fonte
argc
(contagem de argumentos) foi o número de itens emargv
, porque em C, matrizes não têm dimensões fixas.Em C, a
main()
função pode assumir dois parâmetrosargc
:, que significa "contagem de argumentos" eargv
, que significa "vetor de argumento". Em C, você não possui objetos sofisticados, como vetores, e é por isso que você deve passar o número de itens comoargc
. Por outro lado, os idiomas que você mencionou têm coisas como vetores ou listas que possuem seu próprio tamanho e, portanto,argc
não são necessárias. Mas o nomeargv
ficou.fonte