Gibt es eine Programmiersprachtheorie, die fremde Funktionsschnittstellen (FFI) und Mehrsprachenzuordnungen beschreibt?

16

Gibt es eine Programmiersprachtheorie, die fremde Funktionsschnittstellen (FFI) und Mehrsprachenzuordnungen beschreibt?

Ich habe einige Implementierungsprobleme zum Stackoverflow gestellt , die hier nicht geeignet sind. Aber ich möchte aus der Sicht dieser Seite fragen und sehen, was ich möglicherweise von hier bekommen könnte.

Schätzen Sie wirklich Ihre Antwort!

Vielen Dank an Dave Clarke für seine Antwort auf meta

Tim
quelle

Antworten:

17

Die Arbeit Operational Semantics for Multi-Language Programs von Jacob Matthews und Robert Bruce Findler präsentiert zwei Ansätze zur Definition der Semantik von Programmen, die in zwei Programmiersprachen geschrieben wurden. Durch die pauschale Einbettung können Werte, die in einer Sprache erstellt wurden, im laufenden Code einer anderen Sprache angezeigt werden. Diese Werte können jedoch nur weitergegeben, nicht bearbeitet (oder möglicherweise nur von einer kleinen Schnittstelle bearbeitet) werden. Durch die natürliche Einbettung können Werte in einer Sprache in der anderen verwendet werden, indem ein sogenannter sprachübergreifender Cast durchgeführt wird , bei dem Werte von einer Sprache in die andere konvertiert werden.

Der Artikel JNI Light: Ein Betriebsmodell für das Kern-JNI von Gang Tan präsentiert eine formale Semantik der Funktionsweise des vorhandenen JNI. Im Gegensatz zum vorherigen Artikel werden hier viele Details auf niedriger Ebene formalisiert, anstatt zu versuchen, die Probleme aus einer fundamentalen Perspektive zu untersuchen.

Arbeiten zur Typprüfung von Fremdfunktionsaufrufen, wie z. B. die Prüfung der Typensicherheit von Fremdfunktionsaufrufen von Michael Furr und Jeffrey Foster, bieten auch einen formalen Rahmen, in dem das Typensystem formuliert und seine Richtigkeit nachgewiesen werden kann.

Wenn Sie sich die Referenzen in diesen Artikeln ansehen und herausfinden, wo sie mit Google Scholar zitiert werden, können Sie sich ein genaueres Bild davon machen, was in der Gegend getan wurde.

Dave Clarke
quelle
10

Als Reaktion auf Marc möchte ich die Schuld korrigieren. Wadler hat weder das Konzept der Schuld eingeführt, das Findler und Felleisen zu verdanken ist , noch die Schuld für die Vermittlung zwischen verschiedenen Sprachen, die aus meiner Arbeit von 2006 stammt .

Marc hat jedoch im Punkt der Schuld vollkommen Recht, und das von Dave erwähnte Matthews-Papier erörtert auch dieses Problem.

Sam Tobin-Hochstadt
quelle
1
Das Papier "Gut typisierte Programme" liefert in der Tat die richtigen Zitate und behauptet, sein spezifischer Beitrag biete eine einheitliche Sicht auf die jüngsten Arbeiten zu Verträgen, schrittweisen Typen und hybriden Typen, indem ein Begriff der Schuld (von Verträgen) in ein Typensystem eingeführt wird mit Abgüssen (ähnlich den für graduelle und hybride Typen verwendeten Zwischensprachen), was ein System ergibt, das wir evolutionäre Typen nennen. "
sclv
2
Ich entschuldige mich bei Sam, dass er es versäumt hat, all jenen die volle Ehre zu erweisen, die einen Anteil an den Ursprüngen von "Schuld" hatten. Es waren nur die Papiere, die Wadler mitverfasst hat, die mich auf die Idee gebracht haben und mit denen ich am ehesten vertraut bin.
Marc Hamann
9

Obwohl es viele nicht offensichtlich direkt miteinander verbunden sind, fällt einem das Konzept der "Schuld" von Wadler et al. Ein. . Dies gibt Ihnen eine theoretische Grundlage, um darüber nachzudenken, wie Sie verschiedene Schreibweisen zu einem zusammenhängenden Ganzen zusammenfügen können.

Im Grunde genommen ermöglicht es Ihnen die Schuld, Sprachen mit schwächeren Typgarantien mit Sprachen zu mischen, die stärkere Typgarantien haben, ohne alle Vorteile der starken Garantien zu verlieren. Die Idee ist, dass die Teile des Systems mit schwächeren Garantien die "Schuld" bekommen, wenn bestimmte Dinge schief gehen und Laufzeitfehler lokalisiert werden.

Hoffentlich können Sie sehen, wie nützlich dies für FFI und Bindungen sein kann, die für Sprachen mit unterschiedlichen Typsystemen gelten.

Bearbeiten: Siehe Sam TH Antwort für eine umfassendere intellektuelle Geschichte des Konzepts der "Schuld".

Marc Hamann
quelle