Bu yazımızda Senkron programlama ve Asenkron programlamaya değineceğiz. Senkron ve asenkron programlama kavramlarından bahsederken aralarındaki farkları da anlatmaya çalışacağım.
Bu konuyu anlatmadan önce senkron kelimesinin ne anlama geldiğine bir göz atalım isterseniz.
Senkron kelimesi eşzaman anlamına gelmektedir. Yani aynı anda ve eşit zaman aralıklarıyla yapılan iş veya eylem anlamına gelmektedir.
Senkron programlama ise programlama yaparken her bir işin sıra ile yapılması anlamına gelmektedir.
Gerçek hayattan bir örnek vermek istiyorum. Şu an Ramazan ayındayız iyi de denk geldi. Hepimiz biliriz iftara yakın fırının önünde pide kuyruğuna gireriz. Öndeki kişi pidesini almadan önce biz alamayız çünkü bizim sıramız değildir. İşte senkron programlama da böyledir. Bir iş bitmeden diğerine geçiş yapamayız. Programlama dillerinin genelinde yazdığımız kodlar yukarıdan aşağıya okunarak çalıştırılır. Yani senkron olarak çalışır.
İsterseniz ilk olarak asenkron kelimesinin ne anlama geldiğine bakalım.
Kelime anlamı başlama ve bitiş zamanları ayrı olan, aynı zamanda olmayan demek olan kelimedir. Diğer adı da eşzamansızdır.
Programlamada çok işimize yarayan bu kavram son yıllarda iyice önem kazanmıştır.
Asenkron programlama ise programın senkron bir şekilde değil de öncelik verdiğimiz işlemlerin daha önce yapılmasını sağlayan ya da sağladığımız programlamadır. Senkron programlamada dediğimiz olay yani kodların yukarıdan aşağıya çalışmasını her zaman istemeyebiliriz. Mesela bir fonksiyonu son sırada yazarız ama ilk olarak o fonksiyonun çalışmasını isteyebiliriz. İşte burada imdadımıza asenkron programlama giriyor. Umarım iyi anlatabilmişimdir.
- Senkron programlamada kodlar yukarıdan aşağıya doğru sıralı bir biçimde çalışır.
- Asenkron programlamada ise öncelikli olarak hangisi çalıştırılmak isteniyorsa o çalışır.
Bunu Javascript dilinde anlatmak istiyorum. bir tane senkron ve bir tane de asenkron programlama ile kod parçacığı yazacağım.
Javascript Senkron Kod Örneği:
<script>
console.log("Zafer Yıldız");
console.log("Bilgisayar Mühendisi");
console.log("İstanbul-Ordu Arası Mekik Dokuyorum");
/*
Çıktı:
Zafer Yıldız
Bilgisayar Mühendisi
İstanbul-Ordu Arası mekik dokuyorum
*/
</script>
Yukarıdaki kod bloğunu çalıştığında çıktılar konsol ekranına sırayla yazılacaktır. Çünkü öncelik belirlemedik veya ek işlem yapmadık. Kodlar sırasıyla çalışır.
Javascript Asenkron Kod Örneği:
<script>
console.log('Zafer');
setTimeout(function afterTwoSeconds() {
console.log('Bilgisayar Mühendisi');
}, 2000)
console.log('Yıldız');
/*
Çıktı:
Zafer
Yıldız
Bilgisayar Mühendisi
*/
</script>
Bu kod parçacığını çalıştırdığınızda ise Ekranda sıralı bir şekilde çıktı vermez. Çünkü settimeout fonksiyonu asenkron çalışan bir fonksiyondur. Belli bir süre geçtikten sonra işlemi gerçekleştirir. Ama console.log() metodu anında çalışır. Settimeout fonksiyonunu sitem gördüğü zaman bitmesini beklemeden bir sonraki fonksiyona geçer. Settimeout fonksiyonunun süresi dolduğunda ise içindeki işlemi gerçekleştirir.
Sizlere Senkron ve asenkron programlamayı olabildiğince sade bir şekilde anlatmaya çalıştım. Bu konuyu iyice öğrenmenizi tavsiye ederim vanilla js, react, nodejs,vuejs gibi kütüphanelerde sıklıkla kullanılmakta ve modern programlamanın temelini oluşturmaktadır.
Esen kalın.