Donanım Güçlendi, Yazılımlar Niye Ağırlaştı?

Bilgisayarlar hiç olmadığı kadar güçlü.

İşlemciler çekirdeklerle dolu. RAM miktarları yıllar içinde katlandı. SSD’ler eski sabit disklere göre inanılmaz hızlı. Ekran kartları birkaç yıl önce süper bilgisayar sayılabilecek seviyede işlem gücüne sahip.

Peki yazılımlar ne yaptı?

Onlar da hızlandı mı?

Hayır.

Ağırlaştılar.

Eskiden birkaç megabaytlık programlarla yaptığımız işleri bugün yüzlerce megabaytlık, hatta gigabaytlık yazılımlarla yapıyoruz. Daha güçlü bilgisayar aldıkça yazılımların da daha fazla kaynak tüketmeye başladığını görüyoruz.

Bilgisayar güçleniyor.

Yazılım kilo alıyor.

Ve buna nedense “teknolojik ilerleme” diyoruz.

Bilgisayarın gücü arttı, yazılımın iştahı da arttı

Bunun en basit açıklaması şu:

Donanım geliştikçe yazılım geliştiricilerinin üzerindeki kaynak baskısı azaldı.

Eskiden birkaç megabayt RAM ciddi bir meseleydi.

Şimdi bilgisayarlarda 16, 32 hatta 64 GB RAM bulunabiliyor.

Dolayısıyla geliştirici açısından:

“Bu program 500 MB RAM kullanıyor.”

cümlesi artık eskisi kadar korkutucu değil.

Bilgisayarda 32 GB var.

Kullansın.

Sorun tam olarak burada başlıyor.

Çünkü donanımın güçlenmesi, yazılımın kaynakları umursamaması için bir bahane haline geldi.

Eskiden optimizasyon zorunluluktu

Eski bilgisayarlarda kaynaklar sınırlıydı.

İşlemci yavaştı.

RAM azdı.

Disk küçüktü.

Programın her yaptığı işlem hesaplanmak zorundaydı.

Geliştirici gereksiz kod yazarsa bunun bedelini doğrudan görüyordu.

Program yavaşlıyordu.

Bellek yetmiyordu.

Disk doluyordu.

Kullanıcı şikâyet ediyordu.

Bugün ise aynı hataların önemli bir bölümü güçlü donanım tarafından gizlenebiliyor.

Kötü optimize edilmiş bir program bile modern bilgisayarda çalışabiliyor.

Bu da geliştiriciye çok güzel bir konfor alanı sağlıyor:

“Nasıl olsa bilgisayar güçlü.”

Yazılım geliştirmek kolaylaştı, yazılımlar büyüdü

Modern geliştirme araçları hayatı kolaylaştırdı.

Framework’ler var.

Kütüphaneler var.

Hazır bileşenler var.

Paket yöneticileri var.

Cross-platform araçlar var.

Web teknolojileriyle masaüstü uygulama geliştirmek mümkün.

Birçok işi sıfırdan yapmak gerekmiyor.

Bunların sonucu geliştirme süresinin kısalması olabilir.

Ama bunun bedeli de var.

Her hazır çözüm beraberinde kod getiriyor.

Her framework beraberinde bağımlılık getiriyor.

Her kütüphane beraberinde başka kütüphaneler getirebiliyor.

Sonuçta geliştirici daha hızlı ürün çıkarıyor.

Ama ortaya çıkan ürün daha ağır olabiliyor.

Yani üretim süreci hızlandı.

Yazılımın kendisi şişti.

“Biraz daha RAM kullansın” mantığı

Bugün yazılım geliştirmenin en tehlikeli cümlelerinden biri şu olabilir:

“Zaten bilgisayarlarda RAM var.”

Evet.

Ama sonsuz değil.

Bir program 500 MB kullanır.

Başka program 700 MB.

Bir tarayıcı birkaç gigabayt tüketir.

Arka planda çalışan servisler eklenir.

