*

  • ing. tepkisel programlama. kendisine "yeni kuşak asenkron programlama" da denebilir. ilk popüler implementasyonu microsoft tarafından .net için geliştirilmiş ve günümüzde envai çeşit varyasyonu olan bir kütüphane destekli metodolojiler bütünü.

    normalde asenkron kodlar callback'ler ile yazılırlar, nodejs'teki gibi. bu bir süre sonra iç içe sonsuz callback'e sebep olur. debug etmeyi ve okunan kodu anlamayı cehenneme çevirir.

    bu problemi çözmek için dillere async/await gibi yapılar gelmiştir. böylece kodu normal senkron kod yazar gibi alt alta satırlar olarak yazabilirsiniz. haliyle kodunuz genel olarak klasik bir event loop gibi görünür.

    lakin uygulamalarda event kaynakları bir değil, iki değil. bir sürü asenkron başka olaylar dönüyor. mesela ui'dan event geliyor, api çağırıyorsun oradan event geliyor, network'ten event geliyor. sonra bunlar arasında bağımlılık doğuyor, bazılarını filtrelemen gerekiyor, bazılarını atlaman gerekiyor, bazılarına süre sınırı koyman gerekiyor. her seferinde bunlar için kodlar yazmak hem hammaliye hem hataya müsait. tepkisel programlama burada devreye giriyor:

    event akışları observable adındaki asenkron stream-imsi varlıklar üstünden yapılıyor. bu tepkisel programlamaya özel bir yapı değil, observer pattern'ın bir parçası. observable'ların özellikleri ondan okuma işlemlerini senkron yapamıyor olmanız. illa asenkron yapmak zorundasınız. o yüzden observable'a yeni mal düştüğünde hangi kodun çalışacağını deklare ediyorsunuz. yani "observable'ı canının istediğinde oku" diye bir vaziyet yok. "observable'ın senin kodunu yeri geldiğinde çalıştırması için dua et" diye bir vaziyet var.

    bu baştan deklare etme işlemine de "abone olma" (subscribe/subscription) deniyor. bir observable'a (öf arka arkaya observable yazmak ne zormuş, okuması eminim daha sıkıntıdır. obs falan mı desek) abone olduğunuzda kuyruğa yeni mal düştükçe kodunuz tepkisel programlama altyapısı tarafından otomatik tetikleniyor. bunu da reactive programming desteğini sağlayan framework'ün scheduler'ları yapıyor, ne şekilde yapılacağına karar veriyor. ayrı thread'de mi, asenkron mu, sıralı mı, artık nasıl konfigüre ederseniz.

    yani reactive programming yoğun asenkron event akışıyla cebelleşen kodlar için kodu yazmayı ve sonrasında okuyup anlamayı kolaylaştırıcı özellikler sağlıyor. nesne yönelimli programlama ya da fonksiyonel programlama gibi yeni bir programlama paradigmasından çok event-driven programming gibi bir metodoloji. basit asenkron kodlar için çok manalı olmayabilir. senkron kod zaten yazmayın artık 2019 yılındayız (bkz: asenkron programlama/@ssg).
  • son yıllarda, hatta bilhassa 2018 yılında giderek yaygınlaşan ve daha çok reklamı yapılan programlama çeşididir. birkaç seminerine katıldım. hatırladığım kadarıyla cross platform kolaylığı da vardı. yanılmıyorsam bir iki seminer bahçeşehir üniversitesi beşiktaş kampüsünde ve itü teknoparkta vardı.

    adamlar özellikle kodu sadeleştirdiği için tercih edilmesi gerektiğini söylüyor.
    aslında ilgi çekici konular ancak yazılım da tıp gibi oldu artık. birçok kolu çıktı.

    paralel programlama piyasaya ilk çıktığında öğrenmeye çalışmıştım. ancak sürekli kullanmadığım için yeterince sindiremedim. eskiden bileceğin birkaç şeydi ve yeterliydi, gerisini öğrenebilirdin. şimdi takip etmesi zor. özellikle eski tip programlamaya alışık olan bendeniz için.
  • yüksek volümlü ama throughput istenen event streamlerinde worker'ları yavaşlatacak bir uç sistem, webservis vb. çağırmak gerektiğinde işe yarar. örneğin 100ms'de cevap dönen bir web servisi 10.000 kere çağırmak toplamda 1000 saniye beklemeye sebep olur. web servisin cevabını beklemek yerine asenkron bir şekilde istek yapılır. servisin cevabı da event'e çevrilip aynı worker'a beslenir. bu sayede sistem cevap beklenecek 1000 saniyede de event işlemeye devam eder.

    (bkz: spring webflux)
  • mikroservisler mimarisi ve mesaj tabanlı broker ile yayılmakta olan bir olay.
  • performans faktörünün önemli olduğu sistemlerde kullanılabilecek programlama paradigması
hesabın var mı? giriş yap