Anscheinend verwenden Python , PHP und Ruby alle den Namen "argv", um auf die Liste der Befehlszeilenargumente zu verweisen. Woher kommt der Name "argv"? Warum nicht so etwas wie "Args"?
Meine Vermutung ist, dass es von C kommt, wo das v für "Vektor" stehen würde. Wikipedia hat eine Fußnote , die besagt:
Der Vektorbegriff im Namen dieser Variablen wird im herkömmlichen Sinne verwendet, um sich auf Zeichenfolgen zu beziehen.
Es gibt jedoch keine Quelle für diese Informationen. Wirklich, ich bin gespannt, ob es Wurzeln gibt, die noch weiter zurückliegen. Hat C es benutzt, weil etwas vorher es benutzt hat?
history
command-line
entry-point
Mark Hildreth
quelle
quelle
Antworten:
Während die anderen Antworten auf
argv
C hinweisen , woher kam C die Idee, ein Array als "Vektor" zu bezeichnen?Direkt kam es von BCPL . Obwohl
argv
sich BCPL auf den Vektor von (String-) Argumenten bezieht, wurden in Vektoren zwar Strings gespeichert, diese waren jedoch String-Literale und arbeiteten wie Pascal-Strings. Der Vektor hatte zwei Elemente: die Länge beiliteral!0
und die Zeichen beiliteral!1
. Nach Clive Feder wurden manipuliert Saiten durch „entpackt“ , um sie in die Zeichen - Arrays, um das Array umzuwandeln , dann „Neuverpackung“ , um sie in Zeichenketten: Vergleichen dieses mit C , wo Zeichenketten sind Zeichen - Arrays.Also, ja, C hat v für vector verwendet, weil etwas anderes dies zuvor getan hatte. Hat irgendetwas vor BCPL den Vektor auf diese Weise verwendet? BCPL war selbst eine Vereinfachung der "Cambridge [oder kombinierten] Programmiersprache": Dies wurde
vector
als Synonym für ein eindimensionales Array undmatrix
als Synonym für ein zweidimensionales Array verwendet. Dies stimmt mit der mathematischen Notation von Vektoren und Matrizen überein , obwohl diese in CPL nur praktische Mnemoniken sind und keine der Eigenschaften aufweisen, die mit den mathematischen Strukturen verbunden sind.Können wir die Zeit in Bezug auf Computersprachen weiter zurückdrängen? Ein möglicher Zweig unseres Trails ist kalt. CPL wurde stark von Algol 60 beeinflusst (das Update von 1963). Jetzt hatte ALGOL 68 Typen, die als "gepackte Vektoren" bezeichnet wurden, wie z. B . :
bits
undbytes
: Diese waren jedoch nicht in früheren Versionen von Algol enthalten, die sich nurARRAY
auf Array bezogen. Da BCPL aus dem Jahr 1966 stammt, muss CPL davor (aber danach) gewesen sein: ALGOL 68 (standardisiert in den Jahren 1968 und 1973) kann keinen direkten Einfluss gehabt haben.Andererseits beziehen sich die Hauptmerkmale von CPL auch auf das LISP-System von McCarthy . Obwohl hier kein Vektor verwendet wird , um auf eine Datenstruktur im System selbst zu verweisen, und zwar S-Ausdrücke , M-Ausdrücke und L-Ausdrücke (L-Ausdrücke sind Zeichenfolgen, daher ist jede Zuordnung zwischen Vektor und Zeichenfolge verschwunden) nicht verwenden Vektor in einem anderen Sinne repräsentieren die „Werte einer Anzahl von Variablen“ repräsentiert „den Zustand der Maschine zu jeder Zeit“. Wir haben also Beweise für eine Annahme, die in den Kommentaren gemacht wurde: Die Verwendung des Wortes "Vektor", um "Array" im Rechnen zu bedeuten, ergibt sich aus der Anwendung des ähnlichen Begriffs in der Mathematik.
quelle
argv
stammt aus C, wobei diemain()
Funktion einenargv
Parameter verwendet, der einen Vektor von Argumenten für das Programm darstellt. Man könnte auch sagen, dass es von Unix kommt, was fast dem von C entspricht, da die meisten Unix-Entwicklungen in C stattgefunden haben und Unix und C eine lange gemeinsame Geschichte haben.quelle
argc
(Anzahl der Argumente) war die Anzahl der Elemente inargv
, da Arrays in C keine festen Abmessungen haben.In C kann die
main()
Funktion zwei Parameter annehmen:argc
"Argumentanzahl" undargv
"Argumentvektor". In C haben Sie keine ausgefallenen Objekte wie Vektoren, weshalb Sie die Anzahl der Elemente als übergeben müssenargc
. Im Gegensatz dazu haben die Sprachen, die Sie erwähnt haben, Dinge wie Vektoren oder Listen, die ihre eigene Größe kennen, so dass sieargc
nicht benötigt werden. Aber der Name istargv
geblieben.quelle