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.
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".
quelle