Idempotent, Idempotence, Idempotency,… Makalelerde ve özellikle Medium yazılarında sık rastladığım bir kelime. Daha çok HTTP ve REST API yazılarında karşılaştığım bu kelimeyi tabi ki araştırma gereksinimi duydum.
Idempotent, aslında bizim matematik derslerinde üzerine bastığımız ama onun orda olduğunda farkında olmadığımız bir taş gibi. 1920’den bu yana sürekli kullanılan bu kelime aslında birleşik bir kelime. “Idem”, Latince aynı veya eş anlamına gelirken potent de güç anlamına geliyor. Birleşimi de eşgüç veya aynıgüç olarak düşünebiliriz.
Wikipedia’ya göre tanımı şöyle:
Idempotence is the property of certain operations in mathematics and computer science, that can be applied multiple times without changing the result beyond the initial application.
Yani “Idempotence” matematik ve bilgisayar bilimlerinde, ilk uygulamayı aşmadan sonucu değiştirmeden, birden çok kez uygulanabilen belirli işlemlerin özelliğidir. Uygulama alanlarına göre farklı anlamlara da sahip olabiliyor bu kelime.
- Tek bir işlem (veya işlev), herhangi bir değere iki kez uygulandığında, bir kez uygulanmış gibi aynı sonucu verirse, idempotenttir; yani, f(f(x)) = f(x). Örneğin, mutlak değer fonksiyonu, abs(abs(x)) = abs(x), idempotenttir.
- Bir ikili işlem verildiğinde, işlem için bir idempotent eleman, işlemin her iki işleneni için bu değer verildiğinde sonuç olarak bu değeri verdiği bir değerdir. Örneğin, 1 sayısı bir çarpımın idempotentidir: 1 x 1 = 1.
- Tüm elemanlar işlem açısından idempotent elemanlar ise, ikili bir işlem idempotent denir. Örneğin, iki eşit değerin maksimum değerini veren fonksiyon idempotenttir: max(x, x) = x.
Bilgisayar biliminde, idempotent terimi bir veya birkaç kez uygulandığında aynı sonuçları verecek bir operasyonu tanımlamak için daha kapsamlı bir şekilde kullanılmaktadır.
Örnekler
Bir veritabanında müşterinin adını ve adresini arayan bir işlev genellikle idempotenttir, çünkü bu veritabanı değişmesine neden olmaz. Benzer şekilde, bir müşterinin adresini değiştirmek genellikle idempotenttir, çünkü nihai adresin kaç kez gönderildiği önemli değildir. Bununla birlikte, müşteri için bir sipariş vermek genellikle idempotent değildir, çünkü aramanın birkaç kez çalıştırılması birkaç siparişin verilmesine yol açacaktır. Bir siparişin iptal edilmesi idempotenttir, çünkü kaç talep olursa olsun sipariş iptal edilir.
Birçok insanın günlük yaşamlarında karşılaşabileceği uygulamalı örnekler arasında da asansör çağrı butonları ve yaya geçme düğmeleri yer alıyor. Düğmenin ilk etkinleştirilmesi, istek yerine getirilene kadar sistemi istekte bulunan bir duruma taşır.