Các loại quyền sở hữu và Logic tách biệt dường như có các mục tiêu tương tự, kiểm soát quyền sở hữu và bí danh. Có lẽ, tôi cũng nên thêm: khả năng viết các đặc tả mô-đun.
Những gì được biết về mối quan hệ giữa các loại sở hữu và Logic tách biệt?
Các loại quyền sở hữu và Logic tách biệt dường như có các mục tiêu tương tự, kiểm soát quyền sở hữu và bí danh. Có lẽ, tôi cũng nên thêm: khả năng viết các đặc tả mô-đun.
Những gì được biết về mối quan hệ giữa các loại sở hữu và Logic tách biệt?
Câu trả lời:
Gần đây tôi đã hoàn thành việc viết một cuộc khảo sát về các loại quyền sở hữu và tìm thấy rất ít thảo luận về mối quan hệ giữa hai chủ đề. Ba bài báo gần nhất tôi gặp là những điều sau đây, điều gây tò mò đến từ cùng một hội nghị:
Yang Zhao và John Boyland. Một giải thích quyền cơ bản cho các loại sở hữu. Trong Hội nghị chuyên đề quốc tế lần thứ hai của IEEE / IFIP về các khía cạnh lý thuyết của công nghệ phần mềm, TASE 2008, 17-19 tháng 6 năm 2008, Nam Kinh, Trung Quốc. Xã hội máy tính IEEE, 2008, trang 65 Hàng72.
Shending Wang, Luís Soares Barbosa và Jose Nuno Oliveira. Một mô hình quan hệ cho logic tách giới hạn. Trong Hội nghị chuyên đề quốc tế lần thứ hai của IEEE / IFIP về các khía cạnh lý thuyết của công nghệ phần mềm, TASE 2008, 17-19 tháng 6 năm 2008, Nam Kinh, Trung Quốc. Xã hội máy tính IEEE, 2008, trang 263 Từ270.
Shending Wang và Zongyan Qiu. Một mô hình chung để giam cầm và ứng dụng của nó. Trong Hội nghị chuyên đề quốc tế lần thứ hai của IEEE / IFIP về các khía cạnh lý thuyết của công nghệ phần mềm, TASE 2008, 17-19 tháng 6 năm 2008, Nam Kinh, Trung Quốc. Xã hội máy tính IEEE, 2008, trang 57 Hàng64.
Bài báo đầu tiên mã hóa hai kiểu loại sở hữu, cụ thể là chủ sở hữu với tư cách là người thống trị và chủ sở hữu là khóa, theo các quyền hạn phân đoạn của Boyland, là một hệ thống khả năng được phát triển để suy luận về các chương trình.
Bài viết thứ hai lấy các ý tưởng giam cầm tương tự như các ý tưởng được sử dụng trong các loại sở hữu và thêm chúng vào logic phân tách.
Bài viết thứ ba đã phát triển một cách tiếp cận ngữ nghĩa được sử dụng để mã hóa các quy tắc giam cầm khác nhau như các loại sở hữu. Tôi không chắc liệu hệ thống của họ có bao gồm logic tách hay không và tôi không thể truy cập vào lúc này. Cách tiếp cận của họ là khá đặc biệt; nó có thể được coi là một cách trang trọng và có hệ thống hơn với một bài báo mà tôi đã viết cách đây một thời gian với James Noble và những người khác:
Cách tôi hiểu sự khác biệt là các kiểu sở hữu ràng buộc hình dạng của biểu đồ đối tượng và các hệ thống cấu trúc con (như logic phân tách) quản lý các quyền để truy cập vào heap .
Trong công việc ban đầu về các loại hình sở hữu, ý tưởng là duy trì sự bất biến của chủ sở hữu với tư cách là người thống trị . Một đối tượng đang bị chi phối bởi một đối tượng , nếu mỗi đường đi từ bộ rễ để chứa . Vì vậy chỉ có thể truy cập từ . Vì vậy, hệ thống được thiết kế để khai báo lớp được tham số hóa bởi chủ sở hữu của họ, và sau đó thực tế này mang đến cho bạn một điều kiện khung có nguồn gốc cho : trạng thái của nó không thể thay đổi trừ khi một phương pháp của chủ sở hữu được gọi.d o d o dd
Ngược lại, các hệ thống cấu trúc con như kiểu tuyến tính và logic phân tách dựa trên ý tưởng về tài nguyên . Mỗi vùng của vùng heap là một tài nguyên và nếu bạn không sở hữu tài nguyên đó, bạn không thể chạm vào tài nguyên đó. Điều này làm cho điều kiện khung rất dễ dàng: chúng luôn giữ.
Một điểm khác biệt bề ngoài (tuy nhiên làm tôi bối rối trong một thời gian dài) là các loại sở hữu là các loại và logic tách là một logic chương trình. May mắn thay, trong khi các loại hình sở hữu được sinh ra trong một môi trường lý thuyết loại, mọi người cũng đã áp dụng những ý tưởng này cho logic chương trình.
Hai phần chính của công việc lý thuyết mà tôi biết về điều này là công trình của Kassios trên các khung động , được Bannerjee và Naumann (và sinh viên của họ) khai thác một cách có hệ thống trong công việc của họ về logic khu vực .
Theo tôi hiểu, cách tiếp cận cơ bản của họ là lấy logic Hoare, và sau đó:
Mỗi cách tiếp cận đều có lợi ích và điểm yếu.
Quyền sở hữu làm cho các thuộc tính khung ít thuận tiện hơn khi sử dụng so với các phương pháp cấu trúc phụ, vì bạn phải tính toán các điều kiện khung.
Mặt khác, các thuật toán trên DAG hỗ trợ các bằng chứng quy nạp đẹp hơn theo kiểu sở hữu, vì bạn có thể tách rời dấu chân khỏi cấu trúc con trỏ. Trong một đặc tả kiểu tách biệt, điều tự nhiên là đưa ra một bất biến quy nạp trên một cây bao trùm. Nhưng nếu cây bao trùm, thuật toán tính toán sẽ khác với cây bất biến của bạn, thì bạn đang ở trong một thế giới bị tổn thương.
Ý thức chung của tôi là phân tách dễ sử dụng hơn quyền sở hữu, vì chúng ta cần các thuộc tính khung cho gần như mọi lệnh trong một chương trình bắt buộc. (Dave Naumann lập luận rằng logic khu vực có thể dễ dàng hơn đối với tự động hóa, vì logic khẳng định vẫn là FOL cũ đơn giản, và vì vậy bạn có thể sử dụng các trình xử lý định lý ngoài luồng và các bộ giải SMT.)
EDIT: Tôi vừa tìm thấy bài báo sau của Matt Parkinson và Alex Summers, Mối quan hệ giữa Logic tách biệt và Khung động tiềm ẩn , nơi họ tuyên bố sẽ đưa ra logic thống nhất hai phương pháp.