Ini adalah pertanyaan yang sudah lama saya tanyakan (dan pernah ditanyakan).
Dalam (kebanyakan? Semua?) Bahasa pemrograman, indeks dimulai dari nol untuk array, string, dll. Saya mengenalinya menjadi konvensi dari waktu ke waktu, diadopsi dalam banyak bahasa, tetapi adakah yang bisa menunjuk ke asal usul ini?
Saya pikir, mungkin itu ada hubungannya dengan semua yang berakar pada biner. Tetapi saya tidak yakin dengan ide yang membawa perlunya sistem desimal - mengapa tidak memulai indeks dari 1?
Adakah yang memiliki pengetahuan sejarah tentang bahasa pemrograman di mana keputusan untuk memulai indeks pada nol mungkin telah dijelaskan?
Terima kasih!
EDIT: Tulisan-tulisan Dijkstra lebih membantu dari sudut pandang matematika, tetapi bahkan ia telah mencatat, tidak semua bahasa diindeks nol. Penjelasan WBT juga masuk akal mengapa seseorang mulai dengan nol berdasarkan alamat memori. (Saya tahu beberapa bahasa menangani pengindeksan sedikit berbeda berdasarkan manipulasi array.)
Saya tidak perlu mencari mengapa (yang saya sangat hargai karena ini membantu lebih jauh pemahaman) tetapi lebih pada garis ketika ini menjadi konvensi dan / atau apakah itu dapat dilacak ke bahasa tertentu.
Jadi, misalnya dalam K&R C, ketika membahas indeks array, K atau R tanpa basa-basi menjelaskan, "Array subskrip selalu dimulai dari nol dalam C ..." (hlm. 22) Kemudian, dalam membahas fungsi untuk memproses karakter array, "... desain yang lebih berguna adalah mengembalikan panjang baris, atau nol jika akhir file ditemui. Nol adalah pengembalian file yang dapat diterima karena tidak pernah merupakan panjang baris yang valid." (hal. 127)
Berdasarkan K&R, saya mengumpulkan a) konvensi diadopsi dari tempat lain, jadi C bukanlah inspirasi di balik pengindeksan nol dan b) mungkin ada alasan yang lebih dalam untuk penggunaannya berdasarkan contoh kedua. Saya tahu K&R sangat dihormati karena prosa yang jelas, jadi itulah alasan saya memasukkannya, untuk memberikan contoh tentang apa yang saya harapkan akan dilakukan oleh bahasa terdokumentasi lain untuk menjelaskan alasan di balik pengindeksan nol.
Saya pikir WBT dan btilly menawarkan alasan yang sama baiknya; Saya bertanya-tanya apakah ada orang yang mungkin tahu bahasa lama (pra-C?) Yang mendokumentasikan keputusan desain. Dan pada saat yang sama saya mengenali informasi semacam itu mungkin tidak ada.