Existe-t-il une théorie du langage de programmation décrivant les interfaces de fonctions étrangères (FFI) et les liaisons de plusieurs langages?

16

Existe-t-il une théorie du langage de programmation décrivant les interfaces de fonctions étrangères (FFI) et les liaisons de plusieurs langages?

J'ai posé quelques problèmes d'implémentation sur stackoverflow , qui ne convient pas ici. Mais je voudrais demander du point de vue de ce site et voir ce que je pourrais éventuellement obtenir d'ici.

Appréciez vraiment votre réponse!

Merci à Dave Clarke pour sa réponse sur meta

StackExchange pour tous
la source

Réponses:

17

L'article Operational Semantics for Multi-Language Programs de Jacob Matthews et Robert Bruce Findler présente deux approches pour définir la sémantique des programmes écrits dans deux langages de programmation, en prenant particulièrement soin des données définies dans une langue et utilisées dans l'autre. L' incorporation forfaitaire permet aux valeurs créées dans une langue d'apparaître dans le code en cours d'exécution d'une autre, mais celles-ci ne peuvent être transmises, pas exploitées (ou peut-être exploitées uniquement par une petite interface). L' incorporation naturelle permet d'utiliser des valeurs dans une langue dans l'autre en effectuant une conversion dite multilingue , qui convertit les valeurs d'une langue dans l'autre.

L'article JNI Light: An Operational Model for the Core JNI de Gang Tan présente une sémantique formelle du fonctionnement de JNI existant. Contrairement à l'article précédent, cela formalise de nombreux détails de bas niveau de ce qui se passe, plutôt que d'essayer d'explorer les problèmes d'un point de vue fondamental.

Les travaux sur la vérification de type des appels de fonction étrangère, tels que la vérification de la sécurité des types d'appels de fonction étrangère par Michael Furr et Jeffrey Foster, fournissent également un cadre formel dans lequel formuler le système de type et prouver sa solidité.

En regardant les références dans ces articles et en trouvant où ils sont cités à l'aide de google scholar, vous pourrez découvrir une image plus approfondie de ce qui a été fait dans la région.

Dave Clarke
la source
10

Pour faire suite au commentaire de Marc, je veux corriger le compte rendu sur le blâme. Wadler n'a ni introduit le concept de blâme, qui est dû à Findler et Felleisen , ni introduit le blâme pour la médiation entre différentes langues, qui trouve son origine dans mon article de 2006 .

Cependant, Marc a tout à fait raison sur le point de blâmer, et le document Matthews que Dave signale traite également de cette question.

Sam Tobin-Hochstadt
la source
1
L'article "Programmes bien typés" fournit en effet les citations correctes et affirme que sa contribution spécifique fournit "une vue uniforme des travaux récents sur les contrats, les types graduels et les types hybrides en introduisant une notion de blâme (des contrats) à un système de type avec des transtypages (similaires aux langages intermédiaires utilisés pour les types progressifs et hybrides), produisant un système que nous appelons les types évolutifs. "
sclv
2
Je m'excuse Sam d'avoir omis de donner tout le crédit à tous ceux qui avaient une part pour les origines du "blâme". Il se trouve que ce sont les articles que Wadler a co-écrits qui m'ont présenté l'idée et que je connais le mieux.
Marc Hamann
9

Bien que beaucoup ne soient pas manifestement directement liés, une chose qui me vient à l'esprit est le concept de «blâme» de Wadler et al. . Cela vous donne une base théorique pour penser à mélanger différents régimes de typage dans un ensemble cohérent.

En substance, le blâme vous permet de mélanger des langues avec des garanties de type plus faibles avec des langues qui ont des garanties de type plus fortes sans perdre tous les avantages des garanties fortes. L'idée est que les parties du système avec des garanties plus faibles obtiendront le "blâme" si certaines choses tournent mal, localisant les erreurs de type d'exécution.

J'espère que vous pouvez voir comment cela pourrait être utile pour FFI et les liaisons qui s'appliquent aux langues avec des systèmes de types différents.

Edit: Voir la réponse de Sam TH pour une histoire intellectuelle plus complète du concept de «blâme».

Marc Hamann
la source