Même si ça a l'avantage de permettre d'utiliser rapidement la bibliothèque dans son langage favori sans travail, je n'aime pas les bindings générés automatiquement.
En effet, ils integrent la lib dans le langage avec son esprit, alors que je prefère que l'API soit adaptée au langage.
Des choses comme par exemple ce que renvoit une methode set_* (l'objet ? le parametre ? rien ?), ou meme les convention de nom des methodes, dépendent du langage.
Il est possible bien sur de partiellement automatiser ces conversions mais je ne l'ai vu jusqu'à présent dans aucun système de génération de bindings.
Il est parfaitement imaginable d'automatiquement creer dans le binding ruby la methode foo= quand la methode s'appelle set_foo et prend un seul parametre ou foo? pour is_foo. Par contre, certains choix qui me plaisent dans le binding ruby-gnome2 n'auraient je pense pas été mis dans un generateur. Par exemple avec la libglade, my_glade_object.get_widget('foo') qui peut s'ecrire my_glade_object['foo'].
De plus il semble inutile d'avoir certaines methodes, par exemples celles liées à la gestion mémoire dans un langage ou c'est fait de manière transparente habituellement.
# Contre les bindings automatiques
Posté par Pascal Terjan . En réponse à la dépêche Toutes les API GNOME dans tous les langages et pour bientôt ?. Évalué à 3.
En effet, ils integrent la lib dans le langage avec son esprit, alors que je prefère que l'API soit adaptée au langage.
Des choses comme par exemple ce que renvoit une methode set_* (l'objet ? le parametre ? rien ?), ou meme les convention de nom des methodes, dépendent du langage.
Il est possible bien sur de partiellement automatiser ces conversions mais je ne l'ai vu jusqu'à présent dans aucun système de génération de bindings.
Il est parfaitement imaginable d'automatiquement creer dans le binding ruby la methode foo= quand la methode s'appelle set_foo et prend un seul parametre ou foo? pour is_foo. Par contre, certains choix qui me plaisent dans le binding ruby-gnome2 n'auraient je pense pas été mis dans un generateur. Par exemple avec la libglade, my_glade_object.get_widget('foo') qui peut s'ecrire my_glade_object['foo'].
De plus il semble inutile d'avoir certaines methodes, par exemples celles liées à la gestion mémoire dans un langage ou c'est fait de manière transparente habituellement.