Bir Değişkenin Hayatı: Scope Bittiğinde İnsan Ne Kaybeder?

Bir Değişkenin Hayatı: Scope Bittiğinde İnsan Ne Kaybeder?

Programlamada bazı gerçekler yalnızca doğdukları yerde geçerlidir. Bir fonksiyonun içinde tanımlanan yerel değişkeni düşünün: Değeri vardır, görevi vardır, hatta kısa ömrü boyunca bütün hesaplamanın kaderini değiştirebilir. Fakat fonksiyon sona erdiği anda o değişken dışarıdan erişilemez olur. Dış dünya için artık yoktur. Bu, basit bir teknik ayrıntı değil; bilginin, yetkinin ve anlamın bağlama bağlı oluşuna dair güçlü bir modeldir.

scope, yani kapsam, bir ismin nerede tanındığını belirler. Aynı değişken adı iki farklı blokta kullanılabilir; fakat bunlar aynı şey değildir. Bir döngüdeki i, başka bir fonksiyondaki i ile akraba bile olmayabilir. İsim aynıdır, kimlik farklıdır. İnsan zihni burada sık sık hata yapar: Kelimelerin aynı olmasının, deneyimlerin de aynı olduğu yanılgısına düşeriz. Oysa kod bize soğukkanlı bir ders verir: Bir kavramı anlamak için önce onun hangi blokta tanımlandığını sormalısınız.

Bağlam dışına taşan bilgi neden bozulur?

Bir fonksiyon içindeki değişken, çoğu zaman o fonksiyonun parametreleriyle anlam kazanır. Örneğin indirimOrani adlı bir değer, alışveriş sepeti, müşteri türü ve kampanya koşulları olmadan tek başına neredeyse boş bir etikettir. Yüzde 20 iyi midir, kötü müdür, geçerli midir? Cevap bağlamdadır. Aynı şekilde bir veri tabanındaki tarih alanı, saat dilimi bilinmiyorsa; bir sıcaklık ölçümü, birimi belirtilmiyorsa; bir yapay zekâ çıktısı, kaynakları görünmüyorsa eksik bir bilgi parçasına dönüşür.

Burada önemli ayrım şudur: Kapsam dışına çıkan bilgi her zaman yanlış olmaz, ama doğrulanabilirliğini ve işlevini kaybedebilir. Yerel değişken dışarıda anlamsızlaşmaz; dışarıdaki kod için erişilemez ve yorumlanamaz hale gelir. Bu nedenle iyi tasarım, her veriyi küresel hale getirmeye çalışmaz. Tam tersine, gereksiz görünürlüğü sınırlar. Çünkü her yerde erişilebilen bilgi, her yerden değiştirilebilir; her yerden değiştirilebilen bilgi ise hata üretmek için davetiye çıkarır.

Küresel değişkenler ilk bakışta caziptir. Herkes onları görebilir, her fonksiyon kullanabilir, işler hızlı ilerliyor gibi görünür. Sonra bir gün, uzak bir modül değeri değiştirir ve başka bir yerde açıklanamaz bir hata belirir. Bu, yazılımın kelebek etkisidir. Kapsam, yalnızca gizleme mekanizması değildir; neden-sonuç ilişkisini daraltan bir emniyet duvarıdır. Bir hatayı ararken bütün evreni değil, belirli bir bloğu inceleyebilmemizi sağlar.

İnsan sınırları da bir tür kapsamdır

İnsanlar için de bazı bilgiler ancak tanımlandıkları ilişki, dönem veya ortam içinde anlam taşır. Bir arkadaş grubundaki şaka, toplantı odasında kabalığa dönüşebilir. Çocuklukta işe yarayan savunma mekanizması, yetişkinlikte ilişkilere zarar verebilir. Bir uzmanlık alanındaki kesinlik, başka alanda kibire dönüşebilir. Demek ki sınır, yetersizlik işareti değildir; anlamın çalıştığı koordinat sistemidir.

Bu bakış, özellikle teknoloji çağında değerlidir. Ekranda gördüğümüz her sayı, grafik ve öneri sanki evrensel bir hüküm taşıyormuş gibi davranır. Oysa her model eğitim verisinin, her metrik ölçüm yönteminin, her algoritma varsayımlarının kapsamı içinde yaşar. Bir öneri sistemi size bir film sunuyorsa, bu filmin mutlak iyi olduğu anlamına gelmez; yalnızca modelin sizi temsil ettiğini düşündüğü dar profil içinde uygun göründüğü anlamına gelir.

İyi programcı, değişkenin nerede yaşadığını bilir. İyi düşünür de bilginin nerede geçerli olduğunu sorar. İkisinin ortak disiplini şudur: Bir şeyi taşımadan önce bağlamını taşıyın. Aksi halde elinizde bilgi değil, kapsamından kopmuş bir isim kalır. Ve isimler, bazen en tehlikeli boşluk türüdür.

Bir yanıt yazın

Ad ve E-posta zorunlu değildir.