Apa perbedaan antara strategi reduksi dan strategi evaluasi?


10

Dari artikel strategi evaluasi di Wikipedia:

Gagasan strategi pengurangan dalam kalkulus lambda adalah serupa tetapi berbeda.

Dari artikel strategi reduksi di Wikipedia:

Ini mirip dengan tetapi agak berbeda dari gagasan strategi evaluasi dalam ilmu komputer.

Apa perbedaan halus antara strategi evaluasi dan strategi pengurangan yang disiratkan oleh dua artikel ini? Apakah mereka hanya dua konsep serupa dari domain yang berbeda?


3
Evaluasi hanya didefinisikan untuk istilah tertutup, dan tidak masuk dalam pengikat. Pengurangan diizinkan untuk dilakukan di bawah pengikat dan didefinisikan untuk istilah terbuka.
Neel Krishnaswami

Jawaban:


8

Strategi reduksi adalah fungsi pada Lambda yang mengambil satu redex (ekspresi yang dapat direduksi) dari semua redex yang mungkin - tergantung pada apa yang Anda definisikan sebagai redex.

Secara informal, strategi evaluasi adalah urutan di mana bahasa mengevaluasi argumennya. Strategi parameter-passing adalah apa yang diberikan bahasa ke fungsi.

Untuk memahami hubungan di antaranya, pelajarilah makalah Plotkin tentang Call-by-name, call-by-value, dan kalkulus lambda. Dia dengan jelas menjabarkan bahwa Anda ingin memilih AXIOM yang berbeda tergantung pada urutan evaluasi yang Anda inginkan. Untuk nama-Cb Anda menginginkan aksioma beta lama dan untuk nilai cb Anda menginginkan aksioma nilai beta. Jika Anda melakukan itu, semua meta-teorema bekerja sama untuk kedua rasa. Saya kemudian menunjukkan (dengan banyak kolaborator) bahwa ide ini digeneralisasikan untuk semua yang dipelajari oleh dunia PL.

Semuanya teknis, bukan puisi yang bisa diartikan. Baca saja itu.

- Matthias Felleisen

ps Saya akan mengatakan bahwa saya pikir orang akan lebih mudah memahami makalah Plotkin dari Bagian I dalam buku Redex kami. Tapi ya, panjangnya 3x.



Untuk mengulang, apakah Anda mengatakan itu benar untuk mengatakan bahwa strategi pengurangan sepenuhnya menentukan penggantinya untuk jangka waktu, sementara strategi evaluasi hanya menentukan bagaimana abstraksi yang diterapkan mengurangi (tidak mengatakan apa-apa tentang kongruensi, katakanlah)?
Guido

6

Artikel wikipedia "Strategi pengurangan" sepenuhnya diambil dari edit khusus yang dibuat oleh IP anonim ke artikel "Strategi evaluasi".

Pandangan yang diwakilinya tidak konsensual, dalam arti bahwa saya menduga relatif sedikit orang di lapangan akan secara spontan memberikan jawaban ini jika Anda bertanya kepada mereka "apakah Anda akan membedakan nama 'strategi pengurangan' dan 'strategi evaluasi'?". Saya hanya mendengarnya dari Matthias Felleisen, yang bersikeras tentang pentingnya perbedaan ini - dan saya berasumsi sudut pandang ini dimiliki oleh orang lain yang memiliki kesempatan meluangkan waktu untuk membahas poin-poin ini secara rinci dengannya.

Pemahaman saya saat ini tentang hal ini (tapi saya belum mempelajari detail teknis untuk keadilan penuh mereka) adalah tentang hal berikut: ini adalah tentang apakah Anda menggunakan semantik "langkah besar" versus "langkah kecil" - perbedaan ini standar dan dipahami oleh semua orang di lapangan. Semantik langkah-kecil mendefinisikan satu langkah reduksi atom, dan hasilnya secara umum masih dapat direduksi. Semantik langkah besar mendefinisikan satu langkah reduksi "besar" yang berjalan jauh dari program awal ke nilainya (atau tipe "jawaban" yang lebih kaya jika bahasa Anda memiliki efek yang dapat diamati selain mengembalikan nilai, mis. Input / output atau keadaan bisa berubah).

