C dilinde esnek tamsayı boyutları tasarım hatası değil
Öne çıkanlar
- C dilindeki int türü, sabit 32 bit yerine hedef donanımın doğal sözcük genişliğini temsil ediyor.
- 1970'lerde 12 ile 60 bit arasında değişen donanım mimarileri C'nin esnek tür yaklaşımıyla desteklendi.
- ANSI C standardı sabit bayt boyutu yerine türler için asgari değer aralığı garantisi getirdi.
Pikuma ekibi, modern yazılımcıların sıklıkla eleştirdiği C dilindeki sabit olmayan tamsayı boyutlarının kökenlerini ve teknik gerekçelerini ele alan bir inceleme yayımladı. Analizde, char, int ve long gibi temel türlerin kesin bellek sınırlarına sahip olmamasının bir hata değil, 1970'li yılların donanım çeşitliliğine uyum sağlamak için alınmış bilinçli bir tasarım tercihi olduğu vurgulandı. O dönemde 12, 16, 18, 36 veya 60 bitlik sözcük yapılarına sahip farklı bilgisayar mimarileri bulunuyordu.
C dili tasarlandığı dönemde 'tek bir makine sözcüğü' mantığını benimseyen B dilinin yerini aldı. PDP-11 gibi bayt adreslemeli sistemlerde doğal tamsayı kavramı doğrudan makinenin en hızlı işleyebildiği genişliğe karşılık geldi. Eğer C o yıllarda sabit 32 bitlik int kullanımını zorunlu kılsaydı, 16 bitlik PDP-11 ve 8086 gibi işlemcilerde her döngü ve dizi işlemi iki kat fazladan talimat gerektirecekti. 36 bitlik PDP-10 veya UNIVAC gibi mimarilerde ise her işlem sonrasında donanımı kısıtlayan maskeleme talimatlarının çalışması gerekecekti.
İncelemede, modern programlama dillerinin 8 bitlik bayt ve ikiye tümleyen aritmetiğinin standartlaştığı bir dünyaya doğduğu için kesin boyutlar belirleyebildiği kaydedildi. ANSI C standardı ise kesin boyutlar yerine asgari değer aralıkları belirleyerek Lua gibi taşınabilir projelerin mimariler arasında sorunsuz derlenmesini sağladı. C23 sürümüyle birlikte ikiye tümleyen kuralı standart hale gelirken, günümüz dillerinde de işaretçi boyutundaki doğal tamsayı geleneği sürüyor.
Bu özet yapay zekâ ile hazırlanmıştır; ayrıntılar ve doğrulama için orijinal kaynağa başvurun.