Je pense que les questions que nous devons nous poser pour répondre à la vôtre sont les suivantes: "Qu'est-ce que les autres langues / écosystèmes ont à gagner en disposant de leur propre référentiel de paquets centralisé?" et "Est-ce que cela s'applique au C / C ++?"
Je pense que la réponse à la première question a quelque chose à voir avec la promotion initiale d'un nouveau langage: les premiers utilisateurs veulent que les nouveaux arrivants puissent entrer aussi facilement que possible dans l'écosystème, acquérir un code utile et testé et contribuer eux-mêmes. Pour des raisons évidentes, le "graphique d'utilisation" a toujours une racine unique - le (s) créateur (s) du langage. Il existe généralement une implémentation de référence (du moins au début) et, par conséquent, tout code que vous souhaitez partager doit s'y conformer.
Cela facilite la création de paquetages téléchargeables et compilés. Certes, si le C ou C ++ avait été introduit en 2013, leurs communautés auraient pu suivre une évolution similaire, mais ce n’était pas le cas et il n’existait aucune chaîne d’outils prédominante à laquelle appliquer un gestionnaire de paquets. Cela rend la mise en œuvre d'un tel programme trop fastidieuse pour en valoir la peine. (devriez-vous obliger les utilisateurs à choisir entre libfoo-gcc et libfoo-vs? Laissez-vous le responsable du paquet pour résoudre le problème? Ou le processus de construction? Dans ce cas, en quoi un paquet est-il différent d'une archive tar-up?)
Donc, pour résumer ma réponse à la première question, je pense que le modèle de création de gestionnaires de paquets sert principalement à favoriser l' adoption .
En gardant cela à l'esprit, je pense qu'il est assez facile de comprendre pourquoi aucun système n'a été développé pour répondre à ce besoin - car le besoin n'existe pas pour les programmeurs C et C ++. Ce qui pose problème à la communauté C et C ++ (ou à toute communauté de programmeurs, en réalité), c’est le besoin qui était au départ implicite: distribuer, maintenir à jour et contribuer au code. Ce problème a été résolu à maintes reprises par différentes personnes ayant plus ou moins de succès, et un système gagne en effet une part de marché importante: git (et certains autres systèmes auparavant).
Fondamentalement, lorsque les problèmes diffèrent, les solutions semblent également différentes, mais à mon humble avis, la différence entre taper gem install
et git clone
sans objet.