Czy istnieje jakaś teoria języka programowania opisująca obce interfejsy funkcji (FFI) i powiązania wielu języków?

16

Czy istnieje jakaś teoria języka programowania opisująca obce interfejsy funkcji (FFI) i powiązania wielu języków?

Zadałem kilka problemów związanych z implementacją przepływu stosu , co tutaj nie jest odpowiednie. Ale chciałbym zapytać z widoku tej strony i zobaczyć, co mógłbym stąd uzyskać.

Naprawdę doceniam twoją odpowiedź!

Dzięki Dave'owi Clarke'owi za odpowiedź na meta

StackExchange dla wszystkich
źródło

Odpowiedzi:

17

Artykuł „Semantyka operacyjna dla programów wielojęzycznych” Jacoba Matthewsa i Roberta Bruce'a Findlera przedstawia dwa podejścia do definiowania semantyki programów napisanych w dwóch językach programowania, ze szczególnym uwzględnieniem danych zdefiniowanych w jednym języku i używanych w drugim. Guzek osadzanie pozwala wartości utworzonych w jednym języku pojawiać się w inny kod działa, ale to może być przekazywane tylko dookoła, nie operowano (lub może pracować na jedynie niewielką interfejsu). Naturalne osadzanie pozwala wartości w jednym języku, który będzie wykorzystywany w innych wykonując tzw obsady cross-językowy , który konwertuje wartości z jednego języka na drugi.

Artykuł JNI Light: model operacyjny dla podstawowego JNI autorstwa Ganga Tana przedstawia formalną semantykę działania istniejącego JNI. W przeciwieństwie do poprzedniego artykułu formalizuje to wiele szczegółów niskiego poziomu tego, co się dzieje, zamiast próbować zgłębiać problemy z fundamentalnej perspektywy.

Prace nad sprawdzaniem wywołań funkcji zagranicznych, takich jak Sprawdzanie bezpieczeństwa wywołań funkcji zagranicznych przez Michaela Furra i Jeffreya Fostera, zapewniają również formalne ramy do sformułowania systemu typów i udowodnienia jego poprawności.

Przejrzenie odniesień w tych artykułach i znalezienie miejsca, w którym są cytowane za pomocą Google Scholar, pomoże ci odkryć dokładniejszy obraz tego, co zostało zrobione w tym obszarze.

Dave Clarke
źródło
10

W następstwie komentarza Marca chcę poprawić nagranie z winy. Wadler ani nie wprowadził pojęcia winy, która wynika z Findlera i Felleisena , ani nie obwinił za mediacje między różnymi językami, które powstały w mojej pracy z 2006 roku .

Jednak Marc ma całkowitą rację co do winy, a artykuł Matthewsa, na który zwraca uwagę Dave, również omawia ten problem.

Sam Tobin-Hochstadt
źródło
1
Dokument „Programy dobrze typowane” rzeczywiście podaje prawidłowe cytaty i twierdzi, że jego konkretny wkład zapewnia „jednolity obraz ostatnich prac nad umowami, typami stopniowymi i rodzajami hybrydowymi poprzez wprowadzenie pojęcia winy (z umów) do systemu typów z rzutami (podobnymi do języków pośrednich używanych dla typów stopniowych i hybrydowych), co daje system, który nazywamy typami ewolucyjnymi. ”
sclv
2
Przepraszam Sama za to, że nie udzielił pełnego uznania wszystkim, którzy mieli udział w początkach „winy”. Tak się złożyło, że były to artykuły, których współautor Wadler przedstawił mi ten pomysł i z którymi najlepiej się zapoznałem.
Marc Hamann,
9

Chociaż wielu nie jest oczywiście bezpośrednio powiązanych, jedna rzecz, jaka przychodzi mi na myśl, to koncepcja „winy” autorstwa Wadlera i in. . To daje teoretyczną podstawę do przemyślenia na temat mieszania różnych reżimów pisania w spójną całość.

Zasadniczo obwinianie pozwala łączyć ze sobą języki ze słabszymi gwarancjami typu z językami, które mają silniejsze gwarancje typu bez utraty wszystkich zalet silnych gwarancji. Chodzi o to, że części systemu o słabszych gwarancjach dostaną „winę”, jeśli pewne rzeczy pójdą nie tak, lokalizując błędy typu runtime.

Mamy nadzieję, że zobaczysz, jak może to być przydatne dla FFI i powiązań mających zastosowanie do języków z różnymi systemami typów.

Edycja: Zobacz odpowiedź Sama TH, aby uzyskać pełniejszą intelektualną historię pojęcia „winy”.

Marc Hamann
źródło