The source-page: http://xfront.com/stateless-versus-stateful/
Roger L. Costello
Karekök fonksiyonunu öğrendiğiniz okul matematik derslerine geri dönün. İşlevi bir bağımsız değişkenle çağırabileceğinizi ve sonucu döndürdüğünü öğrendiniz, örneğin,
(sqrt 9) 3
Aynı argümanla tekrar çağırırsanız, aynı sonucu alırsınız:
(sqrt 9) 3
Buna durumsuz işlev adı verilir.
Bunu aşağıdaki işlevle karşılaştırın. İşlev, bir banka hesabından para çekme durumunu taklit eder. İşlev geri çekilir ve argüman olarak çekilecek bir miktar alır. Para çekildikten sonra kalan bakiyeyi iade eder. Örneğin, hesapta 100 $ ile başladığınızı ve 25 $ çektiğinizi varsayalım:
(withdraw 25) 75
İşlevi aynı bağımsız değişkenle tekrar çağırın:
(withdraw 25) 50
İki kez değerlendirilen ifadenin (geri çekme 25) farklı sonuçlar verdiğini gözlemleyin. Bu, karekök işlevi tarafından sergilenenden farklı bir davranış türüdür. Geri çekme işlevi, durum bilgisi olan bir işlevdir — işlev her çağrıldığında dengelenen denge ve düşüşlerin bir kaydını tutar.
Geri çekme işlevi, durum bilgisi olmayan bir işleve dönüştürülebilir. Bunu iki argümanla adlandırın: çekilecek miktar ve işlemlerinizin kaydı. İşte ilk bakiyeyi ve ilk para çekme işlemini kaydeden bir XML belgesi:
<BankRecord> <InitialBalance>100</InitialBalance> <Withdrawal>25</Withdrawal> <CurrentBalance>75</CurrentBalance> </BankRecord>
Yeni para çekme işlevini para çekme tutarı ve BankRecord ile çağırın ve güncellenmiş BankRecord’u döndürür:
(withdraw 25 BankRecord) <BankRecord> <InitialBalance>100</InitialBalance> <Withdrawal>25</Withdrawal> <Withdrawal>25</Withdrawal> <CurrentBalance>50</CurrentBalance> </BankRecord>
Yeni geri çekme işlevi aynı argümanlarla tekrar çağrılırsa, aynı sonucu verir.
Yeni geri çekme işlevi ile, kayıtlarını tutma sorumluluğu işlevin kullanıcısındadır. Önceki – durum bilgisi olan – geri çekme işlevinde, kullanıcıların kayıtlarını tutma işlevi görev üzerindeydi.
Şimdi dikkatimizi web sitelerine çevirelim. Birçoğu vatansız ve yine de durum bilgisi var gibi görünüyor – sizi selamlıyorlar Merhaba Roger, tekrar hoş geldiniz ve son satın alımınızı hatırlıyorlar Son alışverişinize dayanarak, bu kitaplarla ilgileniyor olabilirsiniz. Web sitesi vatansızsa bunu nasıl yapıyor? Cevap: perde arkasında sizin adınıza bir kayıt oluşturur ve bu kaydı makinenizde saklar. Web sitesini ziyaret ettiğinizde, makinenizden kaydı alır ve sizi selamlamak ve son satın alma işleminizle ilgili kitapları bulmak için kayıttaki bilgileri kullanır. Bu kayda çerez adı verilir.
Artık durum bilgisiz ve durum bilgili işlem arasındaki farkı biliyorsunuz.
Daha fazla bilgi için Bilgisayar Programlarının Yapısı ve Yorumlanması kitabına bakın, s. 219-220.
Son Güncelleme: 17 Temmuz 2014