İçeriğe geç
parazade

Stack Ne Demek?

Yayın: · Son güncelleme:

Stack Ne Demek? Kısaca

Stack (yığın), son eklenen elemanın ilk çıkarıldığı (LIFO) bir veri yapısıdır. Aynı adla, programın fonksiyon çağrılarını ve yerel değişkenlerini tuttuğu bellek bölgesine de stack denir.

Stack nedir?
İçindekiler
  1. Stack ne demek?
  2. Veri yapısı olarak stack
  3. Çağrı yığını nedir?

Stack ne demek?

Stack, İngilizcede "yığın" anlamına gelir ve yazılımda iki ilişkili kavramı ifade eder. İlki, elemanların üst üste konduğu bir veri yapısıdır. İkincisi, programın çalışırken fonksiyon çağrılarını takip ettiği bellek bölgesidir. İkisi de aynı kurala uyar: son giren ilk çıkar.

Veri yapısı olarak stack

Üst üste dizilmiş tabakları düşünün. Yeni tabağı en üste koyarsınız, alırken de en üsttekini alırsınız. Stack veri yapısı da bu şekilde çalışır ve bu kurala LIFO (Last In, First Out) denir.

Temel işlemler ikidir. Push, en üste eleman ekler; pop, en üstteki elemanı çıkarır. Peek ise elemanı çıkarmadan en üsttekine bakar. Metin editörlerindeki "geri al" özelliği tipik bir stack kullanımıdır: yaptığınız her değişiklik yığına eklenir, Ctrl+Z en son değişikliği geri çeker. Tarayıcının geri butonu da benzer mantıkla çalışır.

Çağrı yığını nedir?

Program bir fonksiyonu çağırdığında, o fonksiyonun yerel değişkenleri ve dönüş adresi çağrı yığınına eklenir. Fonksiyon bitince bu kayıt yığından çıkarılır ve program kaldığı yerden devam eder. Bu alan hızlıdır ama boyutu sınırlıdır.

Kendini sonsuza kadar çağıran bir özyineleme fonksiyonu yığını doldurur ve "stack overflow" hatası alınır. Hata mesajlarında gördüğünüz stack trace de aslında hatanın oluştuğu andaki çağrı yığınının dökümüdür. Bir hatayı ayıklarken stack trace'i en üst satırdan okumaya başlamak, sorunun kaynağına en kısa yoldan ulaştırır.

Sıkça Sorulan Sorular

Stack nedir, kuyruktan farkı ne?

Stack'te son eklenen eleman ilk çıkar (LIFO). Kuyrukta ise ilk eklenen eleman ilk çıkar (FIFO), tıpkı bir market kasasındaki sıra gibi.

Yazılımda "stack" başka ne anlama gelir?

Teknoloji yığını anlamında da kullanılır. Örneğin "MERN stack", bir projede birlikte kullanılan MongoDB, Express, React ve Node.js teknolojilerinin adıdır.

İlgili terimler

Kuyruk(Queue)Kuyruk (queue), ilk eklenen elemanın ilk çıkarıldığı (FIFO) bir veri yapısıdır. Elemanlar arkadan eklenir, önden alınır; tıpkı bir banka gişesindeki müşteri sırası gibi çalışır.HeapHeap, yazılımda iki anlamda kullanılır: programın çalışırken dinamik olarak bellek ayırdığı geniş bellek bölgesi ve en büyük ya da en küçük elemanı her zaman en üstte tutan ağaç biçimli veri yapısı.Veri Yapıları(Data Structures)Veri yapıları, verilerin bilgisayar belleğinde düzenli ve verimli biçimde saklanması ve işlenmesi için kullanılan yöntemlerdir. Dizi, bağlı liste, stack, kuyruk, ağaç, graf ve hash tablosu en bilinen örneklerdir.Özyineleme(Recursion)Özyineleme (recursion), bir fonksiyonun bir problemi çözmek için kendini daha küçük bir girdiyle yeniden çağırmasıdır. Her özyinelemeli fonksiyonda çağrıları durduran bir temel durum bulunmalıdır, yoksa program sonsuza kadar kendini çağırır.Fonksiyon(Function)Fonksiyon, programlamada belirli bir işi yapan, isim verilmiş ve gerektiğinde tekrar tekrar çağrılabilen kod bloğudur. Girdi olarak parametre alabilir ve geriye bir değer döndürebilir.PushPush, Git'te yerel depoda oluşturduğunuz commit'leri GitHub gibi uzak depoya göndermektir. Böylece değişiklikleriniz ekibin geri kalanı tarafından görülebilir ve yedeklenmiş olur.Stack TraceStack trace, bir hata ya da istisna oluştuğunda programın o ana kadar hangi fonksiyonları hangi sırayla çağırdığını dosya ve satır numaralarıyla gösteren rapordur. Hatanın kaynağını bulmanın en hızlı yollarından biridir.