Sepertinya Python , PHP , dan Ruby semuanya menggunakan nama "argv" untuk merujuk ke daftar argumen baris perintah. Dari mana nama "argv" berasal? Kenapa bukan sesuatu seperti "args"?
Dugaan saya adalah bahwa itu berasal dari C, di mana v akan berarti "vektor". Wikipedia memiliki catatan kaki yang mengatakan:
istilah vektor dalam nama variabel ini digunakan dalam arti tradisional untuk merujuk ke string.
Namun, tidak ada sumber untuk info ini. Sungguh, saya ingin tahu apakah ia memiliki akar yang bahkan lebih jauh ke belakang. Apakah C menggunakannya karena sesuatu sebelum itu menggunakannya?
history
command-line
entry-point
Mark Hildreth
sumber
sumber
Jawaban:
Sementara jawaban lain perhatikan yang
argv
berasal dari C, dari mana C mendapatkan ide untuk memanggil array sebagai "vektor"?Secara langsung, itu berasal dari BCPL . Meskipun
argv
mengacu pada vektor argumen (string), BCPL memang memiliki string yang disimpan dalam vektor, tetapi mereka string literal dan mereka bekerja seperti string Pascal. Vektor memiliki dua elemen: panjang diliteral!0
dan karakter diliteral!1
. Menurut Clive Feather , string dimanipulasi dengan "membongkar" mereka ke dalam array karakter, mengubah array kemudian "mengemas kembali" mereka menjadi string: bandingkan dengan C di mana string adalah array karakter.Jadi ya, C menggunakan v untuk vektor karena sesuatu yang lain telah dilakukan sebelumnya. Sekarang, apakah sebelum BCPL menggunakan vektor dengan cara ini? BCPL sendiri merupakan penyederhanaan dari "Bahasa Pemrograman Cambridge [atau Gabungan]": ini digunakan
vector
sebagai sinonim untuk array 1 dimensi danmatrix
sebagai sinonim untuk array 2 dimensi. Ini konsisten dengan notasi dalam matematika vektor dan matriks, meskipun dalam CPL mereka hanya mnemonik berguna dan tidak memiliki sifat yang terkait dengan struktur matematika.Bisakah kita mendorong kembali lebih jauh dalam waktu terkait bahasa komputasi? Salah satu cabang potensial dari jejak kami menjadi dingin. CPL sangat dipengaruhi oleh Algol 60 (pembaruan 1963). Sekarang ALGOL 68 memiliki tipe yang digambarkan sebagai "vektor yang dikemas", seperti
bits
danbytes
: tetapi ini bukan dalam rilis Algol sebelumnya yang hanyaARRAY
merujuk pada array. Karena BCPL berasal dari tahun 1966, CPL pasti sebelum itu (tetapi setelah 1963): ALGOL 68 (standar pada tahun 1968 dan 1973) tidak mungkin menjadi pengaruh langsung.Di sisi lain, Fitur Utama CPL juga membuat referensi ke sistem LISP McCarthy . Meskipun ini tidak menggunakan vektor untuk merujuk pada struktur data dalam sistem itu sendiri, itu adalah ekspresi-S , ekspresi-M dan ekspresi - L (ekspresi-L adalah string, sehingga setiap hubungan antara vektor dan string telah menghilang), itu tidak menggunakan vektor dalam arti lain untuk mewakili "nilai sejumlah variabel" yang mewakili "keadaan mesin kapan saja". Jadi kami memiliki bukti untuk asumsi yang dibuat dalam komentar: bahwa penggunaan kata 'vektor' berarti 'array' dalam komputasi berasal dari penerapan istilah yang sama dalam matematika.
sumber
argv
berasal dari C, di manamain()
fungsi mengambilargv
parameter yang mewakili vektor argumen ke program. Anda juga bisa mengatakan bahwa itu berasal dari Unix, yang hampir sama dengan mengatakan bahwa itu berasal dari C karena kebanyakan pengembangan Unix terjadi di C, dan Unix dan C memiliki sejarah panjang yang dibagikan.sumber
argc
(jumlah argumen) adalah jumlah item dalamargv
, karena dalam C, array tidak memiliki dimensi yang tetap.Dalam C
main()
fungsi dapat mengambil dua parameterargc
:, yang merupakan singkatan dari "count argumen", danargv
, yang merupakan singkatan dari "vector argumen". Dalam C Anda tidak memiliki objek mewah seperti vektor, itulah sebabnya Anda harus memasukkan jumlah item sebagaiargc
. Sebaliknya, bahasa yang Anda sebutkan memiliki hal-hal seperti vektor atau daftar yang mengetahui ukurannya sendiri, jadiargc
tidak diperlukan. Tapi namanyaargv
macet.sumber