Reactive Programming Nedir?
Merhaba,
Günümüzde çoğu programlama dili prosedürel(procedural) programlama temelinde çalışmaktadır. Bu yaklaşım ile; problemin çözüm aşamalarını yazılımcı adım adım kodlar, makine ise adım adım bu aşamaları çalıştırarak veriler işlenir ve sonuç üretilir. Oluşturulan kod yapısı ardışıl olarak oluşturulmuş aşamalara ve sürecin sonuna odaklanmıştır ve sarsılmaz bir şekilde bu süreç işlemektedir. Eğer ki, bu ardışıl yapıdaki sürece farklı bir değer katılmaya çalışırsa yapı buna müsaade etmeyecek, sıralama ya baştan yapılması gerekecek ya da tüm çalışmalar geri alınarak(callback) hesap tekrardan uygulanacaktır.
Reactive Programlama Nedir?
Biz burada sürece katılmaya çalışan farklı değeri yan etki olarak ele alırsak eğer şöyle bir tarifi rahatlıkla yapabiliriz;
Kodun akış sürecinde olası yan etkileri anında ya da sürecin herhangi bir “T” noktasında işleme alabilecek şekilde yapılan tasarımlara sahip uygulamalara ya da kod parçacıklarına Reactive denir. Burada, prosedurel programlamadakinden reactive uygulamaları ayıran en mühim fark, adım adım kod takip etmek yerine event(olay) takip etme özelliğidir.
Peki OOP ile Reactive Programming Arasındaki Fark Nedir?
OOP ile yazılımlar, gerçek hayattaki olguları nesneler ile modelleyerek tasarlanmaktadır. Reactive Programming’te ise gerçek hayattaki olaylar baz alınarak tasarım gerçekleştirilmektedir.
Olayı daha da teknik olarak ele alırsak eğer; kod sürecinde bir değişikliğin komple veri akışında yayılımıdır diyebiliriz.
Örneğin;
x = y + z
işleminde “y” değişkeninin değeri ile “z” değişkeninin değeri toplanıp “x” değişkenine atanmaktadır. Eğer ki prosedürel programlama mantığında hareket ederseniz, süreçte “y” veya “z” değişkenlerinden birinin değeri değişirse bu değişiklik “x” değişkenine yansımayacaktır. Çünkü ardışıl işlem sıralamasında “x” değişkeninin değeri çoktan belirlenmiştir ve artık bu değer “y” ve “z” den bağımsızdır. Reactive programlamada ise “y” ve “z” değişkenlerinin değeri değiştiğinde “x” değişkeninin değeride bu değişime göre şekillenecektir. Çünkü ardışıl işlem sıralamasından öte olaylar baz alınacağından dolayı sistem hangi noktada olursa olsun “x” değişkeninin değerini “y” ve “z” değişkenlerinin toplam sonucuna bağlamaktadır ve bu değişkenlerin değerleri değişse dahi bu olay üzerine “x” değişkenide tepkisini yeni değişiklikler üzerinden kendi değerini güncellemekle verecektir diyebiliriz.
Son olarak Stream Of Events teriminede değinirsek eğer;
Programlar birden fazla olayı ele aldıklarında bu olayları dizi gibi Stream dediğimiz yapılarda tutmaktadırlar. Reactive uygulamalar Stream yapıları üzerine kuruludur ve bu yapı akış sürecinde birçok yolla uygulamaya ulaşabilmektedirler. Eee haliyle uygulama her daim bu Stream’lere cevap verebilecek durumdadır ve olmalıdır.
Sonraki yazılarımda görüşmek üzere…
İyi çalışmalar…
Öncelikle bu güzel yazı için teşekkür ederim. Bilginize ve emeğinize sağlık.
Sadece aşağıdaki kısımda “a” değişkeni x olması gerekiyor sanırım.
“Reactive programlamada ise “y” ve “z” değişkenlerinin değeri değiştiğinde “a” değişkeninin değeride bu değişime göre şekillenecektir. “
Uyarı için teşekkür ederim Sedar 🙂 Sayende hatamızı düzeltmiş olduk.
Elinize sağlık
Çok benzerini başka bir yerde de okumuştum alıntılar yapmış olabilir misiniz?
Merhaba,
Lütfen benzer olasılığı olan kaynağı tarafıma iletir misiniz?
Merhaba
Tanımlarınız aşağıdaki makaledekilere çok yakın görünüyor https://bilisim.io/2017/12/07/reactive-programming-1-reactive-programlama-nedir/
Alphan Bey,
Referans gösterdiğiniz makalenin yayın tarihini benimkiyle kıyasladığınızda, ilgili konuya dair ilk içeriği ilgili sitenin yayınladığını görüyoruz. Lakin ardından en son güncellemesini 28 Temmuz 2018’de yaptığını görüyoruz. Yani yapılan güncelleme benim makaleyi yayınladığım tarihten 3 ay sonrasına tekabül ediyor. Benim makalemde yakın tarihte yapılan güncelleme hakkında ise ufak bir içeriksel hatadan dolayı beni uyaran Serdar Bey’in yorumuna(hemen sizin yorumunuzdan önceki) istinaden düzeltme maksatlı yapılan bir güncelleme olmasından dolayı sonradan konuya dair bir eklemede bulunmadığımı ifade etmek isterim.
Siz iki kaynaktaki içerikte benzer olan noktalar konusunda bana yardımcı olursanız alıntı yapıp yapmadığıma dair beni aydınlatmış olursunuz. Ya da makalemin alıntılanıp alıntılanmadığı konusunda…
Teşekkür ederim.