外部関数インターフェース(FFI)と複数の言語バインディングを記述するプログラミング言語理論はありますか?


16

外部関数インターフェース(FFI)と複数の言語バインディングを記述するプログラミング言語理論はありますか?

ここでは適切ではないstackoverflowの実装の問題をいくつか尋ねました。しかし、私はこのサイトの見解から尋ねて、私がここから何を得ることができるかを見たいです。

返信ありがとうございます!

メタに関する返事をくれたデイブ・クラークに感謝!

回答:


17

Jacob MatthewsとRobert Bruce Findlerによる論文「多言語プログラムの操作的意味論」は、2つのプログラミング言語で記述されたプログラムのセマンティクスを定義するための2つのアプローチを提示します。塊の埋め込みは、一つの言語で作成された値が他のコードを実行中に表示されることを可能にするが、これらだけに動作していない、周りに渡される(あるいはわずかインタフェースによって操作)することができるされています。天然の埋め込みは 一つの言語の値は、いわゆる行うことにより、他のに使用されることを可能にするクロス言語キャスト他の1つの言語からの値を変換し、。

ギャングタンによる論文「JNI Light:An Operational Model for the Core JNI」は、既存のJNIがどのように機能するかの正式なセマンティクスを示しています。前の論文とは対照的に、これは、根本的な観点から問題を探ろうとするのではなく、何が起こっているかについての低レベルの詳細の多くを形式化したものです。

Michael FurrとJeffrey Fosterによる外部関数呼び出しの型安全性のチェックなど、外部関数呼び出しの型チェックの作業は、型システムを表現し、その健全性を証明する正式なフレームワークも提供します。

これらの論文の参考文献を参照し、Google奨学生を使用してそれらが引用されている場所を見つけることは、その地域で行われたことのより完全な全体像を発見するのに役立ちます。


10

マークのコメントに従って、非難の記録を修正したいと思います。Wadlerは、FindlerとFelleisenによる非難の概念も、2006年の論文に由来する異なる言語間の仲介の非難も導入しませんでした。

しかし、マークは非難の点で完全に正しいです、そしてデイブが指摘するマシューズの論文もこの問題について議論しています。


1
「Well Typed Programs」ペーパーは確かに正しい引用を提供し、「契約からの」非難の概念を型システムに導入することにより、「契約、漸進型、およびハイブリッド型に関する最近の研究の統一的な見解を提供する」キャスト(段階的およびハイブリッド型に使用される中間言語に類似)により、進化型と呼ばれるシステムを生成します。」
sclv

2
サムは、「非難」の起源について分け前を持っていたすべての人々に完全な信用を与えなかったことをおpびします。偶然にも、このアイデアをに紹介し、私が最もよく知っているのは、Wadlerが共同執筆した論文でした。
マークハーマン

9

多くの場合、明らかに直接関連しているわけではありませんが、頭に浮かぶのは、ワドラーらによる「非難」の概念です。これにより、さまざまなタイピングレジームを1つのまとまりにまとめることを考えるための理論的基礎が得られます。

本質的に、非難は、強い保証のすべての利点を失うことなく、弱い型保証を持つ言語と強い型保証を持つ言語を混ぜることができます。アイデアは、特定の問題が発生した場合、システムの保証の弱い部分が「非難」を受け、ランタイム型エラーをローカライズするというものです。

うまくいけば、さまざまな型システムを持つ言語に適用されるFFIおよびバインディングに、それがどのように役立つかを確認できます。

編集:「非難」の概念のより完全な知的歴史については、サムTHの回答を参照してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.