¿Qué son los bindings de software?

Cuando la gente habla de "bindings", normalmente se refiere a utilizar una FFI (foreign function interface) para hacer que una interfaz de una biblioteca escrita en algún idioma esté disponible en otro idioma. Dependiendo de las diferencias entre los lenguajes, esto puede variar desde un simple y superficial mapeo de tipos y valores hasta un cambio importante en la forma en que los clientes interactúan con la biblioteca. Así, escribir bindings puede ser una tarea trivial o un gran esfuerzo de diseño.

Como ejemplo de lo primero, consideremos ruby-opengl, que proporciona acceso a la API de OpenGL desde el lenguaje de programación Ruby. Como dice el tutorial:

Las funciones y constantes tienen el mismo nombre que sus homólogas en C: . . .

Si ya sabes usar OpenGL desde C, esto es una ventaja, ya que tu conocimiento de qué funciones usar y cómo realizar las tareas se traduce directamente. Escribir este tipo de bindings no suele ser muy difícil, ya que no requiere pensar en el diseño de la biblioteca o de la interfaz; más bien, es una cuestión de especificar qué nombres de Ruby se corresponden con qué nombres de C, y cómo se envuelven los valores de C como objetos de Ruby (los detalles están determinados por la FFI de Ruby). Hay herramientas que pueden ayudar a generar las envolturas necesarias basadas en un archivo de cabecera de C, aunque en muchos casos tiene más sentido hacer el trabajo manualmente.