3 puan yazan GN⁺ 2024-02-11 | 1 yorum | WhatsApp'ta paylaş

2024 için yalın yazılıma çağrı

  • Yazılımın hacim olarak büyümesi, yani 'bloat' olgusu, hâlâ yazılımın en büyük zayıflıklarından biri.
  • Yalın yazılım geliştirmek; kullanıcı deneyimini iyileştirmek, güvenlik risklerini azaltmak ve sistem verimliliğini artırmak açısından önemli.
  • Geliştiriciler, daha az kodla daha fazla işlev sunacak şekilde yazılım tasarlamalı.

GN⁺ görüşü

  • Yazılımdaki 'bloat' olgusu, sistem performansında düşüşe ve güvenlik açıklarına yol açabileceğinden, geliştiriciler kod optimizasyonuna ve verimli tasarıma odaklanmalı.
  • Kullanıcılar daha hızlı ve daha güvenli bir yazılım deneyimi istediği için, yalın yazılım pazarda rekabet avantajı sağlayabilir.
  • Bu yazı, geliştiricilerin mevcut yazılım geliştirme trendlerini yeniden düşünmesine ve daha iyi yazılımlar üretmek için motive olmasına yardımcı olabilir.

1 yorum

 
GN⁺ 2024-02-11
Hacker News görüşü
  • Vernor Vinge'in "A Deepness in the Sky" romanında insanlık, hâlâ ışık hızını aşan bir teknoloji olmadan yıldızlar arasına yayılmış durumdadır. Uzay gemileri çok eskidir ve çeşitli sistemlerle medeniyetlerin teknolojilerinin bir karışımını barındırır.

    • Bilgisayar sistemleri uzun zaman içinde evrilmiştir ve kodun çoğunu artık kimse gerçekten anlamamaktadır. İnsanlar sadece kodu kullanır ve onun üzerine yeni şeyler inşa eder.
    • Bir karakter çok uzun süre seyahat etmiş ve stasis durumunda kalmıştır; bu yüzden muhtemelen en yaşlı insanlardan biridir. Geçmişte sistem mühendisi olarak çalışmıştır ve kendi dönemindeki çalışma mantığını ve zayıflıkları bildiği için, gelecekte başkaları bunun üzerine birçok katman ekleyip tam olarak ne yaptıklarını bilmezken bunu kendi lehine kullanma açısından büyük bir avantaja sahiptir.
    • Bence Vernor önemli bir noktaya değiniyor.
  • npm'deki kütüphanelerin çoğu gereksiz derecede fazla özelliğe sahip. Yazarlar iyi tasarımı bilmiyor ve her kütüphane her şeyi yapmaya çalışıyor.

    • Örneğin bir string encoding conversion kütüphanesi, dosya yükleme, kaydetme, internet üzerinden indirme ve komut satırı aracı sağlama gibi işlevlerin hepsini birlikte içeriyor. Bir kütüphane yalnızca tek bir şey yapmalı.
    • Rust'ta da durumun daha iyi olmadığı görülüyor. Rust belgelerini düzenlemeye çalıştığınızda yaklaşık 1000 crate kurmanız gerekiyor.
    • Sorun dilde değil; herkes kütüphane yayımlayabiliyor ve gerçekten de yayımlıyor. "İşi bitirmek isteyen" insanlar en fazla özelliğe sahip kütüphaneyi seçiyor ve kütüphane dışında çözülebilecek birkaç satırlık kodu yazmaya üşendikleri için daha fazla özellik talep ediyor.
    • Bunun nasıl çözüleceğini bilmiyorum. Bir fikir, "düşük bağımlılık" yaklaşımını benimseyen bir grup başlatmak; kütüphanelerine bu rozeti takmak isteyenleri teşvik etmek ve insanların kütüphane seçerken bu rozeti aramasını sağlamak.
  • Antoine de Saint-Exupéry'nin "Terre des Hommes" eserinde, modern bir uçağa bakıp onun her yıl geçirdiği evrim çizgisini izleyerek insanın ürettiği her şey üzerine hiç düşünüp düşünmediği sorulur.

    • Tüm endüstriyel çaba, hesaplama, tasarım ve planlar üzerinde uykusuz geçirilen geceler, sonunda nihai ilkesi sadelik olan bir nesne üretmeye odaklanır.
    • Bir mobilyanın eğrilerini, bir geminin omurgasını, bir uçağın gövdesini giderek insan göğsünün ya da omzunun temel saf eğrilerine benzetebilmek için, kuşaklar boyunca zanaatkârların denemeler yapması gerekir.
    • Mükemmelliğin, eklenecek bir şey kalmadığında değil, çıkarılacak bir şey kalmadığında elde edildiği söylenir.
  • Şu anda kullandığımız kod miktarı inanılmaz derecede büyük. Örneğin bir garaj kapısını açmak için 50 milyondan fazla satır aktif kod gerekebilir.

    • Bu kadar çok kod çalıştırıyoruz ama bu kodların büyük kısmı muhtemelen derinlemesine incelenmedi.
    • Buna rağmen yine dönüp dolaşıp npm bağımlılıkları kurma rutinine geri dönüyoruz.
  • Yazılım tehlikeli kabul edildiği için insanlara onu doğrudan çalıştırmamaları, bunun yerine bir "X as a service" sağlayıcısına ya da "cloud"a bırakmaları tavsiye ediliyor.

    • Bu, sanki arabalar çok kolay alev aldığı için sürüşü uzmanlara ve yanlarında profesyonel itfaiyeciler taşıyan profesyonellere bırakmanız gerektiğinin söylenmesine benziyor.
  • Yazılımın daha yalın hâle gelmemesinin nedeni, bunun zaman, beceri ve pahalı insan kaynağı gerektirmesi.

    • Bağımsız bir geliştirici olarak, geçen yıl node.js öğrenmiş biri; node.js, container'lar, çeşitli AWS barındırmalı DB hizmetleri, lambda hizmetleri, object storage, Cloudflare, yaml, react, vite ve benzerlerini birleştirerek bir gün içinde kırılgan bir web uygulaması yapabilir.
    • Hızlı çalışan ve bakım maliyeti düşük yazılım üretmek, kâr ederek yapılması zor bir iştir.
  • Geçmişte, tüm geliştiricilerin arayüzler ve benzeri şeyler için kullanacağı sistem tarafından sağlanan hook'ların standartlaştırılması hedefleniyordu; geliştiricinin asıl işi de program mantığını kodlamaktı.

    • Bu sistem çağrıları, kod değişse bile aynı işi yerine getirir; yeni yazılımlara daha fazla özellik sunarken eski kodun da sorun çıkarmadan derlenip çalışmasını mümkün kılar.
    • Bu hayal hızla çöktü (örneğin DLL sorunları) ve paket yönetiminin büyük kısmı doğru kütüphaneyi kullanabilmeye odaklandı.
    • Artık çok fazla deneyim birikmiş olsa da, bu hayalin uygulanabilir olup olmadığı ya da mevcut kaotik durumda hızlı, yalın, kararlı ve güvenliği güçlendirilmiş yazılıma doğru ilerleyip ilerlemediğimiz sorgulanıyor.
  • Rust hakkında bir görüş olarak, Rust C++'a kıyasla satır başına %70 daha az açık üretiyor olsa bile, Rust'ta yüzlerce paket çekip satır sayısını 10 kat artırıyorsanız mutlak açık sayısı daha fazla olabilir.

  • 20 yıl önce yazılımın bugün olduğu gibi olacağını bilseydim programcı olmayı seçmezdim. Her şey devasa, donanım ile yazılım sonsuz bir yarış içinde ve durum daha iyiye, daha kolay ya da daha basite gitmiyor.

  • Bir bağlantıya tıkladığınız anda CTA banner'ı, Google reklamları ve çerez banner'ı çıkıyor. Çerez banner'ını kapatır kapatmaz bir başka Google reklamı beliriyor ve aşağı kaydırdıkça sizi takip ediyor. Makaleyi okurken en az üç reklam daha görüyorsunuz.

    • Böyle bir durumda o içeriği ciddiye almak zorlaşıyor.