ความแตกต่างระหว่างกลยุทธ์การลดและกลยุทธ์การประเมินคืออะไร?


10

จากบทความกลยุทธ์การประเมินผลใน Wikipedia:

แนวคิดเกี่ยวกับกลยุทธ์การลดแคลคูลัสแลมบ์ดานั้นคล้ายคลึงกัน แต่แตกต่างกัน

จากบทความกลยุทธ์การลดลงใน Wikipedia:

มันคล้ายกับ แต่แตกต่างอย่างละเอียดจากแนวคิดเรื่องกลยุทธ์การประเมินทางวิทยาศาสตร์คอมพิวเตอร์

อะไรคือความแตกต่างที่ละเอียดอ่อนระหว่างกลยุทธ์การประเมินและกลยุทธ์การลดที่บทความทั้งสองนี้บอกใบ้? พวกเขาเป็นเพียงสองแนวคิดที่คล้ายกันจากโดเมนที่แตกต่างกันหรือไม่


3
การประเมินผลถูกกำหนดไว้สำหรับคำที่ถูกปิดเท่านั้นและไม่อยู่ภายใต้การผูกมัด การลดอนุญาตให้ดำเนินการภายใต้การยึดประสานและกำหนดไว้สำหรับคำที่เปิด
Neel Krishnaswami

คำตอบ:


8

กลยุทธ์การลดคือฟังก์ชั่นของแลมบ์ดาที่เลือกเรกซ์หนึ่งอัน (นิพจน์ที่สามารถลดค่าได้) จากเรกซ์ที่เป็นไปได้ทั้งหมด - ขึ้นอยู่กับสิ่งที่คุณกำหนดเป็นเรกซ์

อย่างไม่เป็นทางการกลยุทธ์การประเมินผลเป็นลำดับที่ภาษาประเมินข้อโต้แย้งของมัน กลยุทธ์การส่งผ่านพารามิเตอร์เป็นสิ่งที่ภาษามอบให้กับฟังก์ชัน

เพื่อให้เข้าใจถึงความเชื่อมโยงระหว่างสิ่งเหล่านี้ให้ศึกษากระดาษของพล็อตคินเรื่อง Call-by-name, call-by-value และแคลคูลัสแลมบ์ดา เขาอธิบายอย่างชัดเจนว่าคุณต้องการเลือก AXIOMS ​​ที่แตกต่างกันตามลำดับการประเมินที่คุณต้องการ สำหรับชื่อ Cb คุณต้องการสัจพจน์เบต้าเก่าและสำหรับค่า cb คุณต้องการสัจพจน์เบต้า ถ้าคุณทำเช่นนั้นเมตา - ทฤษฎีบททั้งหมดจะมีผลเหมือนกันสำหรับทั้งสองรสชาติ ฉันแสดงในภายหลัง (กับผู้ทำงานร่วมกันจำนวนมาก) ว่าความคิดนี้ทำให้ทุกอย่างที่โลกของ PL ได้ศึกษามา

มันเป็นเรื่องทางเทคนิคไม่ใช่บทกวีที่สามารถตีความได้ แค่อ่านมัน

- Matthias Felleisen

ป.ล. ฉันจะบอกว่าฉันคิดว่าผู้คนจะมีเวลาทำความเข้าใจกับกระดาษของ Plotkin จาก Part I ในหนังสือ Redex ของเราได้ง่ายขึ้น แต่ใช่มันยาว 3 เท่า



ในการพูดซ้ำคุณจะบอกว่าถูกต้องหรือไม่ที่จะบอกว่ากลยุทธ์การลดจะกำหนดผู้ช่วยให้สมบูรณ์สำหรับคำหนึ่ง ๆ ในขณะที่กลยุทธ์การประเมินจะระบุเพียงว่านามธรรมที่ประยุกต์ใช้ลดลงได้อย่างไร
กุยโด้

6

บทความวิกิพีเดีย "กลยุทธ์การลด" จะถูกแยกออกจากการแก้ไขเฉพาะที่ทำโดย IP นิรนามในบทความ "กลยุทธ์การประเมินผล"

