İdempotent işlem nedir?
Bilgi işlemde, idempotent bir işlem, aynı giriş parametreleriyle birden fazla kez çağrıldığında ek bir etkisi olmayan bir işlemdir. Örneğin, bir kümeden bir öğenin çıkarılması, küme üzerinde bir idempotent işlem olarak düşünülebilir.
Matematikte, idempotent bir işlem f(f(x)) = f(x) olduğu bir işlemdir. Örneğin, abs()
fonksiyonu idempotenttir çünkü tüm x
için abs(abs(x)) = abs(x)
tir.
Bu biraz farklı tanımlar, matematiksel tanımdaki x'in bir nesnenin durumunu temsil ettiği ve f'nin bu nesneyi değiştirebilecek bir işlem olduğu düşünülerek uzlaştırılabilir. Örneğin, Python set
ve onun discard
metodunu düşünün. discard` metodu bir elemanı kümeden çıkarır ve eğer eleman mevcut değilse hiçbir şey yapmaz. Yani:
my_set.discard(x)
aynı işlemi iki kez yapmakla tamamen aynı etkiye sahiptir:
my_set.discard(x)
my_set.discard(x)
Idempotent işlemler genellikle bir işlemi gerçekleştirme isteğinin en az bir kez gerçekleşmesinin garanti edildiği, ancak birden fazla kez de gerçekleşebileceği ağ protokollerinin tasarımında kullanılır. Eğer işlem idempotent ise, işlemin iki ya da daha fazla kez gerçekleştirilmesinde bir sakınca yoktur.
Daha fazla bilgi için idempotence hakkındaki Wikipedia makalesine bakınız.
Yukarıdaki cevapta daha önce bazı yanlış ve yanıltıcı örnekler vardı. Nisan 2014'ten önce yazılmış aşağıdaki yorumlar daha eski bir revizyona atıfta bulunmaktadır.
İdempotent bir işlem, aynı parametreleri geçirmeniz koşuluyla, birden fazla kez çağırsanız bile sonucu aynı durumda üretir.