ความหมายเชิง denotational คืออะไร?


45

ในเธรดอื่น Andrej Bauer กำหนดซีแมนติก denotational semantics เป็น:

ความหมายของโปรแกรมคือฟังก์ชั่นของความหมายของส่วนต่างๆ

สิ่งที่รบกวนจิตใจผมเกี่ยวกับความหมายนี้ก็คือว่ามันไม่ได้ดูเหมือนจะออกเดียวสิ่งที่ร่วมกันคิดว่าเป็นความหมาย denotationalจากสิ่งที่ร่วมกันคิดว่าเป็นความหมายที่ไม่ denotational คือโครงสร้างความหมายในการดำเนินงาน

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

ความหมายที่เป็นทางการ (ทั้งหมด?) ส่วนใหญ่ในปัจจุบันมีแนวโน้มที่จะมีโครงสร้างนี่เป็นคำจำกัดความที่จำเป็นหรือไม่

ดังนั้นคำถามของฉันคือ: ความหมายเชิง Denotational คืออะไร?


4
ความหมายสามารถให้ได้ในหลายรูปแบบ: เงื่อนไขก่อนโพสต์, การทำงานของเครื่องนามธรรม, เอนทิตีทางคณิตศาสตร์, กลยุทธ์ของเกม ในวิธีการที่ทันสมัยทุกความหมายเหล่านี้จะได้รับเป็นฟังก์ชั่นของความหมายของชิ้นส่วน
Ohad Kammar

1
คำถามของการดำรงอยู่ของเริ่มต้นการศึกษาทฤษฎีโดเมน มันเกิดจากวิธี denotational แต่ไม่ได้กำหนด (ตัวอย่างเช่นภาษาที่สงสัยอาจไม่มีช่องว่างของฟังก์ชัน) สำหรับโมดิฟายด์ตามที่ผมได้กล่าวไปแล้วโดยทั่วไปทุกวิธีการที่ทันสมัยในการตีความหมายมีองค์ประกอบในแง่ที่เหมาะสม [DD]D
Ohad Kammar

10
ตกลงกรุณาหยุดการแพร่กระจายความคิดเห็นที่ผิด ๆ ว่าเริ่มต้นหรือมีการกระตุ้นทฤษฎีโดเมนเพราะมันไม่ได้เป็นเช่นนั้น ดาน่าสกอตต์อยากทฤษฎีโดเมนจะเป็นทฤษฎีทางคณิตศาสตร์ที่เหมาะสมสำหรับการพิมพ์λแคลคูลัส ความจริงที่ว่ามันยังให้รูปแบบของ untyped λแคลคูลัสเป็นอุบัติเหตุ ฉันรู้เขาบอกฉันอย่างนั้น [DD]=D λλ
Andrej Bauer

2
ขอบคุณสำหรับการแก้ไข สิ่งที่ผมหมายถึงคือการที่เขาไม่ได้พิมพ์ใน "พิมพ์ทฤษฎีทางเลือก ISWIM" เขาสนับสนุนที่จะละทิ้งมองหาและเริ่มมองหารูปแบบการพิมพ์λแคลคูลัส ในกระบวนการเขาค้นพบวิธีแก้ปัญหาDกับสมการโดเมนข้างต้น ดังนั้นคำถามของการไม่มีอยู่ของ[ D D ] Dซึ่งได้รับการตั้งสมมติฐานว่าเป็นบวก (แต่กลายเป็นลบ) ดังนั้นจึงนำไปสู่ทฤษฎีโดเมนที่ริเริ่มโดเมน ฉันกำลังทำผิดที่นี่เช่นกัน? [DD]=DλD[DD]D
Ohad Kammar

1
ไม่แน่ใจว่ามีส่วนช่วย แต่วิธีที่ฉันเห็นงานซีแมนทิกส์เกี่ยวกับความหมายแบบ "ปัจจุบัน" คือ "การรวบรวมภาษาในบางหมวดหมู่" - แน่นอนคุณสามารถเขียนซีแมนทิกส์ในแง่ของวัตถุทางคณิตศาสตร์ที่รู้จักกันดี การอธิบายลักษณะที่เป็นธรรมของตัวอย่างเฉพาะที่ฉันพบ
gasche

คำตอบ:


30

ความแตกต่างที่ฉันสร้างขึ้นระหว่างซีแมนทิกส์เชิงปฏิบัติการและเชิงอรรถศาสตร์คืออะไร:

  • ซีแมนทิกส์ denotational คือคณิตศาสตร์และ equational รายละเอียดของการลดความสำคัญน้อยกว่าผลลัพธ์ที่ได้ซึ่งเป็นค่าที่ไร้กาลเวลาในพื้นที่ทางคณิตศาสตร์บางอย่าง
  • ความหมายการดำเนินงานเป็นอัลกอริทึม มันแผ่ออกไปในแต่ละขั้นตอนในเวลา กระบวนการเป็นส่วนหนึ่งของความหมายและผลลัพธ์สุดท้ายเป็นเพียงขั้นตอนที่แตกต่างในกระบวนการนั้น

