Чи існує якась теорія мови програмування, що описує інтерфейси іноземних функцій (FFI) та декілька прив'язок мови?


16

Чи існує якась теорія мови програмування, що описує інтерфейси іноземних функцій (FFI) та декілька прив'язок мови?

Я поставив запитання щодо імплементації щодо stackoverflow , який тут не підходить. Але я хотів би запитати у цього сайту і подивитися, що я можу отримати звідси.

Дуже вдячний за вашу відповідь!

Завдяки Dave Clarke за його відповідь на мета !

Відповіді:


17

У статті Оперативна семантика для багатомовних програм Джейкоба Меттьюса та Роберта Брюса Фіндлера представлено два підходи до визначення семантики програм, написаних двома мовами програмування, з особливою увагою до даних, визначених в одній мові та використовуваних в іншій. Одноразова вкладення дозволяє цінності , створені на одній мові , щоб з'явитися в запуску коду іншого, але вони можуть бути передані тільки навколо, але не працює на (або , можливо , оперували лише невеликий інтерфейс). Природне вкладення дозволяє значенням в одній мові , які будуть використовуватися в іншому, виконуючи так званий міжмовної кидок , який перетворює значення з однієї мови на іншу.

У статті JNI Light: операційна модель для основної JNI Ган Тан представлена ​​формальна семантика того, як працює існуючий JNI. На відміну від попереднього документу, це формалізує багато деталей низького рівня того, що відбувається, а не намагається дослідити проблеми з фундаментальної точки зору.

Робота над перевіркою типових викликів функцій, таких як Перевірка безпеки безпеки зовнішніх функціональних дзвінків Майкла Ферра та Джефрі Фостера, також забезпечує формальну основу, в якій можна сформулювати систему типу та довести її надійність.

Перегляд посилань у цих роботах та пошук місця, де вони цитуються за допомогою науковця Google, допоможе вам розкрити більш ретельну картину того, що було зроблено в цьому районі.


10

Після коментаря Марка, я хочу виправити запис провини. Уодлер ні ввів поняття провини, яке пов’язано з Findler та Felleisen , ні вину за посередництво між різними мовами, яке бере початок у моєму документі 2006 року .

Однак Марк цілком коректний у питанні вини, і документ Метьюса, який вказує Дейв, також обговорює це питання.


1
Документ "Добре набрані програми" дійсно дає правильні цитати та заявляє, що його конкретний внесок є "єдиним видом останніх робіт щодо контрактів, поступових типів та гібридних типів шляхом введення поняття про вину (від контрактів) до типової системи" з кастами (подібними до проміжних мов, що використовуються для поступових та гібридних типів), створюючи систему, яку ми називаємо еволюційними типами ".
sclv

2
Мої вибачення Сем за те, що не віддав повного кредиту всім, хто мав частку за походження "вини". Щойно трапилось, що працівники, які співавтор Уодлера, ввели мене в цю ідею, і з якими я найбільше знайомий.
Марк Хаманн

9

Хоча багато хто з них, очевидно, не пов'язані безпосередньо, одна річ, яка спадає на думку, - це концепція "вини" Вадлера та ін. . Це дає вам теоретичну основу для роздуму про змішування різних режимів набору тексту в цілісне ціле.

По суті, звинувачення дозволяє поєднувати мови з гарантіями слабшого типу з мовами, які мають більш гарантійні типи, не втрачаючи всіх переваг сильних гарантій. Ідея полягає в тому, що частини системи зі слабшими гарантіями отримають "провину", якщо певні речі підуть не так, локалізуючи помилки типу виконання.

Сподіваємось, ви можете побачити, як це може бути корисним для FFI та прив’язок, які застосовуються до мов із різними типами систем.

Редагувати: Дивіться відповідь Сем TH для більш повної інтелектуальної історії поняття "вини".

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.