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.