Cosa sono i binding del linguaggio software?

Quando le persone parlano di "binding", tipicamente intendono usare una FFI (foreign function interface) per rendere un'interfaccia di una libreria scritta in qualche lingua disponibile in un'altra lingua. A seconda delle differenze tra le lingue, questo può variare da una semplice e superficiale mappatura di tipi e valori a un grande cambiamento nel modo in cui i client interagiscono con la libreria. Quindi, scrivere binding può essere un compito banale o un grande sforzo di progettazione.

Come esempio del primo, consideriamo ruby-opengl, che fornisce l'accesso all'API OpenGL dal linguaggio di programmazione Ruby. Come dice il tutorial:

Le funzioni e le costanti hanno lo stesso nome delle loro controparti C: . . .

Se sapete già come usare OpenGL da C, allora questo è un vantaggio, poiché la vostra conoscenza di quali funzioni usare e come eseguire i compiti si traduce direttamente. Scrivere questi binding di solito non è molto difficile, dato che non richiede di pensare alla progettazione di librerie o interfacce; piuttosto, si tratta soprattutto di specificare quali nomi Ruby mappano quali nomi C, e come i valori C vengono impacchettati come oggetti Ruby (i cui dettagli sono determinati dalla FFI di Ruby). Ci sono strumenti che possono aiutare a generare i wrapper necessari basati su un file header C, sebbene in molti casi abbia più senso fare il lavoro manualmente.