Penso che le domande che dobbiamo porre per rispondere alle tue siano "Cosa guadagnano gli altri linguaggi / ecosistemi dall'avere il proprio repository di pacchetti centralizzato?" e "Questo vale per C / C ++?"
Sento che la risposta alla prima domanda ha qualcosa a che fare con la promozione iniziale di una nuova lingua: gli early adopter vogliono rendere il più semplice possibile per i nuovi arrivati entrare nell'ecosistema, acquisire codice utile e testato e contribuire il loro. Per ovvi motivi, il "grafico di utilizzo" ha sempre una singola radice - il creatore (i) della lingua. Di solito c'è un'implementazione di riferimento (almeno inizialmente) e quindi qualsiasi codice che potresti voler condividere deve conformarsi ad esso.
Ciò semplifica la creazione di pacchetti che vengono semplicemente scaricati e compilati. Certamente, se nel 2013 fosse stato introdotto C o C ++, le loro comunità avrebbero potuto seguire un percorso evolutivo simile, ma non l'hanno fatto e non esiste una sola toolchain prevalente per applicare un gestore di pacchetti. Ciò rende l'implementazione di un programma di questo tipo troppo problematico per valerne la pena. (dovresti fare in modo che gli utenti scelgano tra libfoo-gcc e libfoo-vs? Lascialo al packager da risolvere? O al processo di compilazione? Se sì, in che modo un pacchetto è diverso da un tarball diretto?)
Quindi, per riassumere la mia risposta alla prima domanda, penso che lo schema di creazione dei gestori di pacchetti serva principalmente a guidare l'adozione .
Con questo in mente, penso che sia abbastanza facile capire perché nessun singolo sistema è cresciuto per soddisfare questa necessità - perché non esiste la necessità per i programmatori C e C ++. Ciò che costituisce un problema per la comunità C e C ++ (o qualsiasi comunità di programmatori, in realtà) è la necessità implicita in origine: distribuire, tenere aggiornato e fornire il codice di ritorno. Questo problema è stato risolto molte volte da persone diverse con diversi gradi di successo, e in effetti un sistema sta guadagnando una quota di mercato significativa: git (e alcuni altri sistemi prima).
Fondamentalmente quando i problemi sono diversi, anche le soluzioni sembrano diverse, ma IMHO la differenza tra digitare gem install
e git clone
è moot.