是否有描述外来函数接口(FFI)和多种语言绑定的编程语言理论?


Answers:


17

雅各布·马修斯和罗伯特·布鲁斯·芬德勒的论文《多语言程序操作语义学》提出了两种方法来定义用两种编程语言编写的程序的语义,尤其要注意用一种语言定义并使用另一种语言的数据。该肿块嵌入允许在一个语言创建出现在运行的另一码值,但这些都只能通过周围,不手术(或只有很小的界面上也许经营)。的自然嵌入 允许在一个语言值以便在其他通过执行所谓的使用跨语言铸造,其从一种语言到另转换值。

Gang Tan 撰写的论文《JNI Light:核心JNI的操作模型》介绍了现有JNI如何工作的形式语义。与上一篇文章相反,这是对正在发生的事情的许多低层次细节进行形式化,而不是试图从基础的角度探讨这些问题。

类型检查外部函数调用的工作,例如Michael Furr和Jeffrey Foster 的“检查外部函数调用的类型安全性”,还提供了一个正式的框架,在其中可以对类型系统进行表述并证明其健全性。

查看这些论文中的参考文献,并使用Google学术搜索找到它们的引用位置,将有助于您更全面地了解该领域的工作。


10

追随Marc的评论,我要怪罪纠正记录。Wadler既没有引入归咎于Findler和Felleisen的责任的概念,也没有引入归因于不同语言之间的调解,这起源于我2006年的论文

但是,马克在怪罪方面是完全正确的,戴夫指出的马修斯论文也讨论了这个问题。


1
“ Well Typed Programs”文件确实提供了正确的引用,并声称其特定贡献是“通过对类型系统引入责任(来自合同)的概念,提供了关于合同,渐进类型和混合类型的最新工作的统一视图。使用强制转换(类似于用于渐进类型和混合类型的中间语言),产生了我们称为进化类型的系统。”
sclv 2011年

2
我对萨姆未能对所有归咎于“怪罪”的人没有给予充分的感谢表示歉意。恰好是Wadler与人合着的论文向介绍这个想法,并且我最容易熟悉。
马克·哈曼

9

尽管许多显然不是直接相关的,但我想到的一件事是Wadler等人的“责备”概念。这为您提供了一个理论基础,可以考虑将不同的打字方式混合在一起形成一个连贯的整体。

从本质上讲,责备使您可以将具有较弱类型保证的语言与具有较强类型保证的语言混合在一起,而不会失去所有强保证的好处。这个想法是,如果某些问题出了错,则对保证较弱的系统部分将承担“责任”,从而对运行时类型错误进行本地化。

希望您能看到这对于FFI和适用于具有不同类型系统的语言的绑定如何有用。

编辑:请参阅Sam TH的答案,以获取关于“责备”概念更完整的知识史。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.