ไม่มีข้อตกลงที่แท้จริงสิ่งที่ลักษณะความหมาย denotational (ดูยังเป็นนี้บทความ) ยกเว้นว่ามันจะต้องเป็นcompositional นั่นหมายความว่าถ้าเป็นฟังก์ชั่นความหมาย, การแมปโปรแกรมกับความหมายของพวกเขา, สิ่งต่อไปนี้จะต้องเป็นกรณีสำหรับตัวสร้างโปรแกรม n -ary ทั้งหมด fและโปรแกรมทั้งหมด M 1 , ... , M n (โดยนัยสมมติว่าเป็นประเภท):[[⋅]]nfM1Mn
[[f(M1,...,Mn)]]=trans(f)([[M1]],...,[[Mn]])
นี่เป็นตัวสร้างที่สอดคล้องกับFในโดเมนความหมาย การประพันธ์มีความคล้ายคลึงกับแนวคิดของโฮโมมอร์ฟิซึมในพีชคณิตtrans(f)f
ความหมายในการดำเนินงานไม่ได้เป็นองค์ประกอบในแง่นี้ ในอดีตความหมายเชิง Denotational ได้รับการพัฒนาขึ้นมาส่วนหนึ่งเป็นเพราะความหมายในการปฏิบัติงานไม่ได้เป็นองค์ประกอบ หลังจาก D. Scott พัฒนาความหมายเชิงทฤษฎี denotational denotational ของ -culculus, semantics อรรถศาสตร์ denotational ส่วนใหญ่เคยเป็นแบบ order-theoretic ฉันจินตนาการว่า - นอกเหนือจากความสนใจทางปัญญาล้วน - ความหมายเชิงการแยกทางส่วนใหญ่ถูกประดิษฐ์ขึ้นเพราะในขณะนั้น (1960):λ
- มันเคยยากที่จะให้เหตุผลเกี่ยวกับความหมายของการดำเนินงาน
- มันเคยยากที่จะให้ความหมายซึ่งเป็นจริงกับภาษาที่ไม่สำคัญ
ส่วนหนึ่งของปัญหาคือความคิดเกี่ยวกับความเท่าเทียมกันของโปรแกรมไม่เข้าใจเท่าที่เป็นอยู่ในปัจจุบัน ฉันขอยืนยันว่าปัญหาทั้งสองได้รับการแก้ไขให้ดีขึ้นอย่างมาก (1) ตัวอย่างเช่นโดยการใช้เทคนิคการทำ bisimilation ซึ่งมาจากทฤษฎีกระบวนการ ความเท่าเทียมกันและ (2) โดยการพัฒนาของตรรกะแยกหรือ Hoare logics มาเป็นรุ่นพิมพ์ของ Hennessy-Milner logics ผ่านการเขียนโปรแกรมภาษาแต่งงานในพิมพ์ emb-calculi โปรดทราบว่าโปรแกรม logics (= axiomatic semantics) เป็นองค์ประกอบเช่นกัน
อีกวิธีหนึ่งในการมองความหมายเชิง Denotational คือมีภาษาการเขียนโปรแกรมจำนวนมากและพวกเขาทั้งหมดมีลักษณะคล้ายกันดังนั้นบางทีเราสามารถค้นหาเมตาดาต้าที่เรียบง่าย แต่เป็นสากลและแมปภาษาการเขียนโปรแกรมทั้งหมด ภาษา. ในปี 1960 ก็คิดว่าบางพิมพ์แคลคูลัสคือว่าเมตาภาษา รูปภาพอาจพูดมากกว่า 1,000 คำ:λ
ข้อดีของวิธีนี้คืออะไร? บางทีมันสมเหตุสมผลที่จะดูจากมุมมองทางเศรษฐกิจ หากเราต้องการพิสูจน์สิ่งที่น่าสนใจเกี่ยวกับคลาสของโปรแกรมวัตถุเรามีสองตัวเลือก
ค่าใช้จ่ายรวมของหลังอาจสูงกว่าต้นทุนของอดีตแต่ค่าใช้จ่ายของการพิสูจน์การแปลสามารถตัดจำหน่ายตลอดการใช้งานในอนาคตทั้งหมดในขณะที่ค่าใช้จ่ายในการพิสูจน์คุณสมบัติสำหรับระดับเมตาดาต้ามีขนาดเล็กกว่าหลักฐาน ในระดับวัตถุ
ลำดับ - ทฤษฎีวิธีการดั้งเดิมเพื่อ denotational semantics ยังไม่ถึงสัญญานี้เพราะลักษณะทางภาษาที่ซับซ้อนเช่นการวางแนววัตถุการทำงานพร้อมกันและการคำนวณแบบกระจายยังไม่ได้รับความหมายเชิงทฤษฎี - คำสั่งที่แม่นยำ โดย "แม่นยำ" ฉันหมายถึงความหมายที่ตรงกับความหมายตามธรรมชาติของภาษาดังกล่าว
มันคุ้มค่ากับการเรียนรู้เกี่ยวกับความหมายเชิง Denotational หรือไม่? หากคุณหมายถึงวิธีการสั่งซื้อเชิงทฤษฎีเพื่อความหมายเชิง denotational อาจไม่เว้นแต่ว่าคุณต้องการทำงานในทฤษฎีภาษาการเขียนโปรแกรมและจำเป็นต้องเข้าใจเอกสารที่เก่ากว่า เหตุผลอีกประการหนึ่งสำหรับการเรียนรู้แนวทางเชิงทฤษฎีเพื่อความหมายเชิง denotational คือความงามของวิธีการนี้