ประเภทการเป็นเจ้าของและตรรกะการแยก


10

ประเภทความเป็นเจ้าของและลอจิกการแยกดูเหมือนว่าจะมีเป้าหมายคล้ายกันควบคุมความเป็นเจ้าของและนามแฝง บางทีฉันควรเพิ่ม: ความสามารถในการเขียนข้อมูลจำเพาะแบบแยกส่วน

อะไรคือความสัมพันธ์ระหว่างความเป็นเจ้าของและตรรกะการแยก


ฟังดูคุ้นหู
Dave Clarke

@DaveClarke: คำตอบของฉันเหมาะสมกับคุณหรือไม่ คุณได้ทำงานเป็นเจ้าของมากมายและฉันก็ทำเพียงเล็กน้อยก่อนที่จะเปลี่ยนเป็นการทำงานโดยใช้ตรรกะแยก
Neel Krishnaswami

@NeelKrishnaswami: คำตอบของคุณสมเหตุสมผลมาก ฉันวางแผนที่จะเติมเต็มช่องว่างเมื่อฉันสามารถหาเวลาได้ ไม่ว่าในกรณีใดฉันไม่ทราบว่ามีการเปรียบเทียบใด ๆ
Dave Clarke

คำตอบ:


7

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

  • Yang Zhao และ John Boyland การตีความการอนุญาตพื้นฐานสำหรับประเภทการเป็นเจ้าของ ในการประชุมวิชาการระดับนานาชาติ IEEE / IFIP ครั้งที่สองเกี่ยวกับแง่มุมทางทฤษฎีของวิศวกรรมซอฟต์แวร์, TASE 2008, 17-19 มิถุนายน 2008, หนานจิง, จีน สมาคมคอมพิวเตอร์ IEEE, 2008. , หน้า 65–72

  • Shuling Wang, Luís Soares Barbosa และJosé Nuno Oliveira แบบจำลองเชิงสัมพันธ์สำหรับลอจิกการแยกที่ จำกัด ในการประชุมวิชาการระดับนานาชาติ IEEE / IFIP ครั้งที่สองเกี่ยวกับแง่มุมทางทฤษฎีของวิศวกรรมซอฟต์แวร์ TASE 2008 วันที่ 17-19 มิถุนายน 2551 หนานจิงประเทศจีน สมาคมคอมพิวเตอร์ IEEE, 2008. , หน้า 263–270

  • Shuling Wang และ Zongyan Qiu แบบจำลองทั่วไปสำหรับการคุมขังและการใช้งาน ในการประชุมวิชาการระดับนานาชาติ IEEE / IFIP ครั้งที่สองเกี่ยวกับแง่มุมทางทฤษฎีของวิศวกรรมซอฟต์แวร์ TASE 2008 วันที่ 17-19 มิถุนายน 2551 หนานจิงประเทศจีน สมาคมคอมพิวเตอร์ IEEE, 2008. , หน้า 57–64

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

กระดาษแผ่นที่สองใช้แนวคิดการคุมขังคล้ายกับที่ใช้ในประเภทการเป็นเจ้าของและเพิ่มลงในตรรกะการแยก

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

  • สู่แบบจำลองของ encapsulation James Noble, Robert Biddle, Ewan Tempero, Alex Potanin, Dave Clarke การประชุมเชิงปฏิบัติการระดับนานาชาติครั้งแรกเกี่ยวกับนามแฝงการกักขังและกรรมสิทธิ์ในการเขียนโปรแกรมเชิงวัตถุ (IWACO), 2003

9

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

ododโอdโอd

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

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

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

ตามที่ฉันเข้าใจวิธีการพื้นฐานของพวกเขาคือการใช้ตรรกะของ Hoare และจากนั้น:

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

แต่ละวิธีมีประโยชน์และจุดอ่อน

  • ความเป็นเจ้าของทำให้คุณสมบัติของเฟรมมีความสะดวกในการใช้งานน้อยกว่าอย่างมากในแนวทางโครงสร้างย่อยเนื่องจากคุณต้องคำนวณเงื่อนไขของเฟรม

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

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

แก้ไข: ฉันเพิ่งพบกระดาษต่อไปนี้โดย Matt Parkinson และ Alex Summers, ความสัมพันธ์ระหว่างการแยกตรรกะและ Implicit Dynamic Framesซึ่งพวกเขาอ้างว่าให้ตรรกะการรวมสองวิธี


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