Banyak programmer yang masih bertanya, heran mengapa programmer berhitung dari nol, bukan satu. Hal ini disebabkan oleh Array yang dimulai dari nol.
Betul bahwa ada beberapa bahasa pemrograman yang memulai array dari satu, bukan nol, seperti Lua, MATLAB, dan lain sebagainya. Namun mengapa array dimulai dari nol?
Mengapa harus dimulai dengan,
variabelArray[0]
dan bukan,
variabelArray[1]
Mengapa, mengapa, mengapa?
Inilah alasan utama mengapa programmer sebaiknya mengerti konsep dasar bahasa pemrograman.
Ingat, seluruh bahasa pemrograman apa pun muaranya ke assembler dan ke mesin komputer juga.
Karena bahasa mesin itu sendiri hanya kumpulan dari saklar atau binari alias nol dan satu saja. Kemudian para pahlawan pemrograman akhirnya mempermudah komunikasi tersebut menjadi berbagai bahasa yang mudah kita mengerti saat ini.
Komputer memerlukan setidaknya RAM dan CPU. Fungsi RAM adalah untuk menyimpan variabel-variabel yang telah dideklarasi, dan CPU yang melakukan pemrosesan dan perhitungan seluruh kodingan yang ditulis.
Jadi, saat kita membuat aplikasi semisal jam digital di komputer, maka RAM menyimpan variabel seperti nilai detik, menit, dan jamnya. Lalu CPU lah yang menjalankan logikanya seperti menambahkan satu menit jika variabel detik sudah mencapai 60, dan seterusnya.
Pastinya saat kita membuat sebuah aplikasi, bukan hanya satu atau dua variabel saja bukan yang harus kita deklarasikan? Jumlah variabelnya bisa puluhan, ratusan, atau bahkan ribuan.
Seluruh variabel tersebut disimpan di dalam RAM, seluruhnya memiliki alamatnya masing-masing. Jadi RAM itu mirip seperti loker, atau seperti klaster perumahan, di mana setiap penghuninya benar-benar punya alamat rumah masing-masing.
Lalu apa hubungannya dengan array yang dimulai dari nol, dan bukan dari satu? Bukankah nomor rumah dimulai dari satu, bukan nol?
Nah, sekarang mulai ke sebuah contoh:
Bagaimana kalian membuat atau mendeklarasikan variabel hari?
Apakah dengan variabel individual,
var hari1 = "Minggu" var hari2 = "Senin" var hari3 = "Selasa" var hari4 = "Rabu" // Dan seterusnya
Atau dengan array?
var hari = ["Minggu", "Senin", "Selasa", "Rabu", "dst"]
Pasti dengan array. Pasti itu.
Perlu diketahui, array adalah kumpulan variabel. Artinya, dalam satu variabel array akan memakan beberapa alamat di RAM.
Misal, variabel hari seperti contoh di atas, jika kalian buat entah lewat tujuh variabel individual atau pun lewat sebuah variabel array, keduanya sama-sama akan mendapatkan tujuh penempatan (baca: alokasi memori) di RAM.
Jadi anggaplah variabel hari tersebut mendapatkan alokasi memori dari alamat 101 hingga 107. Atau analoginya, mendapatkan alamat rumah dari nomor 101 hingga 107.
Artinya:
Variabel hari ke-1 ada di alamat rumah 101 dengan nilai “Minggu”.
Variabel hari ke-2 ada di alamat rumah 102 dengan nilai “Senin”.
Variabel hari ke-3 ada di alamat rumah 103 dengan nilai “Selasa”.
Variabel hari ke-4 ada di alamat rumah 104 dengan nilai “Rabu”.
Dan begitu seterusnya.
Namun ingat, awal alokasi memori atau nomor rumah pertama dari variabel hari ini ada di 101.
Sekarang, kita ingin mengambil variabel hari “Rabu”, ada di nomor rumah berapakah variabel tersebut? Benar, 104.
Berarti, ada tiga rumah dari 101 yang dilewati sampai tiba di rumah 104 yang dihuni variabel hari “Rabu”.
Inilah mengapa hari “Rabu” ada di array[3], bukan array[4].
Mengakses array itu bukan dengan cara berhitung, tapi dengan cara mengindeks.
Jika berhitung, kita pasti akan berkata, “1, 2, 3, …”
Tapi dengan mengindeks, kita akan bertanya, “Kalau dari nomor rumah 101, ada di rumah ke berapa variabel hari “Minggu”? Oh, ada di nomor rumah 101 juga, yang artinya 101 + 0 atau array ke-nol.”
Seperti yang telah saya sebutkan, meski ada bahasa pemrograman yang indeks arraynya dimulai dari satu, namun saya lebih memilih bahasa pemrograman yang indeks arraynya dimulai dari nol.
Saya bahkan cenderung tidak setuju jika array dimulai dari 1.
Dengan mengetahui array dari nol, programmer akan dipaksa untuk memahami konsep dasar pemrograman dan menghargai para pahlawan yang telah berjasa mengubah bahasa mesin menjadi bahasa yang mudah dimengerti manusia.
Bahkan saya yang sudah memiliki pengalaman koding dari assembly ini, menolak ‘unjuk rasa’ sebagian programmer yang ingin mengubah kebijakan array menjadi dimulai dari satu.
Bagi saya, itu seperti memaksa programmer yang sudah lebih senior untuk mempercayai jika bumi itu datar, menyelisihi para ilmuwan yang telah mengorbankan waktu mereka untuk meneliti selama bertahun-tahun mengenai bagaimana bentuk bumi yang sebenarnya.