# Interface description language

Un llenguatge de descripció d'interfície o llenguatge de definició d'interfície (amb acrònim anglès IDL), és un terme genèric per a un llenguatge que permet que un programa o objecte escrit en un llenguatge es comuniqui amb un altre programa escrit en un llenguatge desconegut. Els IDL descriuen una interfície de manera independent del llenguatge, permetent la comunicació entre components de programari que no comparteixen un llenguatge, per exemple, entre els escrits en C++ i els escrits en Java.
Els IDL s'utilitzen habitualment en el programari de trucades de procediments remots. En aquests casos, les màquines a cada extrem de l'enllaç poden estar utilitzant diferents sistemes operatius i llenguatges informàtics. Els IDL ofereixen un pont entre els dos sistemes diferents.
Els sistemes de programari basats en IDL inclouen ONC RPC de Sun, l'entorn informàtic distribuït de The Open Group, el model d'objectes del sistema d'IBM, el CORBA del grup de gestió d'objectes (que implementa OMG IDL, un IDL basat en DCE/RPC) i la distribució de dades. Service, XPCOM de Mozilla, Microsoft RPC de Microsoft (que va evolucionar cap a COM i DCOM), Thrift de Facebook i WSDL per a serveis web.

## Exemples

* AIDL: basat en Java, per a Android; admet trucades de procediments locals i remots, es pot accedir des d'aplicacions natives trucant a través de la interfície nativa de Java (JNI).
* Apache Thrift: d'Apache, desenvolupat originalment per Facebook.
* Avro IDL: per al sistema Apache Avro.
* Llenguatge de definició de dades concís (CDDL, RFC 8610): Una notació per a estructures de dades CBOR i JSON.
* CortoScript: Descriu dades i/o interfícies per a sistemes que requereixen interoperabilitat semàntica.
* Etch: Llenguatge de descripció del servei multiplataforma Etch de Cisco.
* Notació de dades extensible (EDN): format de dades Clojure, similar a JSON.
* FlatBuffers: format de serialització de Google que admet la deserialització sense còpies.
* Franca IDL: el llenguatge de definició de la interfície Franca de codi obert.
* FIDL: llenguatge de descripció de la interfície per al sistema operatiu Fuchsia dissenyat per escriure components d'aplicacions en C, C++, Dart, Go i Rust.
* Llenguatge d'especificació IDL : el llenguatge de descripció de la interfície original.
* IPL: Imandra Protocol Language.
* Protocol de servei web JSON (JSON-WSP).
* Idioma de la interfície del dispositiu d'imatge lleuger.
* Microsoft Interface Definition Language (MIDL): l'extensió de Microsoft d'OMG IDL per afegir suport per a Component Object Model (COM) i Distributed Component Object Model (DCOM).
* OMG IDL: estandarditzat per Object Management Group, utilitzat a CORBA (per a serveis DCE/RPC) i DDS (per al modelatge de dades), també seleccionat pel W3C per exposar el DOM dels documents XML, HTML i CSS.
* OpenAPI Specification : un estàndard per a interfícies REST, utilitzat per Swagger i altres tecnologies.
* Definicions de la interfície de servei obert.
* Protocol Buffers: IDL de Google.
* Llenguatge de descripció del servei RESTful (RSDL).
* Smithy: un llenguatge de definició d'interfície independent del protocol inventat per AWS.
* Llenguatge d'especificació per al motor de comunicacions d'Internet (Ice: Slice).
* Universal Network Objects : model de components d'OpenOffice.org.
* Llenguatge de descripció d'aplicacions web (WADL).
* Web IDL: es pot utilitzar per descriure interfícies que es pretenen implementar en navegadors web.
* Llenguatge de descripció de serveis web (WSDL).
* XCB: llenguatge de descripció del protocol X per al sistema X Window.
* Llenguatge de descripció de la interfície multiplataforma (XPIDL): manera de Mozilla d'especificar interfícies XPCOM.

## Referències

* ↑ «Interface Description Language - an overview | ScienceDirect Topics» (en anglès). https://www.sciencedirect.com.+[Consulta: 18 febrer 2023].
* ↑ «WebIDL - MDN Web Docs Glossary: Definitions of Web-related terms | MDN» (en anglès). https://developer.mozilla.org.+[Consulta: 18 febrer 2023].
* ↑ «Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures» (en anglès). RFC Editor. [Consulta: 24 maig 2022].
* ↑ «FIDL Overview» (en anglès). Fuchsia. [Consulta: 23 febrer 2022].