Parece que Python , PHP y Ruby usan el nombre "argv" para referirse a la lista de argumentos de la línea de comandos. ¿De dónde viene el nombre "argv"? ¿Por qué no algo como "args"?
Mi conjetura es que proviene de C, donde la v representaría "vector". Wikipedia tiene una nota al pie que dice:
El término vector en el nombre de esta variable se usa en sentido tradicional para referirse a cadenas.
Sin embargo, no hay ninguna fuente para esta información. Realmente, tengo curiosidad si tiene raíces que se remontan aún más atrás. ¿Lo usó C porque algo antes lo usaba?
history
command-line
entry-point
Mark Hildreth
fuente
fuente
Respuestas:
Mientras que las otras respuestas señalan que
argv
proviene de C, ¿de dónde sacó C la idea de llamar a un conjunto un "vector"?Directamente, vino de BCPL . Aunque se
argv
refiere al vector de los argumentos (de cadena), BCPL tenía cadenas almacenadas en vectores, pero eran literales de cadena y funcionaban como cadenas de Pascal. El vector tenía dos elementos: la longitud enliteral!0
y los caracteres enliteral!1
. De acuerdo con Clive Feather , las cadenas se manipularon "desempacándolas" en matrices de caracteres, transformando la matriz y luego "reempaquetándolas" en cadenas: compárelo con C donde las cadenas son matrices de caracteres.Entonces sí, C usó v para vector porque algo más lo había hecho antes. Ahora, ¿hizo algo antes de que BCPL usara el vector de esta manera? BCPL era en sí misma una simplificación del "lenguaje de programación Cambridge [o combinado]": esto se usaba
vector
como sinónimo de una matriz unidimensional ymatrix
como sinónimo de una matriz bidimensional. Esto es consistente con la notación en matemáticas de vectores y matrices, aunque en CPL son simples mnemónicos y no tienen ninguna de las propiedades asociadas con las estructuras matemáticas.¿Podemos retroceder más en el tiempo con respecto a los lenguajes de computación? Una rama potencial de nuestro sendero se enfría. La CPL estuvo fuertemente influenciada por Algol 60 (la actualización de 1963). Ahora ALGOL 68 tenía tipos que se describían como "vectores empaquetados", como
bits
ybytes
: pero no estaban en versiones anteriores de Algol que solo seARRAY
referían a la matriz. Como BCPL proviene de 1966, CPL debe haber sido antes (pero después de 1963): ALGOL 68 (estandarizado en 1968 y 1973) no puede haber sido una influencia directa.Por otro lado, las características principales de CPL también hacen referencia al sistema LISP de McCarthy . Si bien esto no utiliza vector para referirse a una estructura de datos en el sistema en sí, aquellos ser S-expresiones , M-expresiones y L-expresiones (L-expresiones son cadenas, por lo que cualquier asociación entre el vector y la cadena ha desaparecido), se no uso vector en otro sentido para representar los "valores de una serie de variables" representa "el estado de la máquina en cualquier momento". Por lo tanto, tenemos evidencia de una suposición hecha en los comentarios: que el uso de la palabra 'vector' para significar 'matriz' en computación proviene de la aplicación del término similar en matemáticas.
fuente
argv
proviene de C, donde lamain()
función toma unargv
parámetro que representa un vector de argumentos para el programa. También podría decir que proviene de Unix, que es casi lo mismo que decir que proviene de C, ya que la mayoría del desarrollo de Unix ocurrió en C, y Unix y C tienen una larga historia compartida.fuente
argc
(recuento de argumentos) era el número de elementosargv
, porque en C, las matrices no tienen dimensiones fijas.En C la
main()
función puede tomar dos parámetros:argc
, que significa "número de argumentos", yargv
, lo que es sinónimo de "vector de argumento". En C no tiene objetos elegantes como vectores, por lo que debe pasar la cantidad de elementos comoargc
. Por el contrario, los idiomas que ha mencionado tienen cosas como vectores o listas que conocen su propio tamaño, porargc
lo que no es necesario. Pero el nombre seargv
quedó.fuente