İşletim sistemi zaten belli miktarda RAM kullanır.

Sonra kullanıcı bilgisayarın neden yavaşladığını anlamaya çalışır.

Tek bir programın kaynak tüketimi tek başına felaket olmayabilir.

Problem, bütün yazılımların aynı mantıkla hareket etmesidir.

Herkes biraz daha fazla tüketince toplam tüketim devasa hale gelir.

Tarayıcılar bunun en güzel örneği

Web tarayıcıları artık işletim sistemi içinde küçük işletim sistemleri gibi davranıyor.

Birden fazla sekme.

Eklentiler.

JavaScript motorları.

Grafik işlemleri.

Web uygulamaları.

Arka plan servisleri.

Video.

Ses.

Senkronizasyon.

Bildirimler.

Bir tarayıcı sekmesi açıyorsunuz.

Arkasında neredeyse küçük bir yazılım dünyası çalışıyor.

Eskiden web sayfası açardık.

Şimdi web uygulaması çalıştırıyoruz.

Bu fark önemli.

Çünkü web sitesi ile web uygulaması arasındaki kaynak tüketimi farkı giderek büyüdü.

Electron: Masaüstüne tarayıcı taşımak

Modern masaüstü uygulamalarındaki şişkinliğin en güzel örneklerinden biri Electron tabanlı uygulamalar.

Geliştirici açısından cazip.

Web teknolojilerini biliyorsunuz.

HTML, CSS ve JavaScript kullanarak masaüstü uygulaması yapabiliyorsunuz.

Tek bir kod tabanıyla farklı işletim sistemlerini hedefleyebiliyorsunuz.

Harika.

Kullanıcı açısından ise bazen sonuç şu:

Basit bir uygulama açılıyor.

Arka planda tarayıcı motoru çalışıyor.

RAM tüketimi yükseliyor.

CPU kullanımı artıyor.

Programın yaptığı iş ise hâlâ oldukça basit.

Yani bir masaüstü uygulaması kullanmak için yanında küçük bir tarayıcı da çalıştırıyoruz.

Bilgisayarın gücü arttı.

Biz de fırsatı değerlendirip tarayıcıyı masaüstüne taşıdık.

500 MB artık kimsenin umurunda değil

Bir programın 500 MB olması artık eskisi kadar şaşırtıcı değil.

Çünkü depolama alanları büyüdü.

SSD’ler ucuzladı.

İnternet hızlandı.

Birkaç gigabaytlık uygulamaları saniyeler veya dakikalar içinde indirebiliyoruz.

Ama bu durum yazılımın şişmesini daha az problem haline getirmiyor.

Sadece problemi daha görünmez hale getiriyor.

Disk alanı konusunda problem yaşamıyoruz.

Fakat RAM tüketimi, CPU kullanımı, pil tüketimi, açılış süresi ve güncelleme boyutları hâlâ gerçek problemler.

Bir yazılımın gereksiz yere büyük olması sadece diskte yer kaplaması anlamına gelmiyor.

Pil tüketimi de bunun faturası

Masaüstü bilgisayarda yüksek kaynak tüketimi bazen sadece elektrik faturası anlamına gelir.

Laptopta ise doğrudan kullanım süresini etkiler.

Telefonlarda daha da belirgin.

Bir uygulama arka planda gereksiz işlem yapıyorsa işlemci çalışır.

İşlemci çalışırsa enerji tüketilir.

Enerji tüketilirse pil daha hızlı biter.

Yani “bilgisayar güçlü, kaynakları kullansın” mantığının bedelini başka yerden ödersiniz.

Daha güçlü donanım almak yazılımın verimsizliğini ortadan kaldırmaz.

Sadece verimsizliğin bir kısmını gizler.

Güncellemeler neden yüzlerce megabayt?

Bir başka gariplik de güncelleme boyutları.

Küçük bir hata düzeltiliyor.

Ama güncelleme yüzlerce megabayt.

Çünkü modern uygulamalar çoğu zaman küçük bir dosyayı değiştirip bırakmıyor.

