Eigentümertypen und Trennungslogik

10

Eigentümertypen und Trennungslogik scheinen ähnliche Ziele zu haben: Kontrolle über Eigentümer und Aliasing. Vielleicht sollte ich auch hinzufügen: die Fähigkeit, modulare Spezifikationen zu schreiben.

Was ist über die Beziehung zwischen Besitzertypen und Trennungslogik bekannt?

Uday Reddy
quelle
Klingt vage vertraut.
Dave Clarke
@ DaveClarke: Ist meine Antwort für dich sinnvoll? Sie haben viel am Eigentum gearbeitet, und ich habe nur wenig getan, bevor ich zur Arbeit an der Trennungslogik übergegangen bin.
Neel Krishnaswami
@NeelKrishnaswami: Deine Antwort macht sehr viel Sinn. Ich habe vor, einige Lücken zu schließen, wenn ich Zeit finde. Auf jeden Fall ist mir kein Papier bekannt, das einen signifikanten Vergleich macht.
Dave Clarke

Antworten:

7

Ich habe kürzlich eine Umfrage zu Eigentümertypen abgeschlossen und nur sehr wenig gefunden, das die Beziehung zwischen den beiden Themen behandelt. Die drei nächsten Artikel, auf die ich gestoßen bin, sind die folgenden, die seltsamerweise von derselben Konferenz stammen:

  • Yang Zhao und John Boyland. Eine grundlegende Berechtigungsinterpretation für Eigentumsarten. Im zweiten internationalen IEEE / IFIP-Symposium zu theoretischen Aspekten des Software-Engineerings, TASE 2008, 17.-19. Juni 2008, Nanjing, China. IEEE Computer Society, 2008., Seiten 65–72.

  • Shuling Wang, Luís Soares Barbosa und José Nuno Oliveira. Ein relationales Modell für begrenzte Trennungslogik. Im zweiten internationalen IEEE / IFIP-Symposium zu theoretischen Aspekten des Software-Engineerings, TASE 2008, 17.-19. Juni 2008, Nanjing, China. IEEE Computer Society, 2008., Seiten 263–270.

  • Shuling Wang und Zongyan Qiu. Ein generisches Modell für die Beschränkung und ihre Anwendung. Im zweiten internationalen IEEE / IFIP-Symposium zu theoretischen Aspekten des Software-Engineerings, TASE 2008, 17.-19. Juni 2008, Nanjing, China. IEEE Computer Society, 2008., Seiten 57–64.

Das erste Papier kodiert zwei Arten von Eigentümertypen, nämlich Eigentümer als Dominatoren und Eigentümer als Sperren, in Bezug auf die Teilberechtigungen von Boyland, die ein Fähigkeitssystem sind, das zum Überlegen von Programmen entwickelt wurde.

Das zweite Papier nimmt Beschränkungsideen auf, die denen ähneln, die in Besitzertypen verwendet werden, und fügt sie der Trennungslogik hinzu.

Das dritte Papier hat einen semantischen Ansatz entwickelt, der verwendet wird, um verschiedene Einschlussdisziplinen wie Eigentumsarten zu kodieren. Ich bin mir nicht sicher, ob ihr System auch die Trennungslogik abdeckt, und ich kann im Moment nicht darauf zugreifen. Ihr Ansatz ist eher ad hoc; Es kann als formeller und systematischer für ein Papier angesehen werden, das ich vor einiger Zeit mit James Noble und anderen geschrieben habe:

  • Auf dem Weg zu einem Modell der Verkapselung James Noble, Robert Biddle, Ewan Tempero, Alex Potanin und Dave Clarke Der erste internationale Workshop zu Aliasing, Confinement und Ownership in der objektorientierten Programmierung (IWACO), 2003.
Dave Clarke
quelle
9

Ich verstehe den Unterschied so, dass Besitzertypen die Form des Objektgraphen einschränken und unterstrukturelle Systeme (wie die Trennungslogik) Berechtigungen für den Zugriff auf den Heap verwalten .

odododod

Im Gegensatz dazu beruhen substrukturelle Systeme wie lineare Typen und Trennungslogik auf der Idee von Ressourcen . Jede Region des Heaps ist eine Ressource. Wenn Sie die Ressource nicht besitzen, können Sie sie nicht berühren. Dies macht die Rahmenbedingungen sehr einfach: Sie halten immer.

Ein oberflächlicher Unterschied (der mich dennoch lange verwirrte) war, dass Besitzertypen Typen waren und Trennungslogik eine Programmlogik. Glücklicherweise haben die Eigentümer diese Ideen, obwohl sie in einer typentheoretischen Umgebung geboren wurden, auch auf die Programmlogik angewendet.

Die beiden wichtigsten theoretischen Arbeiten, die ich dazu kenne, sind Kassios 'Arbeiten zu dynamischen Rahmen , die Bannerjee und Naumann (und ihre Schüler) in ihrer Arbeit zur regionalen Logik systematisch genutzt haben .

Nach meinem Verständnis besteht ihr grundlegender Ansatz darin, die Hoare-Logik zu übernehmen und dann:

  1. Fügen Sie einen neuen Typ von Regionsvariablen hinzu, mit denen Sie Objekte und Regionen zuordnen.
  2. Fügen Sie der Hoare-Logik ein Effektsystem hinzu, um die Lese- und Schreibvorgänge der Regionen zu verfolgen.
  3. Verwenden Sie die Effekte, um festzustellen, ob eine Behauptung den Frame respektiert oder nicht. Wenn ja, können Sie es einrahmen, und wenn nicht, können Sie es nicht.

Jeder Ansatz hat Vor- und Nachteile.

  • Durch die Eigentümerschaft sind Frame-Eigenschaften wesentlich weniger bequem zu verwenden als bei substrukturellen Ansätzen, da Sie Frame-Bedingungen berechnen müssen.

  • Andererseits unterstützen Algorithmen auf DAGs hübschere induktive Beweise in einem Besitzstil, da Sie den Footprint von der Zeigerstruktur entkoppeln können. In einer Spezifikation im Trennungsstil besteht die natürliche Sache darin, eine induktive Invariante auf einem Spannbaum zu erzeugen. Aber wenn der Spanning Tree, den der Algorithmus berechnet, jemals anders ist als der, den Ihre Invariante hat, werden Sie in eine Welt voller Verletzungen geraten.

Mein allgemeiner Eindruck ist, dass die Trennung einfacher zu verwenden ist als das Eigentum, da wir für fast jeden Befehl in einem imperativen Programm Rahmeneigenschaften benötigen. (Dave Naumann argumentiert, dass die Regionslogik für die Automatisierung besser geeignet ist, da die Assertionslogik einfach alte FOL bleibt und Sie daher Standard-Theoremprüfer und SMT-Löser verwenden können.)

EDIT: Ich habe gerade das folgende Papier von Matt Parkinson und Alex Summers, Die Beziehung zwischen Trennungslogik und impliziten dynamischen Frames , gefunden, in dem sie behaupten, eine Logik zu geben, die die beiden Methoden vereint.

Neel Krishnaswami
quelle
Vielen Dank für Ihre Erkenntnisse, Neel. Ich habe mich jedoch eher über die Beziehung zwischen den beiden Paradigmen als über die Unterschiede gewundert . Also werde ich die Frage vorerst offen halten.
Uday Reddy