บางครั้งความแตกต่างนั้นค่อนข้างบอบบางและมันก็ยากที่จะบอกได้ว่ามันเป็นความแตกต่างในรูปแบบหรือเนื้อหา

อย่างไรก็ตามเราสามารถเห็นได้ว่านิยามความหมายขององค์ประกอบของ Andrej นั้นเป็นไปตามธรรมชาติอย่างไรจากนิยามเชิงนิยามและเราสามารถจินตนาการความหมายที่ไม่ไหลมาบรรจบกันและไม่มีองค์ประกอบที่ยังคงเป็นไปตามข้อกำหนดในการปฏิบัติงาน


ตัวอย่างที่ดีของความแตกต่างของอัลกอริทึมกับคณิตศาสตร์คือการรักษาโดยไม่กำหนด การ denotation ของ loop นั้นอยู่ด้านล่าง แต่เนื่องจากปัญหาการหยุดทำงานจึงไม่สามารถตัดสินใจได้ว่าการ denotation ของโปรแกรม arbitrary จะอยู่ด้านล่างหรือไม่ ในซีแมนทิกส์ขั้นตอนเล็ก ๆ คุณสามารถสังเกตขั้นตอนการลดขนาดได้ แต่ทฤษฎีนั้นไม่มีค่า "ต่ำสุด" undecidability และ nontermination ย้ายไป metatheory: สิ่งที่ undecidable คือว่าลำดับการลดสิ้นสุดลง ในทำนองเดียวกันในความหมายขั้นตอนใหญ่มันไม่สามารถตัดสินใจได้ว่ามีรากศัพท์หรือไม่
Blaisorblade

23

ถ้าฉันต้องเดาว่า Dana Scott จะพูดอะไรเขาอาจพูดว่าความหมายเชิง Denotational เป็นแบบเรียงความ (เช่นที่ฉันอ้าง) และความหมายของโปรแกรมจะต้องเป็นวัตถุทางคณิตศาสตร์ที่แท้จริงไม่ใช่เอนทิตี้เชิงไวยากรณ์หรือแบบทางการ แน่นอนว่ามุมมองดังกล่าวจำเป็นต้องมีมุมมองหนึ่งเพื่อแยกความแตกต่างระหว่างการใช้ไวยากรณ์อย่างเป็นทางการกับคณิตศาสตร์ "ของจริง" นี่คือความแตกต่างที่ไม่ใช่ทางคณิตศาสตร์

ตามมาทีหลังคนหนึ่งคงจะต้องการความหมายที่เพียงพอในแง่ที่ว่าสองโปรแกรมที่แตกต่างกันในเชิงสังเกตการณ์ไม่ได้รับความหมายเดียวกัน แน่นอนความเพียงพอของประเภทนี้ขึ้นอยู่กับสิ่งที่ยอมรับว่าเป็น "การสังเกต"

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


3
บางครั้งฉันได้รับแจ้งว่าระบบการเปลี่ยนภาพไม่ได้เป็นแบบคณิตศาสตร์เป็นโดเมนหรือขัดแตะหรือคำสั่งซื้อ ฉันพบว่ามุมมองนี้ทำให้งุนงง ทั้งหมดสามารถแสดงในทฤษฎีเซตของ ZFC
Martin Berger

1
พิจารณาว่าความแม่นยำที่กำหนดสามารถจำลองปรากฏการณ์การคำนวณเป็นวิธีการที่น่าสนใจมากขึ้นและแน่นอนขึ้นอยู่กับความคิดที่เลือกของการสังเกต หนึ่งในข้อได้เปรียบที่สำคัญของซีแมนทิกส์การปฏิบัติการ (เช่นทฤษฎีกระบวนการ) คือความแม่นยำที่แนวคิดทางธรรมชาติของการสังเกตนั้นสามารถอธิบายได้ง่ายกว่าเมื่อเปรียบเทียบกับความหมายเชิงทฤษฎี
Martin Berger

3
@ Marc: ฉันเห็นด้วยกับคุณว่าวิธีการปฏิบัติงานไม่ได้เป็นแบบจำลองการคำนวณเป็นฟังก์ชั่น แต่ฉันไม่เห็นสาเหตุที่ทำให้วิธีการทางทฤษฎีการสั่งซื้อ "ทางคณิตศาสตร์มากขึ้น" คณิตศาสตร์ที่ได้รับอิทธิพลจากฟิสิกส์เช่นสมการเชิงอนุพันธ์เป็นแบบจำลองการประเมินผลของระบบบางช่วงเวลา วิธีการอินพุต - เอาท์พุตนั้นใช้โครงสร้างพื้นฐานเป็นพื้นฐานกล่าวคือเอาต์พุตไม่สามารถใช้ได้ก่อนอินพุต
Martin Berger