Yeni bağımlılıklar.

Yeni framework sürümleri.

Yeni varlıklar.

Yeni kütüphaneler.

Yeni bileşenler.

Derken küçük bir değişiklik büyük bir paket haline geliyor.

Kullanıcı ise sadece:

“Bir hata düzeltilmiş.”

mesajını görüyor.

Sonra 400 MB indiriyor.

Donanım geliştikçe yazılım neden küçülmedi?

Aslında bunun tam tersi olması beklenebilirdi.

Daha güçlü işlemciler.

Daha hızlı depolama.

Daha fazla RAM.

Daha hızlı internet.

Bütün bunlar geliştiricinin daha iyi optimizasyon yapabilmesi için de kullanılabilirdi.

Fakat sektör başka bir yöne gitti.

Geliştirme kolaylığı daha önemli hale geldi.

Hızlı ürün çıkarma daha önemli hale geldi.

Cross-platform geliştirme daha önemli hale geldi.

Hazır bileşen kullanmak daha önemli hale geldi.

Optimizasyon ise çoğu zaman listenin aşağılarına indi.

Çünkü kullanıcı programın 200 MB mı yoksa 800 MB mı olduğunu ilk açılışta fark etmeyebilir.

Ama geliştirici o uygulamayı daha hızlı geliştirebiliyorsa bunu hemen fark eder.

Yazılımın obezitesi teknik bir zorunluluk değil

Burada asıl mesele yazılımların büyümesinin kaçınılmaz olması değil.

Bazı yazılımların karmaşıklaşması normal.

Daha fazla özellik daha fazla kod gerektirebilir.

Daha gelişmiş grafikler daha fazla kaynak isteyebilir.

Daha karmaşık sistemler daha fazla işlem yapabilir.

Sorun bunlar değil.

Sorun, gereksiz kaynak tüketiminin normalleştirilmesi.

Bir programın kaynak tüketimi olması gerekenden fazlaysa:

“Bilgisayarlar artık güçlü.”

denmesi çözüm değil.

Bu sadece problemi kullanıcıya havale etmek.

Güçlü bilgisayar almak kötü yazılımı düzeltmiyor

Yeni bir bilgisayar aldığınızda eski yazılımınızın hızlandığını görürsünüz.

Sonra birkaç yıl geçer.

Yeni yazılım güncellenir.

Bilgisayarınız tekrar yavaşlamaya başlar.

Yeni bilgisayar alırsınız.

Yazılım yine büyür.

Bu döngü uzun zamandır devam ediyor.

Donanım geliştiriyor.

Yazılım kaynak tüketimini artırıyor.

Donanım tekrar geliştiriyor.

Yazılım biraz daha büyüyor.

Bir noktada insanın aklına şu soru geliyor:

Biz bilgisayarları gerçekten daha iyi yazılım çalıştırmak için mi güçlendiriyoruz, yoksa yazılımların giderek daha ağırlaşmasını telafi etmek için mi?

Eskiden kaynak kıymetliydi, şimdi unutuldu

Yazılım geliştirmenin eski dönemlerinde kaynaklar kıymetliydi.

Her kilobaytın önemi vardı.

Her işlem hesabı önemliydi.

Bugün aynı hassasiyetin tamamını görmek zor.

Çünkü güçlü donanım birçok problemi görünmez hale getiriyor.

Fakat görünmez olmak ortadan kalkmak değildir.

Programın RAM tüketimi yükseliyor.

CPU kullanımı artıyor.

Pil daha hızlı bitiyor.

Güncellemeler büyüyor.

Disk alanı daha hızlı tükeniyor.

Bilgisayarın daha fazla çalışması gerekiyor.

Bütün bunların sonunda kullanıcıya söylenen şey ise genellikle aynı:

“Bilgisayarınız eski olabilir.”

Belki de bilgisayar eski değildir.

Belki yazılım sadece gereğinden fazla kilo almıştır.

Yorum Bırak