title: Interfaz de funciones foráneas
text: # Interfaz de funciones foráneas
  
  Una interfaz de funciones foráneas (Foreign function interface, en inglés) es un mecanismo por el cual un programa escrito en un lenguaje de programación puede realizar llamadas a funciones o usar los servicios escritos en otro. El término procede de la especificación de Common Lisp, aunque también se usa oficialmente en Haskell. Otros lenguajes usan otra terminología, así, el lenguaje Ada habla de "language bindings", mientras que en Java se denomina Java Native Interface, o JNI. No obstante, se suele hablar de forma genérica de Foreign function interface para referirse a estos mecanismos.
  Por supuesto, a pesar de su nombre, las FFIs no se limitan a llamadas de función; muchos FFI permiten llamadas a métodos de objetos; e incluso algunos permiten el trasiego de tipos de datos no triviales y/u objetos entre distintos lenguajes.
  El término foreign function interface no se suele usar para describir entornos de ejecución multilenguajes como Microsoft Common Language Runtime, donde existe un "sustrato" común que permite a cualquier lenguaje usar los servicios definidos por otro, siempre que cumplan el Common Language Specification. Además, existen muchas otras arquitecturas como Java RMI, RPC, CORBA y SOAP, que permiten usar servicios escritos en otros lenguajes; a tales arquitecturas no se les suele considerar FFIs.