2
@ มาร์ติน: นักคณิตศาสตร์มักจะบ่นว่าสิ่งที่นักฟิสิกส์ทำไม่ใช่คณิตศาสตร์จริงเช่นกัน ;-) ฟิสิกส์เป็นเพียงวิทยาศาสตร์ที่ได้รับการยอมรับมากขึ้นในเวลานี้ TCS ยังคงเป็นเด็กใหม่ในบล็อก ฉันคิดว่า TCS ไม่ควรกังวลเกี่ยวกับการทำให้ผู้คนมีระเบียบวินัยที่แตกต่างกัน (ไม่ว่าเราจะชอบมันมากแค่ไหนก็ตาม) มีความสุข เรามีโมโจของเราในระหว่างการเดินทาง (เช่นเดียวกับนักฟิสิกส์)
Marc Hamann

2
@Marc: ขยะตามอำเภอใจสามารถแสดงใน ZFC ได้ดังนั้นจึงไม่เป็นที่น่าเชื่อถือมากนัก ความหมายที่ "ฟังก์ชั่น" ในภาษาการเขียนโปรแกรมถูกตีความว่าเป็นฟังก์ชั่นในแง่คณิตศาสตร์มีอย่างน้อยสองข้อได้เปรียบ ประการแรกมันเข้ากันได้ดีกับความคิดเห็นของผู้คนในฟังก์ชั่นในภาษาการเขียนโปรแกรม ประการที่สองฟังก์ชั่นเป็นวัตถุทางคณิตศาสตร์ที่คุ้นเคยดังนั้นจึงมีเครื่องจักรจำนวนมากที่สามารถใช้ได้ แน่นอนว่าระบบการเปลี่ยนภาพก็มีประโยชน์เช่นกัน
Andrej Bauer

19

ฉันยอมรับว่า A. Bauer มีการระบุความหมายเชิงลบด้วยการเขียนเรียงความ (ในหนังสือเกี่ยวกับความหมายภาษาการเขียนโปรแกรม ) ไม่ได้แสดงลักษณะที่แท้จริงของสิ่งที่มีความหมายแบบดั้งเดิมโดยความหมายเชิง denotational เนื่องจากความหมายเชิงปฏิบัติการอย่างชัดเจน .

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

  1. มันเคยยากที่จะให้เหตุผลเกี่ยวกับความหมายของการดำเนินงาน

  2. มันเคยยากที่จะให้ความหมายเชิง axiomantic กับภาษาที่ไม่สำคัญ

π

โดยสรุปแล้วฉันขอยืนยันว่าคำว่า "ความหมายเชิง Denotational" นั้นแม่นยำน้อยกว่าและมีประโยชน์น้อยกว่า มันอาจจะเป็นประโยชน์สำหรับชุมชนความหมายที่จะบรรจบกับคำศัพท์ที่ดีกว่า


1
ในการสรุปโพสต์ล่าสุดของฉัน "ความหมายเชิง Denotational" ต้องกล่าวว่า "ความหมายของสัญลักษณ์นี้คือ" ซีแมนทิกส์ "ใช้งานได้" และซีแมนติกส์ที่ "เป็นจริง" ไม่ได้เป็นคำจำกัดความความหมายของประเภทนี้ มันทำให้เข้าใจผิดเพื่อให้ปรากฏ โปรดทราบว่าสิ่งที่เรียกว่า "วิธีการดำเนินงาน" เป็นวิธีการให้เหตุผลเกี่ยวกับโปรแกรม มันไม่ได้เป็นความหมายในการดำเนินงาน วิธีการดำเนินงานและวิธีการซึ่งเป็นจริงสามารถทดแทนการใช้งานทางวิศวกรรมของความหมายเชิง denotational แต่พวกเขาจะไม่กลายเป็นความหมายเชิงลบ
Uday Reddy

LπL

1
@ Martin ทำไมการกำหนดโปรเซสในแบบเรียงความไม่ใช่เชิงลบ อาจเป็นไปได้หากคุณโน้มน้าวใจพวกเราทุกคนว่ากระบวนการเป็นทฤษฎีพื้นฐานเช่นเดียวกับทฤษฎีเซตและเราไม่ควรถามความหมายของมัน ฉันเห็นด้วยกับมุมมองที่ว่าอาจมีภาษาพื้นฐานที่เป็นแบบจำลองการคำนวณแบบรัฐ บางทีแคลคูลัสของบางรูปแบบอาจได้รับการยอมรับเช่นรากฐานในบางวัน แต่ฉันไม่คิดว่าเราจะอยู่ที่นั่น
Uday Reddy