มุมมองที่แสดงไม่สอดคล้องกันในแง่ที่ว่าฉันสงสัยว่ามีคนเพียงไม่กี่คนที่จะให้คำตอบนี้หากคุณถามพวกเขาว่า "คุณจะแยกความแตกต่างระหว่างชื่อ 'กลยุทธ์การลด' และ 'กลยุทธ์การประเมิน'? ฉันเพิ่งได้ยินจาก Matthias Felleisen ซึ่งยืนกรานเกี่ยวกับความสำคัญของความแตกต่างนี้และฉันคิดว่ามุมมองนี้จะถูกแบ่งปันโดยผู้อื่นที่มีโอกาสสละเวลาเพื่อพูดคุยประเด็นเหล่านี้ในรายละเอียดกับเขา

ความเข้าใจในปัจจุบันของฉันเกี่ยวกับประเด็นนี้ (แต่ฉันยังไม่ได้ศึกษารายละเอียดทางเทคนิคเพื่อความยุติธรรมอย่างเต็มรูปแบบ) นั้นเกี่ยวกับสิ่งต่อไปนี้: คุณเกี่ยวกับการใช้ "ขั้นตอนใหญ่" กับความหมาย "ขั้นตอนเล็ก ๆ " หรือไม่ โดยทุกคนในสนาม ซีแมนทิกส์ขั้นตอนขนาดเล็กกำหนดขั้นตอนการลดขนาดอะตอมหนึ่งและผลที่ได้คือโดยทั่วไปยังคงลดลงได้ ซีแมนทิกส์ขั้นตอนใหญ่กำหนดขั้นตอนการลด "ใหญ่" หนึ่งครั้งที่ดำเนินไปตลอดตั้งแต่โปรแกรมเริ่มต้นจนถึงค่า (หรือบางคำตอบที่สมบูรณ์ยิ่งขึ้นหากภาษาของคุณมีเอฟเฟกต์ที่สังเกตได้อื่น ๆ กว่าการส่งคืนค่าเช่นอินพุต / เอาต์พุตหรือ สถานะที่ไม่แน่นอน)

หากคุณกำหนดทั้งความสัมพันธ์ขั้นตอนใหญ่และขั้นตอนขนาดเล็กคุณสามารถตรวจสอบว่าความหมายของขั้นตอนใหญ่รวมอยู่ในการปิด transitive ของความสัมพันธ์ขั้นตอนเล็ก ๆ และความสัมพันธ์ขั้นตอนเล็ก ๆ ไม่ได้ลดลงไปเป็นคำที่ติดอยู่อื่น ๆ สิ่งที่เข้าถึงได้โดยความสัมพันธ์ขั้นตอนใหญ่หรือแยกออกหากการลดขั้นตอนใหญ่ถูกกำหนดไว้ นี่คือความสัมพันธ์ที่เชื่อมโยงกันที่คาดไว้ระหว่างทั้งสอง

ฉันคิดว่าถ้อยคำของบทความสามารถอธิบายได้มากหรือน้อยในแง่ที่ทันสมัยเนื่องจาก "กลยุทธ์การประเมินคือความสัมพันธ์แบบก้าวใหญ่" "กลยุทธ์การลดคือความสัมพันธ์แบบก้าวเล็ก" โปรดทราบว่าการอภิปรายในบทความ "กลยุทธ์การลด" ส่วนใหญ่เกี่ยวกับบทความและการวิจัย (และที่สำคัญกว่านั้นคือมุมมองฝีปากที่เกิดขึ้นระหว่างการอ่านและการเขียนของพวกเขา) ระหว่างปี 1973 และ 1991 ในเวลาที่ความคิดเหล่านั้นเพิ่งจะเกิดขึ้นและ อาจจะไม่เข้าใจเท่าที่เป็นอยู่ทุกวันนี้ (ความหมายขั้นตอนใหญ่ถูกเน้นโดยคาห์นในปี 1987 และหนึ่งในงานที่สำคัญที่สุดในความหมายขั้นตอนเล็ก ๆ คือ Wright และ Felleisen, 1992)

