Eskiden bir programın ne kadar kaynak tükettiğine bakılırdı.
Program açılır.
İşini yapar.
Kapanır.
Şimdi basit bir program açıyorsun, görev yöneticisine bakıyorsun, yüzlerce MB RAM yemiş.
Bir tane daha açıyorsun.
Biraz daha RAM gidiyor.
Sonra tarayıcıyı açıyorsun.
Bir bakmışsın 16 GB RAM’in önemli bir kısmı daha bilgisayarı doğru düzgün kullanmadan gitmiş.
Sonra çözüm olarak ne öneriliyor?
32 GB RAM al.
Niye?
Çünkü yazılım şişmiş.
Ama nedense kimse yazılımı küçültmeyi konuşmuyor.
Eskiden yazılımlar kaynak konusunda bu kadar rahat değildi
Eski bilgisayarların gücü bugünkü makinelerin yanında komik kalıyor.
RAM azdı.
İşlemciler yavaştı.
Diskler küçüktü.
Programcıların da buna göre hareket etmesi gerekiyordu.
Bir program gereksiz yere RAM tüketirse bunun bedeli hemen ortaya çıkıyordu.
Bugün ise bilgisayarlar güçlendi.
RAM ucuzladı.
SSD’ler büyüdü.
İşlemciler onlarca çekirdeğe ulaştı.
Yazılım tarafında da “nasıl olsa bilgisayar güçlü” rahatlığı başladı.
Sonuç ortada.
Yazılım şişmesi artık sıradan bir şey gibi görülüyor.
Program büyüyor.
Kaynak tüketimi artıyor.
Sonra kullanıcıdan daha güçlü bilgisayar alması bekleniyor.
Bir sohbet programı neden yüzlerce MB RAM kullanıyor?
Asıl komik taraf bu.
Bir mesajlaşma programı düşün.
Mesaj yazıyorsun.
Mesaj okuyorsun.
Dosya gönderiyorsun.
Belki sesli konuşuyorsun.
Bunlar bilgisayarın kaldırmayacağı işler değil.
Ama bazı modern masaüstü uygulamalarını açtığında yüzlerce MB RAM tüketimiyle karşılaşabiliyorsun.
Modern yazılımlar neden bu kadar RAM kullanıyor sorusunun cevabı biraz da uygulamaların nasıl geliştirildiğinde yatıyor.
Birçok masaüstü uygulaması artık hafif, işletim sistemine özel yazılımlar yerine daha ağır geliştirme ortamları ve web teknolojileri kullanıyor.
Böylece ortaya şu garip durum çıkıyor:
Bilgisayarın işlemcisi güçlü.
RAM’i bol.
SSD hızlı.
Ama basit bir program yine de hantallaşıyor.
Electron denen şey bu işin güzel örneklerinden biri
Electron ile masaüstü uygulamalarında web teknolojileri kullanılabiliyor.
Geliştirici açısından oldukça kullanışlı bir yaklaşım.
Ama ortaya çıkan uygulamanın yanında Chromium tabanlı bileşenler ve başka çalışma katmanları da bulunabiliyor.
Yani basit bir masaüstü programının içinde küçük bir web tarayıcısı gibi çalışan koca bir yapı oluşabiliyor.
Electron uygulamaları neden çok RAM kullanıyor diye sorulmasının nedeni de burada.
Bir uygulama açıyorsun.
Arka planda bir sürü işlem.
Bir sürü kaynak.
Bir sürü dosya.
Sonra aynı teknolojiyi kullanan başka bir uygulama açıyorsun.
O da kendi yükünü getiriyor.
Bir bakıyorsun bilgisayarında çalışan programların yarısı aynı mantıkla kurulmuş.
RAM de doğal olarak gidiyor.
Basit programlar neden bu kadar büyüdü?
Çünkü artık yazılımın içine sürekli bir şey ekleniyor.
Programın temel amacı ne?
Önemli değil.
Önce hesap açma sistemi geliyor.
Sonra bulut senkronizasyonu.
Sonra bildirimler.
Sonra analiz.
Sonra reklam.
Sonra AI.
Sonra başka servislerle entegrasyon.
Sonra otomatik güncelleme.
Sonra arka planda çalışan başka bir servis.
Programın ilk yaptığı iş ise bütün bu çöplüğün altında kalıyor.
Basit programlar neden artık bu kadar büyük sorusunun cevabı çoğu zaman tam olarak bu.
Yazılım artık sadece bir araç olarak bırakılmıyor.
Her şey platforma çevriliyor.
Bir PDF okuyucu bile neden bu kadar şey istiyor?
PDF açacaksın.
Hepsi bu.
Ama bazı programlar sana hesap açtırmak istiyor.
Bulut bağlantısı istiyor.
Ek servis öneriyor.
Güncelleme kontrol ediyor.
Arka planda çalışıyor.
Başlangıçta açılıyor.
Bildirim gönderiyor.
Sen ise sadece PDF açmak istiyorsun.
Aynı durum fotoğraf görüntüleyicilerinde, müzik programlarında, video oynatıcılarda ve not alma uygulamalarında da görülebiliyor.
Windows programları neden RAM tüketiyor diye bakarken sadece Windows’u suçlamak da yeterli değil.
Programların kendisi artık eskisi kadar küçük değil.
Her şey web uygulamasına dönüşüyor
Masaüstü programlarının giderek web uygulamalarına benzemesi de ayrı bir sorun.
Eskiden masaüstü programı dediğin şey işletim sistemine göre hazırlanırdı.
Şimdi geliştirici bir arayüz hazırlıyor.
Web teknolojilerini kullanıyor.
Bunu farklı platformlarda çalıştırıyor.
Sonra aynı uygulamayı Windows’ta, macOS’ta ve Linux’ta kullanabiliyorsun.
Güzel.
Ama bunun bedelini bilgisayar ödüyor.
Masaüstü uygulamaları neden yavaşladı diye sorulduğunda bu değişimin etkisini görmezden gelmek zor.
Teknoloji geliştikçe yazılımın daha hafif olması gerekirken tam tersi oluyor.
RAM arttıkça yazılım daha da rahat davranıyor
Burada kötü bir döngü oluştu.
Yazılım daha fazla RAM kullanıyor.
Kullanıcı daha fazla RAM alıyor.
Donanım üreticisi daha fazla RAM satıyor.
Yazılım geliştiricisi de daha fazla RAM kullanmaktan eskisi kadar korkmuyor.
Sonra 8 GB yetmiyor.
16 GB öneriliyor.
Bir süre sonra 16 GB da yetersiz gösteriliyor.
Şimdi 32 GB almak normal hale geliyor.
Yarın 64 GB önerilecek.
Ve yine aynı soru sorulacak:
“Bilgisayarım neden bu kadar RAM kullanıyor?”
Belki de bilgisayar fazla RAM kullanmıyor.
Yazılım gereksiz yere fazla RAM kullanıyor.
Programın açılması bile olay oldu
Eskiden programı açardın.
Çalışırdı.
Şimdi bazı uygulamalarda önce yükleme ekranı.
Sonra bağlantı kontrolü.
Sonra hesap kontrolü.
Sonra güncelleme kontrolü.
Sonra başka bir şey.
Sonra program açılıyor.
Bir metin yazacaksın.
Program senden önce bütün interneti kontrol ediyor.
Bu kadar gereksiz işlem neden var?
Çünkü yazılım artık tek başına çalışan bir araç olmaktan çıktı.
Sunucuya bağlı.
Hesaba bağlı.
Buluta bağlı.
Servise bağlı.
Aboneliğe bağlı.
İnternete bağlı.
AI da bu şişkinliğin üzerine eklendi
Şimdi de her programa yapay zeka ekleniyor.
Not alma uygulamasında AI.
Kod editöründe AI.
Tarayıcıda AI.
Ofis programında AI.
İşletim sisteminde AI.
Fotoğraf programında AI.
Her yerde aynı hikaye.
Bir özellik geliyor ve adına AI yazılıyor.
Arka planda yeni servisler.
Yeni bağlantılar.
Yeni süreçler.
Yeni kaynak tüketimi.
AI yazılımları neden bu kadar kaynak tüketiyor sorusu da bu yüzden daha fazla karşımıza çıkacak.
Çünkü yazılımın zaten şişmiş halinin üzerine yeni bir katman daha ekleniyor.
Güncelleme geldiğinde program daha da büyüyor
Bir programı kuruyorsun.
500 MB.
Bir yıl sonra güncelleme geliyor.
700 MB.
Bir süre sonra 1 GB.
Sonra 2 GB.
Programın yaptığı temel iş ise hâlâ aynı.
Yeni özellik ekleniyor.
Menü değişiyor.
Arayüz değişiyor.
Bir servis ekleniyor.
Bir entegrasyon ekleniyor.
Ama eski özelliklerin çoğu da yerinde duruyor.
Böyle böyle yazılım şişiyor.
Yazılım bloat nedir diye sorarsanız tam olarak böyle bir tabloyu düşünmek yeterli.
Yazılımın gereğinden fazla büyümesi.
Gereğinden fazla kaynak tüketmesi.
Gereksiz özelliklerin birikmesi.
Ve sonunda kullanıcıya “Bilgisayarın eski” denmesi.
Donanım yükseltmek kolay çözüm haline geldi
Yazılım yavaş mı?
RAM ekle.
İşlemci eski mi?
Yeni bilgisayar al.
SSD dolu mu?
Daha büyük SSD al.
Program ağır mı?
Daha güçlü bilgisayar al.
Bu mantık çok rahat.
Çünkü problemi kullanıcı çözüyor.
Yazılımı küçültmek için uğraşmak yerine kullanıcıya daha güçlü donanım öneriliyor.
Sonra birkaç yıl geçiyor.
Yeni bilgisayar da eskiyor.
Çünkü yazılım yine büyüyor.
Bu döngünün sonu yok.
En saçma tarafı da şu
Bilgisayar teknolojisi inanılmaz ilerledi.
Bugün cebimizdeki telefonlar yıllar önceki masaüstü bilgisayarlardan daha güçlü.
SSD’ler inanılmaz hızlı.
RAM miktarları devasa.
İşlemciler çok daha güçlü.
Ama buna rağmen basit bir programın açılması için bekliyoruz.
Basit bir web sitesinin açılması için onlarca megabayt veri indiriyoruz.
Basit bir masaüstü uygulaması yüzlerce MB RAM kullanıyor.
Sonra buna teknoloji deniyor.
Bence burada teknoloji değil, yazılım tembelliği büyüyor.
Programcı açısından daha kolay olan yöntem seçiliyor.
Kullanılan kütüphanelerin boyutu önemsenmiyor.
RAM tüketimi fazla dert edilmiyor.
Arka plandaki servisler önemsenmiyor.
Çünkü sonunda kullanıcıda 16 GB RAM var.
Olmadı 32 GB alır.
O da yetmezse 64 GB alır.
Donanım satılır.
Yazılım şişmeye devam eder.