เราสามารถแยกความแตกต่างระหว่างไวยากรณ์และความหมายในภาษาโปรแกรมได้หรือไม่?


14

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

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

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

คำตอบ:


14

ไม่คุณไม่สามารถแยกความแตกต่างทางไวยากรณ์ได้อย่างชัดเจนจากวิธีการทางความหมาย แต่ความแตกต่างก็ยังคงสมเหตุสมผล

  • ซีแมนทิกส์การดำเนินงานโครงสร้างไม่ได้เป็นแบบ denotational เพราะมันไม่ใช่วิธีการผสมผสานของการให้ความหมายกับภาษาการเขียนโปรแกรม

  • อย่างไรก็ตามคุณสามารถสร้างแบบจำลอง denotational จากซีแมนทิกส์การดำเนินงานโครงสร้างโดยใช้วิธี realizability หรือความสัมพันธ์เชิงตรรกะ เป็นตัวอย่างที่เห็นโรเบิร์ตฮาร์เปอร์สร้างประเภทระบบมากกว่าความหมายในการดำเนินงาน

  • λ

  • ในอีกทางหนึ่งถ้าคุณมีซีแมนทิกส์แบบ denotational คุณอาจต้องการรู้ว่ามันคืออะไร จากนั้นคุณต้องการไปหาเครื่องซินแท็กซ์และ abstract ซึ่ง model model สามารถทำหน้าที่เป็นออบเจ็กต์ intitial ในหมวดหมู่ของ model ที่เหมาะสม

    ยกตัวอย่างเช่นความหมายของเกมเริ่มต้นชีวิตที่เป็นความหมายของการก่อสร้างอย่างหมดจดและในที่สุดก็นำไปสู่การทำงานในความหมายของเกมการดำเนินงาน --- ตัวอย่างล่าสุดของอเล็กซิสซึ่งเป็น Goyet ของแลมบ์ดาแลมบ์ดาบาร์แคลคูลัส: แคลคูลัสคู่สำหรับกลยุทธ์ข้อ

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

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

    สำหรับ logics อ่อนแอ (อะไรถึงตรรกะลำดับแรกโดยไม่ต้องเหนี่ยวนำประมาณ) คุณสามารถพิสูจน์ได้ว่าการฟื้นฟูไวยากรณ์, การใช้เทคนิคของการทดแทนทางพันธุกรรม ใน Logics เหล่านี้คุณสมบัติของฟอร์มย่อยจะเก็บไว้และเพื่อให้คุณสามารถพิสูจน์การทำให้เป็นมาตรฐานโดยการเหนี่ยวนำชนิด ดูโครงสร้างการกำจัดการตัดกระดาษของ Frank Pfenning สำหรับคำอธิบายเกี่ยวกับวิธีการทำงาน


ว้าวขอบคุณสำหรับคำตอบที่รวดเร็วและละเอียด!
Blaisorblade

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