สำหรับด้านที่ให้ความเห็นเพิ่มเติมว่าทำไม Felleisen ยืนยันถึงความสำคัญของความแตกต่างนี้ (นั่นคือสาเหตุที่อาจมีมากกว่านั้นเพียงแค่ "ขั้นตอนขนาดเล็กเทียบกับขั้นตอนใหญ่, meh") ความเข้าใจปัจจุบันของฉันคือ: ประเด็นที่กำลังทำอยู่คือความหมายขั้นตอนเล็ก ๆ ควรถูกมองว่าเป็นรายละเอียดการนำไปปฏิบัติ ความหมายตามอาร์กิวเมนต์นี้เป็นฟังก์ชั่นนามธรรมที่แมปแต่ละโปรแกรมกับค่า / คำตอบของมันและส่วนที่เหลือเป็นอุปกรณ์การใช้งานที่ออกแบบมาเพื่อประมาณมัน (หรือเหตุผลในการเทียบเท่าที่เกิดจากความหมายนี้) เมื่อเราพูดขั้นตอนใหญ่วันนี้เราคิดถึงระบบการอนุมานกฎของวากยสัมพันธ์ธรรมชาติ แต่ "กลยุทธ์การลด" ที่กล่าวถึงข้างต้นเป็นจริงแล้วมันเป็นนามธรรมที่เป็นแผนที่ (ฉันไม่คิดว่านี่จะให้ความหมายหรือความแข็งแกร่งมากขึ้นกับความคิดในทางปฏิบัติ แต่มันทำให้เป็นนามธรรมมากขึ้น)

ดังนั้นฉันจึงคิดว่าสิ่งที่หน้าวิกิพีเดียและแมทเธียสส์ Felleisen กำลังพูดนั้นมีลักษณะดังนี้: "กำหนดการประเมินของคุณในแบบที่คุณชอบ แต่ในตอนท้ายของวัน คำตอบ / พฤติกรรมและนี่คือสิ่งที่ควรเรียกว่า 'ความหมายในการปฏิบัติงาน' และให้เหตุผลเกี่ยวกับ "

โปรดทราบว่าตำแหน่งนี้ค่อนข้างขัดแย้งกับความแตกต่างในปัจจุบัน (ซึ่งฉันคิดว่าค่อนข้างยินยอม แต่อาจเป็นความลำเอียงทางวัฒนธรรมในส่วนของฉัน) ระหว่าง "ปฏิบัติการความหมาย" และ "ความหมายเชิง Denotational" ซึ่งอดีตถูกมองว่าเป็น syntactic มากกว่าในธรรมชาติ (หมายถึงการลดความสัมพันธ์) และโดยทั่วไปแล้วหลังเป็นลักษณะความจริงที่ว่าโปรแกรมที่มีการคำนวณเทียบเท่ามี denotation แบบเดียวกันแน่นอน (ดังนั้นการ denotation จะถูกลบล้างกลไกการคำนวณจริง) ภายใต้มุมมองหลังนี้สิ่งที่เสนอให้เป็น "กลยุทธ์การประเมินผล" หรือ "ความหมายเชิงปฏิบัติการ" ในบทความและคำอธิบายของฉันด้านบนจะถูกมองว่าเป็นความหมายเชิงลบ - แต่เป็นที่ยอมรับในลักษณะที่เป็นรูปธรรมมากกว่า: ค่า / คำตอบ / พฤติกรรมอยู่ใกล้กับวากยสัมพันธ์วัตถุมากกว่าโดเมนความหมายจำนวนมาก

การอ้างอิง:เพื่อทำความเข้าใจในมุมมองนี้อาจเป็นประโยชน์ที่จะกลับไปที่แหล่งที่มาซึ่งเป็นบทความโดย Gordon Plotkin ในปี 1973 คุณอาจโชคดีที่ได้ลองบทความหลังหนึ่งที่อ้างถึงในวิกิพีเดีย ฉันพบตัวอย่างเช่น "Parameter-Passing และแลมบ์ดาแคลคูลัส" โดย Crank และ Felleisen ปี 1991 ให้ภาพรวมที่ชัดเจนเกี่ยวกับตำแหน่งของพวกเขาในเรื่องนี้ในหน้าแรก ๆ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.