Argumen otoritas
Ya ... Rupanya, sebagian besar bahasa, termasuk yang sangat baru, berbasis nol. Karena bahasa-bahasa itu ditulis oleh orang-orang yang cukup ahli, teman Anda pasti salah ...
Mengapa satu?
mengapa 1 akan menjadi indeks awal yang lebih baik daripada nol? Kenapa tidak 2, atau 10? Jawabannya sendiri menarik karena menunjukkan banyak tentang proses berpikir orang-orang yang membela ide tersebut.
The pertama argumen adalah bahwa itu lebih alami, karena 1 biasanya satu sebelum semua orang lain, setidaknya, untuk sebagian besar orang ...
Argumen nomor satu adalah bahwa indeks terakhir juga ukuran array ...
Saya masih terkesan dengan "kualitas" alasan saya biasanya mendengar argumen semacam ini ... Dan bahkan lebih ketika saya diingatkan bahwa ...
Kenapa tidak nol?
... Notasi "berbasis satu" adalah sisa dari budaya barat yang mengabaikan keberadaan nol selama berabad-abad, jika tidak lebih.
Percaya atau tidak, kalender asli Gregorian berasal dari -3, -2, -1, 1, 2, 3 ... Coba bayangkan masalah yang dikontribusikannya pada ilmu pengetahuan barat (misalnya, berapa tahun sejak 1 Januari -2 hingga 1 Januari 2 untuk melihat daripada kalender asli kalender bertentangan dengan sesuatu yang sederhana seperti substraksi ...).
Menjaga array berbasis satu adalah seperti (well, saya akan downmodded untuk itu ... ^ _ ^ ...), menjaga mil dan yard di abad ke-21 ...
Mengapa nol Karena ini matematika!
Pertama (Ups ... Maaf ... saya akan coba lagi)
Nol , Nol bukanlah apa-apa, satu adalah sesuatu. Dan beberapa teks agama menyatakan bahwa "Pada awalnya, tidak ada apa-apa". Beberapa diskusi yang berhubungan dengan komputer bisa sama berbahayanya dengan perdebatan agama, jadi poin ini tidak terlalu keluar dari topik seperti yang terlihat ... ^ _ ^
Pertama , Lebih mudah untuk bekerja dengan array berbasis nol dan mengabaikan nilai nol-nya daripada bekerja dengan array berbasis satu dan meretas untuk menemukan nilai nol-nya. Alasan ini hampir sama bodohnya dengan yang sebelumnya, tetapi kemudian, argumen asli yang mendukung array berbasis satu juga cukup keliru.
Kedua , Mari kita ingat bahwa ketika berhadapan dengan angka-angka, kemungkinan besar Anda akan berurusan dengan matematika satu saat atau yang lain, dan ketika Anda berurusan dengan matematika, kemungkinan besar Anda tidak berminat untuk peretasan bodoh untuk menyiasati konvensi usang. Notasi berbasis satu mengganggu matematika dan tanggal selama berabad-abad juga, dan dengan belajar dari kesalahan kita, kita harus berusaha menghindarinya dalam ilmu berorientasi masa depan (termasuk bahasa komputer).
Ketiga , seperti untuk array bahasa komputer yang diikat ke perangkat keras, alokasikan array C 21 integer, dan pindahkan pointer 10 indeks ke kanan, dan Anda akan memiliki array [-10 hingga 10] yang alami. Ini tidak wajar untuk perangkat keras. Tapi ini untuk matematika. Tentu saja, matematika bisa menjadi usang, tetapi terakhir kali saya memeriksa, kebanyakan orang di dunia percaya itu tidak.
Empat , Seperti yang sudah ditunjukkan di tempat lain, bahkan untuk posisi diskrit (atau jarak direduksi menjadi nilai diskrit), indeks pertama akan menjadi nol, seperti lantai dalam bangunan (mulai dari nol), hitungan mundur yang menurun (3, 2, 1, NOL !), ketinggian tanah, piksel pertama dari suatu gambar, suhu (nol Kelvin, untuk nol mutlak, atau nol derajat celcius, sebagai suhu pembekuan air 273 K). Bahkan, satu-satunya hal yang benar-benar dimulai dengan satu adalah cara tradisional " pertama , kedua , ketiga , dll." notasi iterasi , yang membuat saya secara alami ke titik berikutnya ...
Lima yang selanjutnya titik (yang secara alami mengikuti sebelumnya ) adalah bahwa kontainer tingkat tinggi harus diakses, bukan dengan indeks, tetapi dengan iterator , kecuali indeks sendiri memiliki nilai intrinsik. Saya terkejut pengacara "bahasa tingkat tinggi" Anda tidak menyebutkan hal itu. Dalam hal indeks itu sendiri penting, Anda dapat bertaruh separuh dari waktu Anda memiliki pertanyaan terkait matematika. Dan dengan demikian, Anda ingin wadah Anda ramah-matematika, dan tidak cacat-matematika seperti "kalender gregorian lama Anda" mulai dari 1, dan membutuhkan retasan yang dimuntahkan untuk membuatnya berfungsi.
Kesimpulan
Argumen yang diberikan oleh sesama programmer Anda adalah kekeliruan karena itu tidak perlu mengikat kebiasaan bahasa lisan / tulisan, yang, pada dasarnya, buram, ke bahasa komputer (di mana Anda tidak ingin instruksi Anda kabur), dan karena dengan menghubungkan perangkat keras secara salah alasan untuk masalah ini, he.she berharap untuk meyakinkan Anda, karena bahasa semakin tinggi di abstraksi, bahwa array berbasis nol adalah sesuatu dari masa lalu.
Array berbasis nol adalah berbasis nol karena alasan terkait matematika. Bukan karena alasan terkait perangkat keras.
Sekarang, jika ini merupakan masalah bagi sesama programmer Anda, minta dia mulai memprogram dengan konstruksi tingkat tinggi yang nyata, seperti iterator dan foreach loop.