มีทฤษฎีภาษาการเขียนโปรแกรมที่อธิบายการทำงานของฟังก์ชั่นต่างประเทศ (FFI) และการผูกหลายภาษา?


16

มีทฤษฎีภาษาการเขียนโปรแกรมที่อธิบายการทำงานของฟังก์ชั่นต่างประเทศ (FFI) และการผูกหลายภาษา?

ฉันได้ถามปัญหาการใช้งานบางอย่างกับ stackoverflowซึ่งไม่เหมาะสมที่นี่ แต่ฉันต้องการถามจากมุมมองของไซต์นี้และดูว่าฉันจะได้อะไรจากที่นี่

ขอบคุณคำตอบของคุณจริงๆ!

ขอบคุณ Dave Clarke สำหรับคำตอบของเขาในเมตาดาต้า

คำตอบ:


17

กระดาษ อรรถกถาปฏิบัติการสำหรับโปรแกรมหลายภาษาโดย Jacob Matthews และ Robert Bruce Findler นำเสนอสองวิธีในการกำหนด semantics ของโปรแกรมที่เขียนในสองภาษาโปรแกรมโดยคำนึงถึงข้อมูลที่กำหนดเป็นภาษาเดียวและใช้ในภาษาอื่น การฝังก้อนทำให้ค่าที่สร้างในภาษาหนึ่งปรากฏขึ้นในการรันโค้ดของอีกภาษาหนึ่ง แต่สิ่งเหล่านี้สามารถถูกส่งผ่านได้เท่านั้นไม่สามารถทำงานได้ (หรืออาจดำเนินการโดยอินเตอร์เฟสขนาดเล็กเท่านั้น) การฝังแบบธรรมดา อนุญาตให้ใช้ค่าในภาษาหนึ่งในอีกภาษาหนึ่งโดยการใช้การร่ายข้ามภาษาซึ่งเรียกว่าการแปลงค่าจากภาษาหนึ่งไปเป็นอีกภาษาหนึ่ง

กระดาษJNI Light: โมเดลการดำเนินงานสำหรับ Core JNIโดย Gang Tan นำเสนอความหมายอย่างเป็นทางการว่า JNI ทำงานอย่างไร ตรงกันข้ามกับบทความก่อนหน้านี้สิ่งนี้ทำให้รายละเอียดระดับต่ำหลายอย่างเป็นทางการของสิ่งที่เกิดขึ้นแทนที่จะพยายามสำรวจปัญหาจากมุมมองพื้นฐาน

ทำงานเกี่ยวกับการตรวจสอบการเรียกใช้ฟังก์ชันต่างประเทศเช่นการตรวจสอบความปลอดภัยของการโทรจากต่างประเทศโดย Michael Furr และ Jeffrey Foster ให้กรอบการทำงานอย่างเป็นทางการซึ่งจะพูดถึงระบบประเภทและพิสูจน์ความสมบูรณ์

การดูการอ้างอิงในเอกสารเหล่านี้และการค้นหาว่าพวกเขาถูกอ้างอิงโดยใช้ google scholar จะช่วยให้คุณค้นพบภาพที่ละเอียดยิ่งขึ้นของสิ่งที่ได้ทำในพื้นที่


10

ตามความคิดเห็นของ Marc ฉันต้องการแก้ไขระเบียนด้วยความผิด Wadler ไม่แนะนำแนวคิดเรื่องการตำหนิซึ่งเกิดจากFindler และ Felleisenและไม่ได้แนะนำการตำหนิสำหรับการเป็นสื่อกลางระหว่างภาษาต่าง ๆ ซึ่งมีต้นกำเนิดในบทความปี 2549 ของฉันกระดาษ

อย่างไรก็ตามมาร์คถูกต้องทั้งหมดในเรื่องของความผิดและกระดาษ Matthews ที่ Dave ชี้ให้เห็นก็อธิบายปัญหานี้เช่นกัน


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.