Dari pengalaman saya dengan bahasa pemrograman dan skrip modern, saya yakin sebagian besar programmer umumnya terbiasa merujuk ke elemen pertama array dengan sebagai indeks.
Apakah ada keuntungan substansial dalam menggunakan 1 ?
Saya yakin saya pernah mendengar lebih banyak bahasa selain Zsh yang berperilaku serupa dengan array; itu baik-baik saja oleh saya, karena sama-sama nyaman.
Namun, seperti yang dirilis sebelumnya dan banyak digunakan bahasa skrip shell seperti ksh dan bash semua menggunakan 0, mengapa akankah seseorang memilih untuk mengubah "standar" umum ini?
Jawaban langsung saya untuk pertanyaan saya adalah "tentu saja tidak";
kemudian, satu-satunya penjelasan yang dapat saya pikirkan mengenai "fitur eksklusif" ini untuk shell adalah "mereka hanya melakukan ini untuk memamerkan sedikit lagi cangkang keren mereka “.
Saya tidak tahu banyak tentang Zsh atau sejarahnya, dan kemungkinan besar teori sepele saya tentang ini tidak masuk akal.
Apakah ada penjelasan untuk ini? Atau hanya karena selera pribadi?
Jawaban yang Diterima:
- Hampir semua array shell (Bourne, csh, tcsh, fish, rc, es, yash) dimulai dari 1. ksh adalah satu-satunya pengecualian yang saya tahu (bash baru saja menyalin ksh).
- Bahasa yang paling banyak ditafsirkan pada saat itu (awal 90-an):
awk
,tcl
setidaknya, dan alat yang biasanya digunakan dari shell (cut -f1-3
,head -n 3
,sort -k1,3
,cal 1 2015
,comm -1
) mulai dari 1.sed
,ed
,vi
beri nomor baris mereka dari 1… - zsh mengambil yang terbaik dari shell Bourne dan csh. Array shell Bourne
[email protected]
mulai dari 1. zsh konsisten dengan penanganan[email protected]
(seperti di Bourne) atau$argv
(seperti di csh). Lihat betapa membingungkannya dalamksh
di mana${@:0:1}
tidak memberi Anda parameter posisi pertama misalnya. - Shell adalah alat pengguna sebelum menjadi bahasa pemrograman. Masuk akal bagi sebagian besar pengguna untuk memiliki pertama elemen di
$a[1]
. Ini juga berarti bahwa jumlah elemen sama dengan indeks terakhir (dalam zsh seperti di kebanyakan shell lain kecuali ksh, array tidak jarang). a[1]
untuk elemen pertama konsisten dengana[-1]
untuk yang terakhir.
Jadi pertanyaan IMO seharusnya adalah:apa yang ada di kepala David Korn untuk membuat arraynya dimulai dari 0?