Существует ли какая-либо теория языков программирования, описывающая интерфейсы сторонних функций (FFI) и привязки к нескольким языкам?

16

Существует ли какая-либо теория языков программирования, описывающая интерфейсы сторонних функций (FFI) и привязки к нескольким языкам?

Я задал некоторые вопросы реализации на стеке потока , который здесь не подходит. Но я хотел бы спросить с точки зрения этого сайта и посмотреть, что я мог бы получить отсюда.

Очень ценю ваш ответ!

Благодаря Dave Clarke за его ответ на мета !

StackExchange для всех
источник

Ответы:

17

В статье « Операционная семантика для многоязычных программ » Джейкоба Мэтьюса и Роберта Брюса Финдлера представлены два подхода к определению семантики программ, написанных на двух языках программирования, с особой заботой о данных, определенных на одном языке и используемых на другом. Единовременное вложение позволяет ценности , созданные на одном языке , чтобы появиться в запуске кода другого, но они могут быть переданы только вокруг, но не работает на (или , возможно , оперировали лишь небольшой интерфейс). Естественное вложение позволяет значениям в одном языке , которые будут использоваться в другом, выполняя так называемый межъязыковой бросок , который преобразует значения с одного языка на другой.

В статье « Свет JNI: операционная модель для ядра JNI » Ган Тана представлена ​​формальная семантика того, как работает существующий JNI. В отличие от предыдущего документа, это формализует многие детали происходящего на низком уровне, а не пытается исследовать проблемы с фундаментальной точки зрения.

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

Просматривая ссылки в этих статьях и выясняя, где они цитируются с помощью google scholar, вы сможете найти более полную картину того, что было сделано в этой области.

Дэйв Кларк
источник
10

После комментария Марка я хочу исправить обвинения. Уодлер не ввел концепцию вины, которая возникла из-за Финдлера и Феллайзена, и не ввел вину за посредничество между разными языками, которая возникла в моей статье 2006 года .

Тем не менее, Марк совершенно прав в этом вопросе, и в статье Мэтьюса, на которую указывает Дейв, также обсуждается этот вопрос.

Сэм Тобин-Хохштадт
источник
1
Документ «Хорошо типизированные программы» действительно предоставляет правильные ссылки и утверждает, что его конкретный вклад обеспечивает «единообразное представление о недавней работе над контрактами, постепенными типами и гибридными типами путем введения понятия вины (из контрактов) в систему типов». с приведениями (аналогично промежуточным языкам, используемым для постепенных и гибридных типов), что дает систему, которую мы называем эволюционными типами ».
sclv
2
Мои извинения Сэму за то, что он не смог полностью отдать должное всем тем, кто имел отношение к происхождению «вины». Так получилось, что именно соавторы Уодлера познакомили меня с этой идеей и с которыми я наиболее хорошо знаком.
Марк Хаманн
9

Хотя это явно не связано напрямую, одна вещь, которая приходит на ум, - это концепция «вины» Wadler et al. , Это дает вам теоретическую основу для размышления о смешении различных режимов набора в единое целое.

По сути, обвинение позволяет вам смешивать языки с более слабыми гарантиями типов с языками, которые имеют более строгие гарантии типов, не теряя при этом всех преимуществ сильных гарантий. Идея состоит в том, что части системы с более слабыми гарантиями получат «вину», если некоторые вещи пойдут не так, локализуя ошибки типа времени выполнения.

Надеемся, вы увидите, как это может быть полезно для FFI и привязок, которые применяются к языкам с различными системами типов.

Отредактируйте: См. Ответ Сэма TH для более полной интеллектуальной истории понятия "обвинения".

Марк Хаманн
источник