외국 함수 인터페이스 (FFI) 및 다중 언어 바인딩을 설명하는 프로그래밍 언어 이론이 있습니까?


16

외국 함수 인터페이스 (FFI) 및 다중 언어 바인딩을 설명하는 프로그래밍 언어 이론이 있습니까?

나는 물었다 유래에 대한 몇 가지 구현 문제 여기에 적합하지 않습니다. 그러나 나는이 사이트의 관점에서 묻고 여기서 얻을 수있는 것이 무엇인지보고 싶다.

답장을 보내 주셔서 감사합니다!

메타에 대한 그의 대답에 대해 Dave Clarke에게 감사합니다 !

답변:


17

Jacob Matthews와 Robert Bruce Findler의 다국어 프로그램 운영 의미론 (Operational Semantics) 이라는 논문 은 한 언어로 정의되고 다른 언어에서 사용되는 데이터를 특별히 관리하면서 두 프로그래밍 언어로 작성된 프로그램의 의미를 정의하는 두 가지 접근 방식을 제시합니다. 덩어리 삽입은 다른 사람의 코드를 실행에 표시 한 언어에서 생성 된 값을 허용하지만 이러한에만 수술 (혹은 단지 작은 인터페이스에 운영)하지, 주변에 전달 될 수 있습니다. 천연 삽입은 하나 개의 언어에서의 값은 소위 수행하여 나머지에 이용 될 수 있도록 교차 언어 캐스팅 다른 하나 개의 언어에서 값을 변환한다.

논문 JNI Light : Gang Tan 의 핵심 JNI 운영 모델은 기존 JNI의 작동 방식에 대한 공식적인 의미를 제시합니다. 이전 논문과 달리, 이것은 근본적인 관점에서 문제를 탐색하려고하기보다는 진행중인 일에 대한 많은 하위 수준의 세부 사항을 공식화 한 것입니다.

Michael Furr와 Jeffrey Foster 의 외래 함수 호출 유형 안전 확인 과 같은 외래 함수 호출 유형 작업 은 형식 시스템을 표현하고 견고성을 증명하는 공식적인 프레임 워크를 제공합니다.

이 논문의 참고 문헌을보고 Google Scholar를 사용하여 인용 된 위치를 찾으면 해당 지역에서 수행 된 작업에 대한보다 철저한 그림을 찾을 수 있습니다.


10

Marc의 의견에 따라, 나는 비난에 대한 기록을 수정하고 싶습니다. Wadler는 Findler와 Felleisen에 의한 비난의 개념을 소개하지 않았 으며 , 2006 년 논문 에서 비롯된 다른 언어 간 중재에 대한 비난도 소개하지 않았습니다 .

그러나 Marc는 책임의 관점에서 전적으로 정확하며 Dave가 지적한 Matthews 논문도이 문제에 대해 설명합니다.


1
"잘 짜여진 프로그램"(Well Typed Programs) 논문은 실제로 정확한 인용을 제공하고 "계약에서 점진적 개념을 계약 시스템에서 형식 시스템으로 도입함으로써 계약, 점진적 형식 및 하이브리드 형식에 대한 최근 작업에 대한 통일 된 견해를 제공하는 것으로서 특정 기여를 주장한다" 캐스트 (점진적 및 하이브리드 유형에 사용되는 중간 언어와 유사)를 사용하여 진화 유형이라고하는 시스템을 만들었습니다. "
sclv

2
"비난"의 기원에 대한 몫을 가진 모든 사람들에게 완전한 신용을 제공하지 못한 것에 대해 사과드립니다. Wadler가 공동 저술 한 논문으로 에게 아이디어 를 소개 하고 가장 친숙한 논문이 되었습니다.
Marc Hamann

9

비록 직접적으로 직접적으로 연관되어 있지는 않지만 Wadler et al. 의 "비난"이라는 개념이 오릅니다 . . 이것은 서로 다른 타이핑 체제를 일관된 전체로 혼합하는 것에 대해 생각할 이론적 근거를 제공합니다.

본질적으로 비난을 통해 강력한 보증의 모든 이점을 잃지 않으면 서 더 강력한 형식 보증을 가진 언어와 더 약한 형식 보증을 가진 언어를 혼합 할 수 있습니다. 확실한 것은 보증이 약한 시스템의 일부가 런타임 유형 오류를 현지화하여 특정 문제가 발생하면 "비난"을 당할 것이라는 것입니다.

다양한 유형의 시스템이있는 언어에 적용되는 FFI 및 바인딩에 유용한 방법을 알 수 있기를 바랍니다.

편집 : "비난"의 개념에 대한 완전한 지적 역사는 Sam TH의 답변을 참조하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.