﻿
{"id":7493,"date":"2018-04-07T08:40:54","date_gmt":"2018-04-07T08:40:54","guid":{"rendered":"http:\/\/www.gencayyildiz.com\/blog\/?p=7493"},"modified":"2019-09-04T12:28:37","modified_gmt":"2019-09-04T12:28:37","slug":"reactive-programming-nedir","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/reactive-programming-nedir\/","title":{"rendered":"Reactive Programming Nedir?"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Merhaba,<\/p>\n<p>G\u00fcn\u00fcm\u00fczde \u00e7o\u011fu programlama dili prosed\u00fcrel(procedural) programlama temelinde \u00e7al\u0131\u015fmaktad\u0131r. Bu yakla\u015f\u0131m ile; problemin \u00e7\u00f6z\u00fcm a\u015famalar\u0131n\u0131 yaz\u0131l\u0131mc\u0131 ad\u0131m ad\u0131m kodlar, makine ise ad\u0131m ad\u0131m bu a\u015famalar\u0131 \u00e7al\u0131\u015ft\u0131rarak veriler i\u015flenir ve sonu\u00e7 \u00fcretilir. Olu\u015fturulan kod yap\u0131s\u0131 ard\u0131\u015f\u0131l olarak olu\u015fturulmu\u015f a\u015famalara ve s\u00fcrecin sonuna odaklanm\u0131\u015ft\u0131r ve sars\u0131lmaz bir \u015fekilde bu s\u00fcre\u00e7 i\u015flemektedir. E\u011fer ki, bu ard\u0131\u015f\u0131l yap\u0131daki s\u00fcrece farkl\u0131 bir de\u011fer kat\u0131lmaya \u00e7al\u0131\u015f\u0131rsa yap\u0131 buna m\u00fcsaade etmeyecek, s\u0131ralama ya ba\u015ftan yap\u0131lmas\u0131 gerekecek ya da t\u00fcm \u00e7al\u0131\u015fmalar geri al\u0131narak(callback) hesap tekrardan uygulanacakt\u0131r.<\/p>\n<h3>Reactive Programlama Nedir?<\/h3>\n<p>Biz burada s\u00fcrece kat\u0131lmaya \u00e7al\u0131\u015fan farkl\u0131 de\u011feri <u>yan etki<\/u> olarak ele al\u0131rsak e\u011fer \u015f\u00f6yle bir tarifi rahatl\u0131kla yapabiliriz;<\/p>\n<p>Kodun ak\u0131\u015f s\u00fcrecinde olas\u0131 yan etkileri an\u0131nda ya da s\u00fcrecin herhangi bir &#8220;T&#8221; noktas\u0131nda i\u015fleme alabilecek \u015fekilde yap\u0131lan tasar\u0131mlara sahip uygulamalara ya da kod par\u00e7ac\u0131klar\u0131na Reactive denir. Burada, prosedurel programlamadakinden reactive uygulamalar\u0131 ay\u0131ran en m\u00fchim fark, ad\u0131m ad\u0131m kod takip etmek yerine event(olay) takip etme \u00f6zelli\u011fidir.<\/p>\n<h5>Peki OOP ile Reactive Programming Aras\u0131ndaki Fark Nedir?<\/h5>\n<p>OOP ile yaz\u0131l\u0131mlar, ger\u00e7ek hayattaki olgular\u0131 nesneler ile modelleyerek tasarlanmaktad\u0131r. Reactive Programming&#8217;te ise ger\u00e7ek hayattaki olaylar baz al\u0131narak tasar\u0131m ger\u00e7ekle\u015ftirilmektedir. <\/p>\n<p>Olay\u0131 daha da teknik olarak ele al\u0131rsak e\u011fer; kod s\u00fcrecinde bir de\u011fi\u015fikli\u011fin komple veri ak\u0131\u015f\u0131nda yay\u0131l\u0131m\u0131d\u0131r diyebiliriz.<br \/>\n\u00d6rne\u011fin;<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\nx = y + z\r\n<\/pre>\n<p>i\u015fleminde &#8220;y&#8221; de\u011fi\u015fkeninin de\u011feri ile &#8220;z&#8221; de\u011fi\u015fkeninin de\u011feri toplan\u0131p &#8220;x&#8221; de\u011fi\u015fkenine atanmaktad\u0131r. E\u011fer ki prosed\u00fcrel programlama mant\u0131\u011f\u0131nda hareket ederseniz, s\u00fcre\u00e7te &#8220;y&#8221; veya &#8220;z&#8221; de\u011fi\u015fkenlerinden birinin de\u011feri de\u011fi\u015firse bu de\u011fi\u015fiklik &#8220;x&#8221; de\u011fi\u015fkenine yans\u0131mayacakt\u0131r. \u00c7\u00fcnk\u00fc ard\u0131\u015f\u0131l i\u015flem s\u0131ralamas\u0131nda &#8220;x&#8221; de\u011fi\u015fkeninin de\u011feri \u00e7oktan belirlenmi\u015ftir ve art\u0131k bu de\u011fer &#8220;y&#8221; ve &#8220;z&#8221; den ba\u011f\u0131ms\u0131zd\u0131r. Reactive programlamada ise &#8220;y&#8221; ve &#8220;z&#8221; de\u011fi\u015fkenlerinin de\u011feri de\u011fi\u015fti\u011finde &#8220;x&#8221; de\u011fi\u015fkeninin de\u011feride bu de\u011fi\u015fime g\u00f6re \u015fekillenecektir. \u00c7\u00fcnk\u00fc ard\u0131\u015f\u0131l i\u015flem s\u0131ralamas\u0131ndan \u00f6te olaylar baz al\u0131naca\u011f\u0131ndan dolay\u0131 sistem hangi noktada olursa olsun &#8220;x&#8221; de\u011fi\u015fkeninin de\u011ferini &#8220;y&#8221; ve &#8220;z&#8221; de\u011fi\u015fkenlerinin toplam sonucuna ba\u011flamaktad\u0131r ve bu de\u011fi\u015fkenlerin de\u011ferleri de\u011fi\u015fse dahi bu olay \u00fczerine &#8220;x&#8221; de\u011fi\u015fkenide tepkisini yeni de\u011fi\u015fiklikler \u00fczerinden kendi de\u011ferini g\u00fcncellemekle verecektir diyebiliriz.<\/p>\n<p>Son olarak <em>Stream Of Events<\/em> teriminede de\u011finirsek e\u011fer;<br \/>\nProgramlar birden fazla olay\u0131 ele ald\u0131klar\u0131nda bu olaylar\u0131 dizi gibi Stream dedi\u011fimiz yap\u0131larda tutmaktad\u0131rlar. Reactive uygulamalar Stream yap\u0131lar\u0131 \u00fczerine kuruludur ve bu yap\u0131 ak\u0131\u015f s\u00fcrecinde bir\u00e7ok yolla uygulamaya ula\u015fabilmektedirler. Eee haliyle uygulama her daim bu Stream&#8217;lere cevap verebilecek durumdad\u0131r ve olmal\u0131d\u0131r.<\/p>\n<p>Sonraki yaz\u0131lar\u0131mda g\u00f6r\u00fc\u015fmek \u00fczere&#8230;<br \/>\n\u0130yi \u00e7al\u0131\u015fmalar&#8230;<\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>Merhaba, G\u00fcn\u00fcm\u00fczde \u00e7o\u011fu programlama dili prosed\u00fcrel(procedural) programlama temelinde \u00e7al\u0131\u015fmaktad\u0131r. Bu yakla\u015f\u0131m ile; problemin \u00e7\u00f6z\u00fcm a\u015famalar\u0131n\u0131 yaz\u0131l\u0131mc\u0131 ad\u0131m ad\u0131m kodlar, makine ise ad\u0131m ad\u0131m bu a\u015famalar\u0131 \u00e7al\u0131\u015ft\u0131rarak veriler i\u015flenir ve sonu\u00e7 \u00fcretilir. Olu\u015fturulan kod yap\u0131s\u0131&#46;&#46;&#46;<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":1,"featured_media":3014,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[15,1],"tags":[2224,2222,2223,2221,2220,2225],"class_list":["post-7493","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-diger","category-genel","tag-oop-vs-reactive-programming","tag-procedural-programlama","tag-reactive","tag-reactive-programlama","tag-reactive-programlama-nedir","tag-stream-of-events"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/7493","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/comments?post=7493"}],"version-history":[{"count":1,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/7493\/revisions"}],"predecessor-version":[{"id":12015,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/7493\/revisions\/12015"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media\/3014"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=7493"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=7493"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=7493"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}