Sıfırdan saymak, birçok bilgisayar dilinde çok yaygın bir uygulamadır, ancak neden? Fenomeni ve neden bu kadar yaygın olduğunu keşfederken okumaya devam edin.
Bugünün Soru-Cevap oturumu bize, topluluk odaklı bir Soru-Cevap web siteleri grubu olan Stack Exchange'in bir alt bölümü olan SuperUser'ın izniyle geliyor.
Soru
SuperUser okuyucu DragonLord, çoğu işletim sistemi ve programlama dilinin neden sıfırdan sayıldığını merak ediyor. O yazıyor:
Bilgisayarlar geleneksel olarak sıfırdan başlayarak sayısal değerleri çeteleler. Örneğin, C tabanlı programlama dillerindeki diziler sıfırdan başlar.
Bunun için hangi tarihsel nedenler var ve sıfırdan saymanın birden saymaya kıyasla ne gibi pratik avantajları var?
Neden gerçekten? Uygulama kadar yaygın olmasına rağmen, kesinlikle uygulanmasının pratik nedenleri vardır.
Cevap
SuperUser katılımcısı Matteo şu bilgileri sunuyor:
Dizileri 0'dan saymak, her bir elemanın bellek adresinin hesaplanmasını basitleştirir.
Bir dizi bellekte belirli bir konumda depolanıyorsa (buna adres denir), her öğenin konumu şu şekilde hesaplanabilir:
element (n) = adres + n * size_of_the_elementİlk öğeyi ilk olarak kabul ederseniz, hesaplama olur
element (n) = adres + (n-1) * size_of_the_elementÇok büyük bir fark değil, ancak her erişim için gereksiz bir çıkarma ekler.
Eklemek için düzenlendi:
- Dizi indeksinin bir ofset olarak kullanılması bir gereklilik değil, sadece bir alışkanlıktır. İlk elemanın ofseti sistem tarafından gizlenebilir ve eleman tahsis edilirken ve referans verilirken dikkate alınabilir.
- Dijkstra "Numaralandırma neden sıfırdan başlamalı?" başlıklı bir makale yayınladı ( pdf ) 0 ile başlamanın neden daha iyi bir seçim olduğunu açıklıyor. Sıfırdan başlamak, aralıkların daha iyi temsiline izin verir.
Cevabı daha derinlemesine araştırmak istiyorsanız, Dijkstra gazetesi bilgilendirici bir okumadır.
Açıklamaya eklemek istediğiniz bir şey var mı? Yorumlarda sesi kapatın. Diğer teknoloji meraklısı Stack Exchange kullanıcılarından daha fazla yanıt okumak ister misiniz? Tartışma dizisinin tamamına buradan göz atın .