Kodun Gizli Politikası: Nesneler mi Yönetir, Fonksiyonlar mı Özgürleştirir?

Programlama paradigmaları ilk bakışta yalnızca teknik tercihler gibi görünür: sınıf mı yazacağız, saf fonksiyon mu? Fakat kod yazma biçimimiz, dünyayı düzenleme biçimimiz hakkında da ipuçları taşır. Nesne yönelimli programlama ile fonksiyonel programlama arasında kurulabilecek siyasi benzetme, elbette “bir paradigma doğrudan şu ideolojidir” kadar kaba değildir. Yine de her ikisinin de güç, sorumluluk, değişim ve sınır kavramlarını farklı biçimde ele alması dikkat çekicidir.

Nesne yönelimli dünya: Yetki, sınır ve hiyerarşi

Nesne yönelimli programlamada dünya, kimliği olan varlıklardan oluşur. Bir BankaHesabı nesnesinin bakiyesi vardır; bu bakiye dışarıdan gelişigüzel değiştirilemez. Para yatırma ya da çekme gibi işlemler, nesnenin kendi kuralları içinden geçmelidir. Bu yaklaşımın temel kavramları olan kapsülleme, kalıtım ve çok biçimlilik; yetkinin belirli merkezlerde toplanmasını, sorumluluğun rollere bölünmesini ve üst-alt ilişkilerinin modellenmesini mümkün kılar.

Buradaki hiyerarşi her zaman kötü bir şey değildir. Bir hava trafik kontrol sisteminde ya da karmaşık bir oyun motorunda, hangi bileşenin neyi yönetebildiğinin açık olması büyük bir avantajdır. Nesneler, kendi durumlarının bekçisi olur. “Bu veriye kim dokunabilir?” sorusu, mimarinin merkezine yerleşir. Siyasi dilde buna kurumlar, yetki alanları ve temsil mekanizmaları diyebilirdik. Düzen, serbestçe dolaşan veriden değil; sınırları tanımlanmış aktörlerden doğar.

Ancak bu düzenin bedeli vardır. Nesneler birbirlerinin durumuna bağımlı hale geldikçe sistemin görünmeyen ipleri çoğalabilir. Bir metodun sonucu, çağrıldığı anda nesnenin hangi ruh halinde olduğuna bağlı olabilir. Küçük bir değişiklik, uzak bir sınıfta beklenmedik bir sonuç yaratabilir. Bürokratik bir kurumda olduğu gibi, sorumluluk nettir ama karar süreçleri zamanla ağırlaşabilir.

Fonksiyonel dünya: Saflık, eşitlik ve izlenebilirlik

Fonksiyonel programlama ise başka bir teklif sunar: Veriyi dönüştür, fakat gizlice değiştirme. Aynı girdiye aynı çıktıyı veren saf fonksiyonlar, programın davranışını daha öngörülebilir kılar. Bir fonksiyonun sonucu, küresel bir değişkene, gizli bir sayaç değerine veya başka bir nesnenin o anki durumuna bağlı değilse, onu test etmek ve anlamak kolaylaşır.

Bu yapının siyasi benzerliği, merkezi otoriteden çok kuralların şeffaflığına dayanan bir düzen fikrinde bulunabilir. Fonksiyonlar birbirine emir vermez; girdi alır, çıktı üretir. Veri çoğu zaman değiştirilemez kabul edilir. Böylece bir işlem, ortak kaynağı sessizce tüketmek ya da bozmak yerine yeni bir değer üretir. Yan etkisizlik, burada teknik bir temizlik takıntısı değil, güven üretme yöntemidir: Bir parçanın ne yaptığını görmek için bütün sistemi gözetlemek zorunda kalmazsınız.

Fakat fonksiyonel yaklaşım da ütopya değildir. Gerçek dünya yan etkilerle doludur: Dosya yazılır, ağ isteği atılır, ödeme alınır, sensör okunur. Saflığın dışına çıkmak kaçınılmazdır. Fonksiyonel tasarımın başarısı, yan etkileri yok saymasında değil, onları sınırlandırıp görünür hale getirmesindedir. Bir bakıma mesele iktidarı ortadan kaldırmak değil, iktidarın nerede devreye girdiğini kayıt altına almaktır.

Asıl soru: Hangi düzen hangi probleme uygun?

Bu iki paradigma arasındaki seçim, ideolojik bir sadakat testi olmamalıdır. Karmaşık ve uzun ömürlü varlıkların davranışlarını modelleyen bir alanda nesne yönelimli yaklaşım doğal gelebilir. Veri akışlarının, paralel hesaplamaların ve güvenilir dönüşümlerin öne çıktığı yerde fonksiyonel araçlar daha güçlü olabilir. Modern yazılımın en verimli tavrı çoğu zaman hibrittir: Nesneler sınırları ve iş kurallarını taşır; fonksiyonlar bu sınırlar içinde hesaplamayı sadeleştirir.

Yine de bu benzetme bize değerli bir soruyu hatırlatır: Kodumuzda güç nerede toplanıyor? Hangi bileşen değişiklik yapabiliyor, hangisi yalnızca hesaplıyor, hangi etkiler görünmeden yayılıyor? İyi mimari, yalnızca çalışan kod üretmez. Yetkiyi anlaşılır, değişimi denetlenebilir ve sonuçları izlenebilir kılar. Belki de programlamanın en politik yanı budur: Düzen kurarız; sonra o düzen, bizim yerimize karar vermeye başlar.

Bir yanıt yazın

Ad ve E-posta zorunlu değildir.