Jika Anda mendefinisikan relasi langkah-besar dan langkah-kecil, Anda dapat memeriksa bahwa semantik langkah-besar termasuk dalam penutupan transitif relasi langkah kecil, dan bahwa relasi langkah-kecil tidak mengurangi ke syarat-syarat macet lainnya daripada yang dicapai oleh hubungan langkah besar, atau berbeda jika pengurangan langkah besar didefinisikan. Ini adalah hubungan koherensi yang diharapkan antara keduanya.

Saya berpikir bahwa kata-kata dari artikel tersebut dapat lebih atau kurang dijelaskan, dalam istilah modern, karena "strategi evaluasi adalah hubungan langkah besar", "strategi pengurangan adalah hubungan langkah kecil". Perhatikan bahwa diskusi yang dibuat dalam artikel "Strategi pengurangan" sebagian besar tentang artikel dan penelitian (dan, yang lebih penting, sudut pandang yang fasih terbentuk selama membaca dan menulis) antara tahun 1973 dan 1991, pada saat gagasan tersebut baru saja lahir, dan mungkin tidak dipahami dengan baik seperti sekarang ini. (Semantik langkah besar ditekankan oleh Kahn pada 1987, dan salah satu karya paling penting pada semantik langkah kecil adalah Wright dan Felleisen, 1992)

Untuk sisi yang lebih banyak berpendapat mengapa Felleisen menekankan pentingnya perbedaan ini (yaitu, mengapa mungkin ada lebih dari itu hanya "langkah kecil vs langkah besar, meh"), pemahaman saya saat ini adalah sebagai berikut: titik yang sedang dibuat adalah bahwa semantik langkah kecil harus dilihat sebagai detail implementasi. Itusemantik, menurut argumen ini, adalah fungsi abstrak yang memetakan setiap program dengan nilai / jawabannya, dan sisanya adalah perangkat implementasi yang dirancang untuk memperkirakannya (atau alasan kesetaraan yang disebabkan oleh semantik ini). Ketika kita mengatakan langkah besar hari ini, kita berpikir tentang sistem aturan inferensi yang bersifat sintaksis, tetapi "strategi reduksi" yang sedang dibahas di atas sebenarnya adalah abstraksi sebagai pemetaan. (Saya tidak berpikir ini memberi lebih banyak ekspresif atau kekuatan pada gagasan dalam praktik, tetapi membuatnya lebih abstrak.)

Jadi saya pikir apa yang dikatakan laman wikipedia ini, dan Matthias Felleisen, adalah seperti: "Tentukan evaluasi Anda sesuai keinginan Anda, tetapi pada akhirnya yang penting adalah bagaimana program Anda dipetakan sesuai dengan nilainya / jawaban / perilaku, dan inilah yang seharusnya disebut 'semantik operasional' dan beralasan tentang ".

Perhatikan bahwa posisi ini agak bertentangan dengan perbedaan saat ini (yang saya pikir agak konsensual, tetapi mungkin merupakan bias budaya di pihak saya) antara "semantik operasional" dan "semantik denotasional", di mana yang pertama terlihat lebih sintaksis di alam. (didefinisikan sebagai relasi reduksi), dan yang terakhir biasanya ditandai oleh fakta bahwa program yang setara secara komputasi memiliki denotasi yang sama persis (sehingga denotasi tersebut tidak mengetahui mekanisme perhitungan yang sebenarnya). Di bawah pandangan yang terakhir ini, apa yang diusulkan sebagai "strategi evaluasi" atau "semantik operasional" dalam artikel-artikel dan penjelasan saya di atas lebih baik dilihat sebagai semantik denotasional - tetapi diakui bersifat lebih konkrit daripada kebanyakan: nilai / jawaban / perilaku lebih dekat ke objek sintaksis daripada banyak domain semantik.

Referensi: untuk memahami sudut pandang ini, mungkin berguna untuk kembali ke sumber yang dinyatakannya, yaitu artikel oleh Gordon Plotkin pada tahun 1973. Anda mungkin juga beruntung mencoba salah satu artikel terakhir yang dikutip di wikipedia; Sebagai contoh, saya menemukan bahwa "Parameter-Passing dan Lambda Calculus", oleh Crank dan Felleisen, 1991, memberikan gambaran yang sangat jelas tentang posisi mereka mengenai masalah ini pada beberapa halaman pertama.

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.