1
@ มาร์ตินเบอเกอร์นั่นเป็นคนเดียวที่ฉันเรียนรู้ แต่ฉันมีเวลายากในการให้การอ้างอิงที่ดีในทันที ตัวอย่างเช่น "ในที่สุด Tagless, ประเมินบางส่วน" ( citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.99.99287 ) ใช้คำว่า "fold", "compositional" และ "primitive recursive" ในคำนำที่ชัดเจน (แต่นี่ไม่ได้กล่าวถึงมากในกระดาษมันได้รับอนุญาต) viceversa ก็จะปรากฏว่าเป็นจุดของการอภิปรายในปรัชญาถ้าวิกิพีเดียที่จะเชื่อถือได้ที่นี่: en.wikipedia.org/wiki/Principle_of_compositionality#Critiques
Blaisorblade

1
@Blaisorblade เมื่อฉันเป็นนักศึกษาปริญญาเอกฉันได้เข้าสังคมกับนักอรรถศาสตร์เชิง denotational เพราะฉันควรจะทำงานเกี่ยวกับความหมายเชิง denotational ฉันมักจะถามพวกเขาเสมอว่าความหมายเชิง Denotational คืออะไรหากพวกเขาสามารถให้คำจำกัดความที่เป็นนามธรรมแก่ฉันได้ แต่ฉันก็ได้รับคำตอบที่ชัดเจนหรือคลุมเครือเช่น "ความหมายเชิง Denotational คือความหมายเชิงคณิตศาสตร์" ดูคำอธิบายของ A. Bauer ฉันไม่คิดว่าแนวคิดมีความชัดเจน ฉันยังไม่เห็นด้วยว่าเหตุใดการกำหนดให้มีการเรียกซ้ำแบบดั้งเดิมอย่าง จำกัด เช่นกันเพราะพลังของการเรียกซ้ำแบบดั้งเดิมนั้นขึ้นอยู่กับสิ่งที่มีอยู่: (ต่อ)
มาร์ตินเบอร์เกอร์

16

ฉันมีความสุขกับคำตอบของ Adrej แต่ฉันต้องการเจาะลึกลงไปอีก

เริ่มต้นด้วยความหมายเชิง Denotationalต้องการพูดอะไรบางอย่างเช่น "ความหมายของสัญลักษณ์นี้คือ" นัก semanticist ตัวจริงต้องการจินตนาการว่าความหมายคือสิ่งที่มีอยู่ในใจของเราและสัญลักษณ์เป็นเพียงวิธีในการแสดงความหมายเหล่านั้น ความต้องการที่ความหมายเชิง Denotational ควรจะเป็นแบบองค์ประกอบต่อจากนี้ หากความหมายเป็นหลักและสัญลักษณ์รองเราก็ไม่มีทางเลือกนอกจากต้องนิยามความหมายของสัญลักษณ์ที่ใหญ่กว่าว่าเป็นฟังก์ชันของความหมายขององค์ประกอบนั้น ๆ

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

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

อย่างไรก็ตามคำจำกัดความเชิงความหมายประกอบได้สูญเสียขอบของพวกเขามากกว่าปีที่ผ่านมา Robin Milner และ Andy Pitts ได้พัฒนาเทคนิค "การใช้เหตุผลเชิงเหตุผล " จำนวนหนึ่งซึ่งทำงานกับไวยากรณ์อย่างหมดจด แต่ใช้ความหมายเชิงปฏิบัติการในทุกที่ที่จำเป็นสำหรับการพูดคุยเกี่ยวกับพฤติกรรม เทคนิคการให้เหตุผลเชิงปฏิบัติการเหล่านี้เป็นเทคโนโลยีขั้นต่ำ ไม่มีคณิตศาสตร์แฟนซี ไม่มีวัตถุไม่มีที่สิ้นสุด เราสามารถสอนพวกเขาให้กับนักศึกษาระดับปริญญาตรีและทุกคนสามารถใช้พวกเขาได้ ดังนั้นหลายคนถามคำถามว่าทำไมเราถึงต้องการความหมายเชิง Denotational (Martin Berger น่าจะอยู่ในค่ายนี้)

