Wygląda na to, że Python , PHP i Ruby używają nazwy „argv” w odniesieniu do listy argumentów wiersza poleceń. Skąd pochodzi nazwa „argv”? Dlaczego nie coś w rodzaju „argumentów”?
Domyślam się, że pochodzi z C, gdzie v oznaczałoby „wektor”. Wikipedia ma przypis, który mówi:
termin wektorowy w nazwie tej zmiennej jest używany w tradycyjnym znaczeniu w odniesieniu do ciągów znaków.
Jednak nie ma żadnego źródła tych informacji. Naprawdę jestem ciekawy, czy ma korzenie, które sięgają jeszcze dalej. Czy C użył tego, ponieważ wcześniej coś z niego korzystało?
history
command-line
entry-point
Mark Hildreth
źródło
źródło
Odpowiedzi:
Podczas gdy inne odpowiedzi wskazują, że
argv
pochodzi z C, skąd C wpadł na pomysł, aby nazwać tablicę „wektorem”?Bezpośrednio pochodzi z BCPL . Choć
argv
odnosi się do wektora argumentów (łańcuchowych), BCPL miał łańcuchy zapisane w wektorach, ale były literałami łańcuchów i działały jak łańcuchy Pascala. Wektor miał dwa elementy: długość oliteral!0
i znaki oliteral!1
. Według Clive Feather , łańcuchami manipulowano poprzez „rozpakowywanie” ich w tablice znaków, przekształcanie tablicy, a następnie „przepakowywanie” ich w łańcuchy: porównaj to z C, gdzie łańcuchy są tablicami znaków.Tak, C użył v do wektora, ponieważ coś innego już to zrobiło. Czy coś jeszcze przed BCPL używało wektora w ten sposób? BCPL samo w sobie było uproszczeniem „języka programowania Cambridge [lub Combined]”: używano go
vector
jako synonimu tablicy jednowymiarowej imatrix
jako synonimu tablicy 2-wymiarowej. Jest to zgodne z notacją matematyczną wektorów i macierzy, chociaż w CPL są one po prostu przydatnymi mnemonikami i nie mają żadnych właściwości związanych ze strukturami matematycznymi.Czy możemy cofnąć się w czasie w zakresie języków komputerowych? Jedna potencjalna gałąź naszego szlaku jest zimna. Algoryt 60 miał duży wpływ na CPL (aktualizacja z 1963 r.). Teraz ALGOL 68 miał typy, które zostały opisane jako „spakowane wektory”, takie jak
bits
ibytes
: ale nie były to wcześniejsze wersje Algola, które właśnieARRAY
odnosiły się do tablicy. Ponieważ BCPL pochodzi z 1966 r., CPL musiało być wcześniej (ale po 1963 r.): ALGOL 68 (znormalizowany w 1968 i 1973 r.) Nie mógł mieć bezpośredniego wpływu.Z drugiej strony, Główne cechy CPL odnoszą się również do systemu LISP McCarthy'ego . Podczas gdy nie jest stosowany wektor odnosi się do struktury danych w systemie się, te, które są s-wyrażeń , M wyrażeń i L-wyrażenia (L-wyrażenia są łańcuchy, więc związku pomiędzy wektorem i łańcucha zniknął), to ma zastosowanie wektora w innym sensie reprezentować „wartości wielu zmiennych” reprezentujący „stan urządzenia w dowolnym momencie”. Mamy więc dowody na założenie zawarte w komentarzach: użycie słowa „wektor” w znaczeniu „tablica” w obliczeniach wynika z zastosowania podobnego terminu w matematyce.
źródło
argv
pochodzi z C, gdziemain()
funkcja przyjmujeargv
parametr reprezentujący wektor argumentów do programu. Można również powiedzieć, że pochodzi z Uniksa, co jest prawie tak samo, jak powiedzenie, że pochodzi z C, ponieważ większość prac nad rozwojem Uniksa wydarzyła się w C, a Unix i C mają długą wspólną historię.źródło
argc
(liczba argumentów) była liczbą elementówargv
, ponieważ w C tablice nie mają ustalonych wymiarów.W C
main()
funkcja może przyjmować dwa parametry:argc
oznaczające „liczbę argumentów” iargv
oznaczające „wektor argumentów”. W C nie masz wymyślnych obiektów, takich jak wektory, dlatego musisz podać liczbę przedmiotów jakoargc
. W przeciwieństwie do wspomnianych języków znajdują się wektory lub listy, które znają swój własny rozmiar, więcargc
nie jest potrzebne. Ale nazwaargv
utknęła.źródło