Apa kata untuk operasi yang dapat diterapkan berkali-kali dan tidak pernah mengubah status di luar aplikasi awal?


38

Saya mencoba mengingat sebuah kata, saya pikir itu terkait dengan teori komputasi atau database. Sinonim terdekat adalah atomictetapi bukan itu tepatnya. Pada dasarnya ini adalah semacam perhitungan yang harus menghasilkan hasil yang sama bahkan ketika dijalankan beberapa kali berturut-turut, artinya itu tidak menciptakan efek samping untuk dirinya sendiri.

Saya secara khusus berlari melintasi kata ini dalam jawaban Stack Overflow tentang perintah chmod (atau operasi terkait izin lainnya).

Semoga itu cukup untuk melanjutkan. Berkeliaran di Wikipedia tidak banyak membantu.


5
Masuk akal untuk menentukan apakah Anda memberikan input yang sama ke setiap panggilan operasi atau menjalankan setiap operasi berikutnya pada hasil panggilan sebelumnya.
maxim1000

3
@ maxim1000 Setuju. Dilihat dari beragam jawaban, tidak ada yang yakin yang dimaksud OP.
ford

Masalahnya di sini adalah bahwa pertanyaan dalam subjek tidak sepenuhnya sama dengan pertanyaan dalam tubuh. Saya menjawab yang di subjek tetapi, melihat lagi sekarang, saya cukup yakin bukan itu yang diinginkan poster itu. Pertanyaan suntingan, menghapus jawaban
pdr

Apakah Anda bertanya tentang sesuatu seperti permintaan GET (di mana hasil yang sama dikembalikan setiap kali tidak peduli apa), atau apakah Anda bertanya tentang sesuatu seperti operator penugasan (yang memang memiliki efek, tetapi mengulangi penugasan yang sama tidak mengubah apa pun )?
Izkata

Jawaban:


91

Anda mungkin berpikir " Idempoten ".

Idempotence adalah milik operasi tertentu dalam matematika dan ilmu komputer, yang dapat diterapkan beberapa kali tanpa mengubah hasil di luar aplikasi awal.


16
Pada dasarnya fIFF f(f(x)) == f(x)FORALL idempoten x.
Jörg W Mittag

1
Keterbatasan deskripsi yang menarik - Bagian pembicaraan pada halaman terkait membahas tombol Elevator .. Harus ada 1000 perilaku yang dapat digambarkan sebagai "Idempoten" yang tidak terkait dengan Matematika atau Comp Sci.
mattnz

Dari pemahaman saya tentang pertanyaan, itu sama sekali tidak apa yang ditanyakan OP, karena ia tidak berbicara tentang penerapan algoritma pada hasil iterasi pertama, tetapi menerapkannya kembali pada sumber data yang sama. Sesuatu yang lebih seperti jika x = y, maka F (x) = F (y)
Joubarc

2
@Joubarc ya idempoten memiliki makna yang sedikit lebih longgar dalam komputasi daripada matematika, maka itu benar. en.wikipedia.org/wiki/Idempotent#Computer_science_meaning
jk.

1
@Joubarc Itu hanya berarti sebuah fungsi. Operasi yang pada input yang sama dapat bertindak secara berbeda tidak dapat disebut fungsi dari sudut pandang matematika. Jika dalam pemrograman mereka disebut fungsi, fungsi yang sebenarnya selalu memberikan output yang sama untuk input yang sama disebut purefungsi ... Yah, agak, mereka juga tidak harus memiliki efek samping sama sekali.
Paul Stelian

12

Kata umumnya adalah Idempotensi yang berlaku untuk komputer dan matematika. Ini tidak sama dengan Reentrant yang sering membingungkan. Idempotence persis seperti yang Anda gambarkan, Reentrant pada dasarnya dapat diinterupsi dengan kemampuan untuk mengambil tepat di mana Anda tinggalkan.

Bahasa Fungsional Murni seperti Haskell dibangun dengan prinsip sedekat mungkin dengan Idempoten. Tiga huruf pertama dari akronim ACID dalam Database Theory adalah Idempotence sebagaimana diterapkan pada Database.


10

Anda mungkin mencari fungsi murni .

Seperti yang didefinisikan dalam tautan, dua kondisi membuat fungsi murni:

  1. Fungsi selalu mengevaluasi nilai hasil yang sama dengan nilai argumen yang sama.
  2. Evaluasi hasil tidak menyebabkan efek samping atau keluaran yang dapat diamati secara semantik, seperti mutasi objek yang dapat berubah atau keluaran ke perangkat I / O.

4
Kemurnian melampaui idempotensi sederhana: fungsi murni tidak dapat memiliki efek samping sama sekali, sedangkan idempoten dapat memiliki efek samping selama mereka tidak menyebabkan lari berikutnya untuk melakukan hal-hal yang berbeda. Misalnya, fungsi yang menggunakan variabel yang bisa berubah lokal tidak murni, tetapi mungkin idempoten. Anda bahkan bisa menulis fungsi yang menggunakan variabel global dan masih idempoten, selama Anda memastikan itu menjaga global untuk membuatnya reentrant.
tammers

3
@tdammers Kemurnian dan idempotensi sepenuhnya ortogonal: fungsi murni tidak harus idempoten dan sebaliknya. Misalnya, f(x) := x + 1murni tetapi tentu saja tidak idempoten.
Konrad Rudolph


0

Kemungkinan lain adalah deterministik .

Dalam ilmu komputer, algoritma deterministik adalah algoritma yang, diberi input tertentu, akan selalu menghasilkan output yang sama, dengan mesin yang mendasarinya selalu melewati urutan negara yang sama.


1
ini baru saja dihapus jawaban sebelumnya; komentar yang menantang ide ini adalah: "Ini salah. Misalnya, algoritma yang menukar dua nilai sangat deterministik tetapi menjalankannya dua kali tidak akan menghasilkan hasil yang sama seperti menjalankannya sekali."
nyamuk

2
Tidak jelas apakah ini menjawab pertanyaan asli atau tidak, karena pertanyaan awal tidak diutarakan dengan baik, tetapi saya telah memilih-pilih jawaban ini karena kata deterministik mungkin menjadi salah satu yang dicari seseorang ketika mereka berakhir sini.
Richard Whitehead

Jika Anda menonaktifkan nilai input sebelum menjalankan berikutnya, bagaimana Anda bisa mengklaim bahwa Anda memberikan rutin dengan nilai argumen yang tepat sama ..?
Hein Haraldson Berg
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.