โดยส่วนตัวฉันไม่มีปัญหากับการมีเครื่องมือมากมายในกล่องเครื่องมือของฉัน เทคนิค Denotational อาจให้คะแนนดีกว่าสำหรับปัญหาบางอย่างและเทคนิคการดำเนินงานสำหรับผู้อื่น นักวิจัยที่พัฒนาทฤษฏีนั้นอาจปรับวิธีการให้ดีขึ้นกว่าวิธีใดวิธีหนึ่ง บ่อยครั้งที่เราสามารถพัฒนาข้อมูลเชิงลึกในแนวทางหนึ่งและโอนข้อมูลเชิงลึกเหล่านั้นไปยังแนวทางอื่น (งานของ Andy Pitts จำนวนมากเป็นแบบนี้ Parametricity เชิงสัมพันธ์ได้รับการพัฒนาในการตั้งค่า denotational แต่เขาสามารถที่จะหาวิธีการย้ำว่ามันเป็นเหตุผลการปฏิบัติงานเมื่อฉันดูมันฉันพูดว่า "ว้าวฉันจะไม่เคย คิดว่าน่าจะเป็นไปได้” การแยกลอจิกก็เป็นไปในลักษณะนี้สตีฟบรูกส์ให้การพิสูจน์ความแข็งแรง 60 หน้าสำหรับการแยกลอจิคัลพร้อมกันโดยใช้ซีแมนทิกส์แบบ denotational

แนวทางการดำเนินงานยังทำคะแนนได้อย่างยอดเยี่ยมเมื่อภาษาการเขียนโปรแกรมมีความเป็นแฟนซีมากโดยมีลำดับที่สูงกว่าทุกประเภท เราอาจไม่รู้ว่าจะจำลองสิ่งต่าง ๆ ทางคณิตศาสตร์อย่างไร หรือแบบจำลองทางคณิตศาสตร์มาตรฐานอาจกลายเป็นไม่สอดคล้องกันภายใต้ความเครียดของความวนซ้ำ (ตัวอย่างเช่นดู "Polymorphism ไม่ใช่ set-theoretic" โดย Reynolds.) วิธีการดำเนินงานที่ทำงานอย่างหมดจดในไวยากรณ์นั้นสามารถแก้ไขปัญหาทางคณิตศาสตร์เหล่านี้ได้อย่างเรียบร้อย

วิธีการที่เป็นสื่อกลางระหว่างแนวทางการดำเนินงานและ denotational ก็คือเข้าใจได้ แทนที่จะทำงานร่วมกับคำศัพท์เชิงประโยคในแนวทางการดำเนินงานเรากลับไปใช้วิธีการปฏิเสธโดยใช้ตัวแทนทางคณิตศาสตร์รูปแบบอื่น ตัวแทนเหล่านี้อาจไม่ถือว่าเป็น "ความหมาย" denotational จริง ๆ แต่อย่างน้อยพวกเขาก็จะเป็นนามธรรมมากกว่าคำศัพท์ ตัวอย่างเช่นสำหรับแคลคูลัส polymorphic lambda เราสามารถให้ความหมายกับคำที่ไม่พิมพ์ (ในรูปแบบของแคลคูลัสแลมบ์ดาที่ไม่มีการพิมพ์) และจากนั้นใช้พวกเขาเป็นตัวแทน ('realizers') เพื่อทำรูปแบบบางอย่างของ ระดับนามธรรมมากขึ้น

ดังนั้นให้มีการแข่งขันที่ดีระหว่างแนวทางการปฏิบัติงานและแนวทางปฏิบัติ ไม่มีอันตรายใด ๆ

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


วิธีการที่สร้างสรรค์ในการแก้ปัญหานี้คือการค้นหาคำแปลระหว่างแนวทางที่ต่างกัน
Martin Berger

1
โปรดทราบว่าฉันไม่มีปัญหากับซีแมนทิกส์ denotational ดั้งเดิมเป็นเครื่องมือในกล่องเครื่องมือ ฉันเพิ่งพบข้อเสนอแนะโดยนัยหรือชัดเจนว่าพวกเขาจะดีกว่าที่จะเป็นปัญหาและขาดเหตุผลที่สอดคล้องกัน
Martin Berger

ฉันจะวางเล่ม "Algollike Languages" ( eecs.qmul.ac.uk/~ohearn/Algol/algol.html ) เล่มที่แก้ไขโดย Peter O'Hearn และ Bob Tennent เป็นแบบอย่างของการปฏิบัติที่ดี พวกเขารวมถึงเอกสารเกี่ยวกับ "ความหมาย denotational ความหมาย" (Strachey, Reynolds, Tennent, Meyer et al), เช่นเดียวกับ "unconventional" ความหมาย denotational (เหมือง Abramsky & McCusker, Brookes) และแนวทางปฏิบัติ (Andy Pitts, Felleisen) อนึ่งบทความของ Reynolds สองเล่มในหนังสือเล่มนี้ (Specification Logic และ Syntactic Control of Interference) เป็น "สัจพจน์" เมื่อพวกเขาเขียน!
Uday Reddy

1
เกี่ยวกับการแข่งขันที่มีสุขภาพปัญหาที่สำคัญประการหนึ่งคือมีวิธีการมากมายนักพิธีการนักวิจัยและเอกสารต่าง ๆ มากมายซึ่งเป็นการยากที่จะติดตามการพัฒนา มันอาจจะคุ้มค่าในขณะที่ในฐานะชุมชนการวิจัยเพื่อใช้ความพยายามอย่างต่อเนื่องในการสังเคราะห์และรวมวิธีการที่มีอยู่
Martin Berger

2
@MartinBerger จุดเริ่มต้นที่ฉันทราบคือกระดาษของ Patrick Cousot "การออกแบบเชิงสร้างสรรค์ของลำดับชั้นของความหมาย" ซึ่งแสดงให้เห็นว่ารูปแบบความหมายที่หลากหลายมากรวมถึงระบบการเปลี่ยนความหมายเชิงสัจนิยมแบบจำลอง denotational อาจเกี่ยวข้องกับการใช้ส่วนเสริม จึงมองว่าเป็นสิ่งที่แตกต่าง
วีเจย์ D

12

[อีกหนึ่งคำตอบ อาจเป็นไปไม่ได้ที่จะรวบรวมคำตอบหลายคำ แต่เดี๋ยวก่อนนี่เป็นปัญหาลึก]

ฉันบอกว่าฉันเห็นด้วยกับคำตอบของ Andrej แต่ดูเหมือนว่าฉันจะไม่เห็นด้วยทั้งหมด มีความแตกต่าง

ฉันบอกว่าความหมายเชิง Denotational ต้องพูดว่า "ความหมายของสัญกรณ์นี้คือ" สิ่งที่ฉันหมายถึงก็คือสัญกรณ์ต้องได้รับการกำหนดความหมายซึ่งเป็นรูปแบบของแนวคิดเชิงแนวคิดไม่ใช่รูปแบบอื่น ๆ ในทางตรงกันข้าม Andrej ยังจำเป็นต้องถอดความ Scott ซึ่งความหมายต้องเป็นวัตถุ "คณิตศาสตร์" ฉันไม่เชื่อว่าจำเป็นต้องใช้บิตคณิตศาสตร์

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

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

ในคำพูดของเขาที่ได้รับการยอมรับสำหรับรางวัล SIGPLAN (ซึ่งควรจะอยู่ใน youtube ในไม่ช้า) Hoare กล่าวว่า ACP ใช้ "วิธีพีชคณิต", CSP ใช้ "วิธีการเชิง Denotational" และ CCS ใช้ "วิธีการปฏิบัติการ" เพื่ออธิบายกระบวนการ Ohad และฉันนั่งอยู่ด้วยกันในเซสชั่นเราดูกันและพูดว่า "มันน่าสนใจจริงๆ" ดังนั้นจึงมีพื้นที่ความคิดมากมายที่นี่ที่ถูกสำรวจ ฉันคิดว่าสกอตต์จำนวนมากที่ทำงานในระบบเพื่อนบ้านและระบบข้อมูล ฯลฯ เป็นความพยายามที่จะอธิบายฟังก์ชั่นเป็น "กระบวนการ" ในบางรูปแบบ เรขาคณิตของการโต้ตอบของ Girard และความหมายของเกมต่อมาคือความพยายามที่จะอธิบายการทำงานเป็นกระบวนการ ฉันจะบอกว่าการพัฒนาทฤษฎีที่มั่นคงของกระบวนการอาจเป็นประโยชน์อย่างใหญ่หลวงที่วิทยาการคอมพิวเตอร์สามารถทำให้กับคณิตศาสตร์ในศตวรรษที่ 21 ฉันจะไม่ยอมรับความเชื่อที่ว่าคณิตศาสตร์มีคำตอบทั้งหมดและเราควรพยายามลดปรากฏการณ์การคำนวณเป็นแนวคิดทางคณิตศาสตร์เพื่อที่จะเข้าใจพวกเขา

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


10

[หวังว่านี่คือคำตอบสุดท้ายของฉันสำหรับคำถามนี้!]

คำถามดั้งเดิมของ Ohad นั้นเกี่ยวกับความหมายเชิง Denotational แตกต่างจากความหมายเชิงโครงสร้าง เขาคิดว่าทั้งคู่เป็นองค์ประกอบ จริงๆแล้วมันไม่จริง ความหมายในการดำเนินงานโครงสร้างจะได้รับเป็นลำดับขั้นตอน แต่ละขั้นตอนจะแสดงองค์ประกอบ (และเป็นที่น่าทึ่งของ Plotkin ที่จะค้นพบว่าสิ่งนี้เป็นไปได้!) แต่พฤติกรรมทั้งหมดไม่ได้กำหนดไว้อย่างเป็นองค์ประกอบ นี่คือสิ่งที่ Plotkin พูดในการแนะนำบทความ SOS [เน้นการเพิ่ม]:

ในซีแมนติกส์ denotational หนึ่งตามอุดมคติของการเรียงความที่ความหมายของวลีที่ผสมกันจะได้รับเป็นฟังก์ชั่นของความหมายของชิ้นส่วนของมัน ในกรณีของความหมายในการปฏิบัติงานเราจะพิจารณาพฤติกรรมของวลีของโปรแกรมซึ่งเป็นเพียงการรวบรวมช่วงการเปลี่ยนภาพที่สามารถทำได้ อย่างไรก็ตามพฤติกรรมนี้ไม่ใช่องค์ประกอบเมื่อคิดว่าเป็นหน้าที่ของโปรแกรมวลี อย่างไรก็ตามกฎจะให้โครงสร้างเช่นดั้งเดิมใน recursively ซินแท็คซ์; ...

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

มีบทความดีๆจาก Carl Gunter ที่เรียกว่าForms of Semantic Specificationซึ่งวิธีการต่าง ๆ ในการระบุ semantics จะถูกเปรียบเทียบและเปรียบเทียบ เนื้อหาส่วนใหญ่นี้มีการทำซ้ำในบทแรกของข้อความ "ความหมายของภาษาโปรแกรม" หวังว่ามันจะทำให้ภาพชัดเจนขึ้น

อีกคำหนึ่งเกี่ยวกับ "ซีแมนทิกส์ปฏิบัติการ" ในวันแรก ๆ คำว่า "ปฏิบัติการ" ถูกใช้เพื่ออ้างถึงคำจำกัดความทางความหมายใด ๆ ที่อ้างถึงขั้นตอนการประเมินโดยละเอียด ทั้งนักอรรถศาสตร์เชิง denotational และผู้เสนอความจริงซึ่งมองลงไปที่ความหมายของ "ปฏิบัติการ" เกี่ยวกับว่ามันเป็นระดับต่ำและเชิงเครื่อง ฉันคิดว่ามันเป็นไปตามความเชื่อของพวกเขาว่าคำอธิบายระดับที่สูงขึ้นเป็นไปได้ ความเชื่อเหล่านี้แตกสลายทันทีที่พวกเขาพิจารณาพร้อมกัน de Bakker และ Zucker's Processes และอรรถศาสตร์ denotational ของการเกิดพร้อมกันมีข้อความที่น่าสนใจเหล่านี้:

เราจะใช้วิธีการของความหมายเชิงdenotational "Denotational" ควรตัดกันที่นี่กับ "การดำเนินงาน": แนวคิดหลักของวิธีการเดิมคือการแสดงออกในการเขียนโปรแกรมการเขียนโปรแกรมแสดงถึงค่าในโดเมนคณิตศาสตร์พร้อมกับโครงสร้างที่เหมาะสมในขณะที่ในภายหลังการดำเนินการตามที่กำหนดโดยภาษาสร้าง ทำแบบจำลองโดยขั้นตอนดำเนินการโดยเครื่องนามธรรมที่เหมาะสมบางอย่าง ...

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

ที่นี่เราเห็นผู้เขียนที่ดิ้นรนกับสองแนวคิดของ "การปฏิบัติ" หนึ่งในความคิดทางเทคนิค - พฤติกรรมที่แสดงออกโดยใช้การจัดการทางวากยสัมพันธ์และอื่น ๆ ความคิดเชิงแนวคิด - อยู่ในระดับต่ำและมีรายละเอียด เครดิตส่วนใหญ่ไปที่ Plotkin และ Milner สำหรับการฟื้นฟูความหมาย "ปฏิบัติงาน" ซึ่งทำให้อยู่ในระดับสูงที่สุดเท่าที่จะเป็นไปได้และแสดงให้เห็นว่ามันอาจจะสง่างามและลึกซึ้ง

แม้จะมีทั้งหมดนี้แนวคิดการดำเนินงานของกระบวนการยังคงค่อนข้างแตกต่างจากความคิดเชิงลบของกระบวนการซึ่งภายหลังได้รับการพัฒนาโดย de Bakker และ Hoare และทีมของพวกเขา และฉันคิดว่ามีจำนวนมากที่ลึกลับและสวยงามเกี่ยวกับแนวคิดกระบวนการ denotational ซึ่งยังคงเป็นที่เข้าใจ


ขออภัยที่ไม่ตอบกลับคำขอแชท ฉันยุ่งมากในอีกสองสัปดาห์ข้างหน้า ขอขอบคุณที่เขียนสิ่งนี้! นี่เป็นคำตอบทางเทคนิคครั้งแรกในหน้าที่ฉันเข้าใจ
วีเจย์ D

ฉันอาจใช้โอกาสนี้ในการเตรียมการสำหรับบัณฑิตวิทยาลัย Midlandsของเราในสาขาวิทยาการคอมพิวเตอร์เชิงทฤษฎีซึ่งมีจุดประสงค์เพื่อแก้ไขปัญหาเหล่านี้ทั้งหมด เปิดให้นักศึกษาปริญญาเอกทุกคนเข้าร่วมจากที่ใดก็ได้ในโลก
Uday Reddy

9

การตอบสนองเพิ่มเติมนี้คือการขยายจุดที่แบบจำลองความหมายเชิงลบได้รับการออกแบบมาเพื่อ "อธิบาย" ปรากฏการณ์การคำนวณ ฉันจะยกตัวอย่างจากซีแมนทิกส์ของภาษาการเขียนโปรแกรมที่จำเป็น (หรือที่เรียกว่าภาษา "เหมือน Algol")

ครั้งแรกที่มีรูปแบบความหมายคือสูตรโดย Scott และ Strachey (เทียบกับกอร์ดอน: คำอธิบายเชิงลบของภาษาการเขียนโปรแกรม - หนังสือที่ชื่นชอบตลอดเวลาหรือหนังสือของ Winskel) รุ่นนี้วางตัวว่ามีสถานะระดับโลกประกอบด้วยสถานะของสถานที่ทั้งหมดที่จัดสรรโดยโปรแกรม ทุกคำสั่งถูกตีความว่าเป็นฟังก์ชั่นบางอย่างจากสถานะโกลบอลไปจนถึงสถานะโกลบอล

Reynolds กล่าวว่ามันไม่ได้จำลองวินัยสแต็กของตัวแปรท้องถิ่น เมื่อขอบเขตภายในถูกป้อนตัวแปรของมันจะถูกจัดสรรและจะถูกจัดสรรคืนเมื่อออกจากขอบเขต โดยพื้นฐานแล้วนี่คือคำถามที่ว่า "ตัวแปรท้องถิ่นมีความหมายในระดับใด" ความหมายจับภาพสถานที่ไม่ได้อย่างไร เพื่ออธิบายสิ่งนี้เขาคิดค้นแบบจำลองหมวดหมู่นักแสดง (เพื่อน Reynolds: แก่นแท้ของ Algol และ Tennent: ความหมายของภาษาโปรแกรม)

Tennent ต้องการสร้างแบบจำลองหลักการการให้เหตุผลที่กำหนดในข้อกำหนดตรรกะของ Reynolds (ส่วนขยายของ Hoare Logic สำหรับขั้นตอนการสั่งซื้อที่สูงขึ้น) ลอจิกมีความคิดเหมือนการคำนวณแบบอ่านอย่างเดียว (อ่านอย่างเดียว) การไม่แทรกแซงระหว่างการคำนวณแบบคล้ายคำสั่งและการแสดงออกแบบนิพจน์และหลักการบางอย่างของการให้เหตุผลเชิงนามธรรม เขากลั่นกรองรูปแบบหมวดหมู่นักแสดงของเรย์โนลด์สเพื่อหารูปแบบใหม่ สิ่งนี้เรียกว่าแบบจำลอง "SASL" ซึ่งรวมอยู่ในหนังสือของ Tennent

เมเยอร์และ Sieber และยังเฮิร์นและ Tennent ตั้งข้อสังเกตไม่มีรูปแบบเหล่านี้ที่ยังคงจับท้องที่ของตัวแปรท้องถิ่นอย่างเต็มที่ เมื่อการนำไปใช้งานสองแบบของชนิดข้อมูลนามธรรมหรือคลาสแตกต่างกันในตัวแปรโลคัล แต่ปรับใช้ในลักษณะที่มีพฤติกรรมเหมือนกันเมื่อดูจากภายนอกพวกมันจะเทียบเท่ากันอย่างสังเกต ความหมายเชิง Denotational ควรเทียบเคียงพวกเขา ในการสร้างแบบจำลองนี้ O'Hearn และ Tennent ได้เพิ่มพารามิเตอร์เชิงสัมพันธ์ในตัวแปรของโมเดลหมวดหมู่นักแสดงตลกของ Reynolds

เมื่อฉันมองปัญหาในเวลาเดียวกันฉันก็ไม่เชื่อในแนวทางของหมวดนักแสดง ฉันยังคิดว่ามันเป็นเรื่องทางเทคนิคมากเกินไปและเชื่อว่าจะต้องมีรูปแบบที่เรียบง่ายกว่า สิ่งนี้ทำให้ฉันคิดค้นโมเดล "Global State ถือว่าไม่จำเป็น" ซึ่งค่อนข้างเหมือนกับโมเดลการติดตาม CSP แต่สำหรับภาษาที่มีลำดับสูงกว่า ในฐานะที่เป็นโบนัสที่เพิ่มเข้ามาโมเดลนี้ยังสามารถย้อนกลับการเปลี่ยนแปลงสถานะซึ่งไม่ได้มีอยู่ในรุ่นก่อนหน้านี้

รูปแบบการทำงานของฉันเพียง sublanguage มีความประพฤติดีของ Algol เรียกว่าควบคุมวากยสัมพันธ์ของการแทรกแซง Abramsky และ McCusker ขยายแบบจำลองของฉันโดยใช้ความหมายของเกมเพื่อให้สามารถใช้งานได้อย่างสมบูรณ์กับ Algol ดังนั้นแบบจำลองของพวกเขาอธิบายปรากฏการณ์เดียวกับของฉัน แต่สำหรับภาษาที่ใหญ่กว่า

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

[งานทั้งหมดที่ฉันพูดถึงที่นี่สามารถพบได้ในไดรฟ์ "ภาษาเหมือน Algol": ลิงค์และลิงค์ ]

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