Foreign function interface: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
ZimbuBot (discussione | contributi)
m WPCleaner v1.43 - Disambigua corretti 12 collegamenti - Erlang, Funzione, GC, JNA, JNI, JRE, Java, Lingua, Programmazione, Riferimento, Termine, VM
Fix wikilink che punta alla voce errata
 
(7 versioni intermedie di 6 utenti non mostrate)
Riga 1:
{{w|informatica|aprile 2018}}
Una '''FFI''' ( '''Foreign Function Interface''' ) è un [[meccanismo]] mediante il quale un [[programma (informatica)|programma]] scritto in un [[linguaggio di programmazione]] può chiamare [[routine (informatica)|routine]] o fare uso di servizi scritti in un altro.
 
== NamingEtimologia del termine ==
Il termine deriva dalla specifica di [[Common LISP|Common Lisp]] , che fa esplicitamente riferimento alle funzionalità [[Linguistica educativa|linguistiche]] per le chiamate tra lingue in quanto tali; il termine è usato anche ufficialmente dai [[Linguaggio di programmazione|linguaggi]] di programmazione [[Haskell (linguaggio)|Haskell]] e [[Python]]. Altre lingue usano un'altra [[terminologia]]: il linguaggio di programmazione Ada parla di " [[binding di linguaggio]] ", mentre [[Java (linguaggio di programmazione)|Java]] fa riferimento al suo '''FFI''' come JNI ( [[Java Native Interface]] ) o JNA ( [[Java Native Access]] ). L'[[interfaccia]] per le funzioni [[Estranei|estranee]] è diventata una [[terminologia]] generica per i [[meccanismi]] che forniscono tali servizi.
 
== Operazione ==
La funzione primaria di un'interfaccia di funzione straniera è quella di accoppiare la [[semantica]] e chiamare convenzioni di un [[linguaggio di programmazione]] (la lingua ''ospite'' o la lingua che definisce la '''FFI'''), con la [[semantica]] e le convenzioni di un'altra (la lingua ''ospite'' ). Questo processo deve anche prendere in considerazione gli [[Ambiente (biologia)|ambienti]] di [[Run-time|runtime]] e / o le [[Interfaccia binaria|interfacce binarie]] delle [[Applicazione (informatica)|applicazioni]] di entrambi. Questo può essere fatto in diversi modi:
 
* Richiedere che le funzioni in lingua ospite che devono essere chiamate in linguaggio host siano specificate o implementate in un modo particolare; spesso usando una libreria di compatibilità di qualche tipo.
Riga 18 ⟶ 19:
* Potrebbe non essere possibile per entrambe le lingue mantenere i riferimenti alla stessa istanza di un oggetto mutabile, a causa del problema di [[Mappatura UV|mappatura]] sopra riportato.
* Una o entrambe le lingue potrebbero essere in esecuzione su una [[macchina virtuale]] (VM); inoltre, se entrambe lo sono, queste saranno probabilmente [[Macchina virtuale|VM]] diverse.
* L' [[Ereditarietà genetica|ereditarietà]] [[cross-language]] e altre differenze, come tra sistemi di tipi o tra modelli di composizione di oggetti , possono essere particolarmente [[Difficile lectu|difficili]].
 
== Casi speciali ==
Ci sono alcuni casi speciali in cui le lingue vengono compilate nella stessa [[VM bytecode]], come [[Clojure]] e [[Java (linguaggio di programmazione)|Java]] , oltre a [[Elixir (linguaggio di programmazione)|Elixir]] ed [[Erlang (linguaggio di programmazione)|Erlang]] . Poiché non esiste un'[[interfaccia]], non è un '''FFI''', in senso stretto, mentre offre la stessa funzionalità all'[[utente]].
 
== Vedi anche ==
 
== Voci correlate ==
* [[Interoperabilità linguistica]]
* [[Transcompiler]]